Chinaunix首页 | 论坛 | 博客
  • 博客访问: 417022
  • 博文数量: 131
  • 博客积分: 1990
  • 博客等级: 上尉
  • 技术积分: 996
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-24 12:15
文章分类
文章存档

2011年(4)

2010年(19)

2009年(108)

我的朋友

分类: 嵌入式

2009-10-15 09:08:02

 即可进入vivi命令界面


vivi> help
------------------------------------------------------
Usage:
   cpu [{cmds}]                         -- Manage cpu clocks
   bon [{cmds}]                         -- Manage the bon file system
   reset                                -- Reset the system
   param [set|show|save|reset]          -- set/get parameter
   part [add|del|show|reset]            -- Manage MTD partitions
   mem [{cmds}]                         -- Manage Memory
   loadyaffs {...}                      -- Load a yaffs image to Flash
   eboot                                -- Run Wince Ethernet Bootloader(eboot)
   wince                                -- Run Wince
   load {...}                           -- Load a file to RAM/Flash
   go         -- jump to
   dump                  -- Display (hex dump) a range of memory.
   call       -- jump_with_return to
   boot [{cmds}]                        -- Booting linux kernel
   help [{cmds}]                        -- Help about help?



mem系列命令用于对系统的内存进行操作
------------------------------------------------------
vivi> mem
invalid 'mem' command: wrong argumets
Usage:
   compare -- compare
   mem copy
   mem info
   mem reset -- reset memory control register
   mem serach -- serach memory address that contain value


vivi>mem info

RAM Information:
Default ram size: 64M
Real ram size   : 64M
Free memory     : 63M

RAM mapped to           : 0x30000000 - 0x34000000   (SDRAM映射的地址范围 -- 64M)
Flash memory mapped to -: 0x10000000 - 0x12000000   (Flash映射的地址范围 -- 32M)
Available memory region : 0x30000000 - 0x33f80000   (用户可以使用的有效的内存区域地址范围)
Stack base address      : 0x33fafffc                (栈的基地址)
Current stack pointer   : 0x33fafc7c                (当前栈指针的值)

Memory control register vlaues                      (S3C2410的内存控制寄存器的当前值)
     BWSCON = 0x2211d120
   BANKCON0 = 0x00000700
   BANKCON1 = 0x00000700
   BANKCON2 = 0x00000700
   BANKCON3 = 0x00000700
   BANKCON4 = 0x00000700
   BANKCON5 = 0x00000700
   BANKCON6 = 0x00018005
   BANKCON7 = 0x00018005
    REFRESH = 0x008e0459
   BANKSIZE = 0x000000b2
     MRSRB6 = 0x00000030
     MRSRB7 = 0x00000030




load命令下载程序到存储器中(Flash或者RAM中)
------------------------------------------------------
vivi> load help
Usage:
    load [ | ]

   
    关键字参数flash和ram用于选择目标介质是Flash还是RAM。
    如果选择下载到Flash中,其实还是先要下载到RAM中(临时下载到SDRAM的起始地址处0x30000000保存一下,然后再转写入 FLASH),然后再通过Flash驱动程序提供的写操作,将数据写入到Flash中。如果选择了flash参数,那么到底是将"数据"写入NOR Flash还是NAND Flash,取决于boot loader编译的过程中,所进行的配置,这就要看配置的时候将MTD设备配置成NOR Flash还是NAND Flash。

    [ | ]
    partname是vivi的MTD分区表中的分区名,MTD分区的起始地址;addr和size是让用户自己选择下载的目标存储区域,而不是使用vivi的MTD分区。addr表示下载的目标地址,size表示下载的文件大小,单位字节,size参数不一定非要指定得和待下载的文件大小一样大,但是一定要大于等于待下载的文件的字节数。

   
    关键字参数x y和z分别表示从 PC主机上下载文件到ARM9系统中,采用哪种串行文件传送协议,x表示采用xmodem协议,y表示采用ymodem协议,z表示采用zmodem协议
    请注意目前该bootloader -- vivi还没有实现zmodem协议,所以该参数只能选择x和y
    关键字参数t应该是开发板vivi增加的,是tftp下载!很好用的!速度比jtag要快多了!


开发板的vivi eboot烧写都要通过load命令
如:要烧写eboot.nb0到flash的eboot分区
vivi> load    flash   eboot    t
使用交叉网线连好PC与开发板,把eboot.nb0拷贝到于mtftp.exe同一目录下,在windows命令行输入
mytftp    -i     192.168.0.15    PUT   eboot.nb0
等待烧写完成即可



param 命令用于对bootloader的参数进行操作
------------------------------------------------------
vivi> param help
Usage:
param help                        -- Help aout 'param' command
param reset                       -- Reset parameter table to default table
param save                        -- Save parameter table to flash memeory
param set           -- Reset value of parameter
param set linux_cmd_line "..."    -- set boot parameter
param set wince_part_name "..."   -- set the name of partition wich wincewill be stored in
param show                        -- Display parameter table



vivi> param show
Number of parameters: 19
name             :          hex      integer
-------------------------------------------------------------
//(1)类型,193表示 S3C2410的开发系统
//(2)媒介类型,即指示了bootloader从哪个媒介启动起来的
//(3)引导 linux 内核启动的基地址映像将被从 Flash 中拷贝到boot_mem_base + 0x8000 的地址处,内核参数将被建立在boot_mem_base+0x100的地址处
//(4)bootloader启动时,默认设置的串口波特率

mach_type        :         000000c1   193           //(1)      
media_type       :         00000003   3             //(2)    
boot_mem_base    :         30000000   805306368     //(3)
baudrate         :         0001c200   115200        //(4)
  
//(5) 以下三个参数和xmodem文件传送协议相关:
    xmodem_one_nak
        表示接收端(即ARM9系统这端)发起第一个NAK信号给发送端(即PC主机这端)到启动;
    xmodem_initial_timeout
        表示接收端(即ARM9系统这端)启动xmodem协议后的初始超时时间,第一次接收超时按照这个参数的值来设置,但是超时一次后,后面的超时时间就不再是这个参数的值了,而是xmodem_timeout的值;
    xmodem_timeout
        表示在接收端(即ARM9系统这端)等待接受发送端(即PC主机这端)送来的数据字节过程中,如果发生了一次超时,那么后面的超时时间就设置成参数xmodem_timeout的值了这三个参数不需要修改,系统默认的值就可以了,不建议用户去修改这几个参数值

xmodem_one_nak            :         00000000                      0
xmodem_initial_timeout    :         000493e0                 300000
xmodem_timeout            :         000f4240                1000000


//(6) ymodem_initial_timeout
    表示接收端(即 ARM9 系统这端)在启动了ymodem协议后的初始超时时间,这个参数不需要修改,系统默认的值就可以了,不建议用户去修改这几个参
数值
//(7) boot_delay是bootloader自动引导linux kernel功能的延时时间

ymodem_initial_timeout    :         0016e360                1500000     //(6)
boot_delay                :         00300000                3145728     //(7)
os                        :         WINCE
display                   :         VGA 640X480
ip                        :         192.168.0.15
host                      :         192.168.0.1
gw                        :         192.168.0.1
mask                      :         255.255.255.0
wincesource               :         00000001                      1
wincedeploy               :         00000000                      0
mac                       :         00:00:c0:ff:ee:08
wince part name           :         wince
Linux command line        :         noinitrd root=/dev/mtdblock/3 init=/linuxrc console=ttyS0

//(8) Linux command line不是bootloader的参数,而是kernel启动的时候,kernel不能自动检测到的必要的参数些参数需要bootloader传递给linux kernel, Linux command line就是设置linux kernel启动时,需要手工
传给 kernel的参数


    param reset                 将bootloader 参数值复位成系统默认值。
    param set paramname value   设置参数值
    param save                  保存参数设置
    param set linux_cmd_line ”linux bootparam”
                                设置linux 启动参数,参数linux bootparam表示要设置的linux kernel命令行参数。


修改boot_delay(延长等待时间)
vivi> param set boot_delay 0x05000000
vivi> param save


part命令用于对MTD分区进行操作
-------------------------------------------------------------------------------
vivi> part show
mtdpart info. (5 partitions)
name              offset        size        flag
------------------------------------------------
vivi            : 0x00000000    0x00020000     0 128k
eboot           : 0x00020000    0x00020000     0 128k
param           : 0x00040000    0x00010000     0 64k
kernel          : 0x00050000    0x00100000     0   1M
root            : 0x00150000    0x03eac000     0 62M+688k


    MTD分区是针对Flash(NOR Flash或者NAND Flash)的分区,以便于对bootloader对Flash进行管理

part add
       命令用于添加一个MTD分区

    part add    name    offset    size    flag
    参数 name是要添加的分区的分区名
    参数 offset是要添加的分区的偏移(相对于整个MTD设备的起始地址的偏移,在 ARM9系统中不论配置的是NOR Flash,还是NAND Flash,都只注册了一个mtd_info结构,也就是说逻辑上只有一个MTD设备,这个MTD设备的起始地址为0x00000000);
    参数 size是要添加的分区的大小,单位为字节;
    参数 flag是要添加的分区的标志,参数flag的取值只能为以下字符串(请注意必须为大写)或者通过连接符|
    这个标志表示了这个分区的用途
        “BONFS”     作为BONFS文件系统的分区;
        “JFFS2”     作为JFFS2文件系统的分区;
        “LOCK”      该分区被锁定了;
        “RAM”       该分区作为RAM使用

    例如,添加新的 MTD分区mypart
        vivi> part add mypart 0x500000 0x100000 JFFS2
        mypart: offset = 0x00500000, size = 0x00100000, flag = 8

part del        命令用于删除一个 MTD分区
    part del    name
    参数name是要删除的MTD分区的分区名


part save      保存part分区信息
part reset     恢复为系统默认part分区



boot命令用于引导linux kernel启动
------------------------------------------------------
vivi>boot help
Usage:
    boot -- booting kernel
          value of media_type (location of kernel image)
         1 = RAM
         2 = NOR Flash Memory
         3 = SMC (On S3C2410)
    boot -- boot from specific mtd partition
    boot
    boot help -- help about 'boot' command


    boot关键字后面media_type必须指定媒介类型,因为boot命令对不同媒介的处理方式是不同的,例如如果kernel在 SDRAM中,那么boot执行的过程中就可以跳过拷贝kernel映像到SDRAM中这一步骤了
    Boot命令识别的媒介类型有以下三种:
        ram    表示从RAM(在ARM9系统中即为SDRAM)中启动linux kernel,linux kernel必须要放在RAM中
        nor    表示从NOR Flash中启动linux kernel,linux kernel必须已经被烧写到了NOR Flash中
        smc    表示从NAND Flash中启动linux kernel,linux kernel必须已经被烧写到了NAND Flash中


    参数mtd_part是MTD分区的名,MTD设备的一个分区中启动linux kernel,kernel映像必须被放到这个分区中;


    分别表示linux kernel起始地址和kernel的大小。为什么要指定kernel大小呢?因为kernel首先要被copy到boot_mem_base + 0x8000的地方,然后在boot_mem_base + 0x100开始的地方设置内核启动参数,要拷贝 kernel,当然需要知道kernel的大小啦,这个大小不一定非要和kernel实际大小一样,但是必须许大于等于kernel的大小,单位字节



bon命令
------------------------------------------------------
    bon命令用于对bon分区进行操作。通过bon help可以显示系统对bon系列命令的帮助提示。bon分区是nand flash设备的一种简单的分区管理方式。bootloader支持bon分区,同时Samsung提供的针对S3C2410移植的linux版本中也支持了bon分区,这样就可以利用bon分区来加载linux的根文件系统.
    MTD分区和BON分区,当ARM9系统配置了NAND Flash作为MTD设备,那么MTD分区和BON分区都在同一片NAND Flash上

vivi> bon part info     命令用于显示系统中bon分区的信息

BON info. (3 partitions)
No: offset      size            flags     bad
---------------------------------------------
0: 0x00000000 0x00030000      00000000    0 192k
1: 0x00030000 0x00100000      00000000    0   1M
2: 0x00130000 0x03ec8000      00000000    1 62M+800k
bon分区表被保存到nand flash的最后0x4000个字节中,即在nand flash的0x03FFC000~0x33FFFFFF范围内,分区表起始于0x03FFC000。


vivi> bon part         命令用于建立系统的bon分区表
vivi> bon part 0 192k 1M
doing partition
size = 0
size = 196608
size = 1048576
check bad block
part = 0 end = 196608


go命令
------------------------------------------------------
    go命令用于跳转到指定地址处执行该地址处的代码。
    go addr跳转到指定地址运行该处程序。


reset命令
------------------------------------------------------
    复位Arm9系统
阅读(943) | 评论(0) | 转发(0) |
0

上一篇:琐碎知识点(一)

下一篇:bon分区

给主人留下些什么吧!~~