redboot详解

Redboot 常用命令详解(zt) (2008-09-22 19:01)
分类: Linux内核和驱动及底层接口应用




Redboot 常用命令详解(zt)
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://redboot.blogbus.com/logs/22381509.html



Redboot启动完成后,就进入命令行状态(CLI),接受命令并执行,如果你用Redboot作为boot-loader就一定需要熟悉相关的命令,命令的相关解释在帮助文档上面都解释的很详细,今天突然看到这里有一个中文的版本,作为一个速查手册感觉不错,就转载过来。

          Redboot 常用命令说明
        

1 cache
使用格式:cache [on | off]
功能描述:cache命令用于管理微处理器的cache。在传输大容量的文件时,最好是把cache打开。
Redboot>cache      //显示系统当前cache状态
Redboot>cache on   //打开cache
Redboot>cache off  //关闭cache
 
2 channel
使用格式:channel [-l | channel number]
功能描述:如果不带任何参数,channel命令会显示当前的控制台通道号;如果参数为-1,则将控制台通道切换到默认的控制台通道;若参数为硬件平台所支持的其他控制台号,则channel命令就对控制台作相应的切换。
 
3 dump
使用格式:dump [-b location] [-l length] [-s] [-1 | -2 | -4]
功能描述: 显示参数指定区域的数据,显示方式由参数指定。
-b  存储器的起始位置
-l  显示的长度
-s  使用Motorala S-reconds格式显示数据
-1  按单字节显示数据
-2  按双字节显示数据
-4  按四字节显示数据
 
4 exec
使用格式:exec [-w timeout] [-r ramdisk_address] [-s ramdisk_length] [-b load_address] [-l load_length] [-c kernel_command_line] [entry_point]
功能描述:执行一个映象文件,如引导Linux内核
-w  执行映象文件之前的等待时间
-r  传递给内核的ramdisk_address起始地址
-s  传递给内核的ramdisk_address长度
-b  内核映象文件地址
-l  内核映象文件长度
-c  传递给内核的命令行
 
5 fis creat
使用格式:fis creat [-b data_address] [-l length] [-f flash_address] [-e entry] [-r relocation_address] [-s data_length] [-n] [name]
功能描述:在FIS(Flash Image System)目录中创建一个映象,将当前RAM中的数据写入FLASH存储器中。因此,在使用该命令之前,映象文件数据必须已经保存在RAM中。
-b  待写入flash数据的存放地址
-f  flash地址
-e  可执行映象地址
-r  执行fis load命令时,可执行映象的重定位地址
-s  写入flash中的可执行映象的实际长度
-n  用于更新FIS目录
name 创建映象的名称
 
6 fis init
使用格式:fis init [-f]
功能描述:初始化FIS目录,-f表示将所有的flash空间初始化
 
7 fis list
使用格式:fis list [-c] [-d]
功能描述:显示FIS中当前的所有映象文件
-c  显示映象的校验和
-d  显示映象的长度
 
8 fis free
使用格式:fis free
功能描述:显示flash当前的空闲空间
 
9 fis delete
使用格式:fis delete [name]
功能描述:删除FIS目录中的映象。name为需要删除映象的名称。
举例:
Redboot>fis delete ramdisk.gz
 
10 fis lock
使用格式:fis lock [-f flash_address] [-l length]
功能描述:锁定flash空间
-f  锁定flash空间的起始地址
 
11 fis unlock
使用格式:fis unlock [-f flash_address] [-l length]
功能描述:解除flash空间的锁定
 
12 fis erase
使用格式:fis erase [-f flash_address] [-l length]
功能描述:擦除指定的flash空间
 
13 fis write
使用格式:fis write [-b mem_address] [-l length] [-f flash_address]
功能描述:将数据由RAM写入FLASH中
-b 待写数据在RAM中的起始地址
-f 写入Flash的起始地址
 
14 fconfig
使用格式:fconfig
功能描述:对已保存在flash中的配置选项进行管理和重配置。
 
15 go
使用格式:go [-w timeout] [start_address]
功能描述:执行放在某一位置的可执行代码
-w  执行代码前的等待时间
start_address  可执行代码的起始地址
 
16 ip_address
使用格式:ip_address [-l local_ip_address] [-h server_ip_address] [-d DNS_server_ip_address]
功能描述:设置或改变系统使用的IP地址
 
17 load
使用格式:load [-r] [-v] [-h host] [-m varies] [-c channel_number] [-b base_address] [file_name]
功能描述:下载数据到目标系统RAM中
-r  下载未处理的数据到RAM
-v  下载过程显示进度
-b  数据下载到RAM的地址
file_name  下载的文件名
 
18 mcmp
使用格式:mcmp [-s location] [-d location] [-l length] [-1 | -2 | -4]
功能描述:比较两个存储区域的内容
-s  源区域起始地址
-d  目的区域起始地址
-l  需要比较数据的长度
-1  单字节读取
-2  双字节读取
-4  四字节读取
 
19 mcopy
使用格式同mcmp,功能就是将数据从一个存储区域复制到另一个存储区域
 
20 mfill
使用格式:mfill [-b location] [-l length] [-p value] [-1 | -2 | -4]
功能描述:将给定的数值填充到指定的存储区域
 
21 reset
功能描述:复位系统
 
22 ping
使用格式:ping [-v] [-n count] [-l length] [-t timeout] [-r rate] [-i IP_addr] [-h IP_addr]
功能描述:向指定主机发送ICMP报文,用于检查网络是否正常。
-v  显示数据包信息
-n  发送数据包的数目
-l  发送报文的长度
-t  设置超时时间
-r  发送数据包的间隔时间
-i  本机IP地址
-h  远端主机IP地址
 
23 help
 
24 version



用例:

翻出多年前的Sitsang板,从TestSuit的实验做起,可惜只有代码,竟然全无了实验手册和文档,不管怎样,第一步得弄清楚如何将裸机程序下载到目标板才行。
    ADS的集成开发环境中,主要的是CodeWarrior和AXD,一个是写程序的,一个是调试程序的。AXD中还可以调用一个工具叫做Flash Downloader的,据说可以把程序下载到目标板的FLASH中,但经过查阅ADS手册《AXD and armsd Debuggers Guide》知,使用该工具必须有Multi-ICE工具或者是在RAM中驻留有Angel程序。由于目标板中已经移植了嵌入式linux操作系统,又没有Multi-ICE工具,只好放弃使用ADS来下载程序。
    TestSuit中有一种办法是使用TestSuitMaster程序来完成对板子的自动测试,而实际进行测试时报错而无法正常继续,由于手头没有详细资料,也难以排错。另外,这种自动测试的办法好像是不需要手工下载二进制文件的,因此,也没有达到摸清下载程序之法的目的。
    经过到互联网搜索,结合实际操作,下载程序到Flash可以如下操作:
    在Windows下,设置好超级终端并建立主机与目标板的连接后:
    1.启动目标板,看到下面提示信息时,按Ctrl+C进入Redboot:
    == Executing boot script in 2.000 seconds - enter ^C to abort
    RedBoot>
    2.可以输入help命令查看可用的命令,详细说明可以参见Redboot相关手册。
    3.查看当前FIS(Flash Image System)中的映像:
    RedBoot> fis list
    Name              FLASH addr   Mem addr    Length      Entry point
    RedBoot           0x00000000   0x00100000  0x00040000  0x00000000
    RedBoot config    0x03F80000   0x03F80000  0x00040000  0x00000000
    FIS directory     0x03FC0000   0x03FC0000  0x00040000  0x00000000
    JFFS2             0x00200000   0x00200000  0x02800000  0x00000000
    linux             0x00100000   0xA0200000  0x00100000  0x00000000
    4.查看Redboot版本信息(包括RAM地址区间!),下载程序时是下载到RAM中的,起始地址必须在RAM地址范围内,否则报错:
    RedBoot> version

    RedBoot(tm) debug environment - built 22:13:14, Sep  3 2003
    Platform: Intel(R) Sitsang Development Platform RedBoot* Debug Monitor ()
    Copyright (C) 2000, Red Hat, Inc.

    RAM: 0xa0000000-0xa4000000
    5.查看FLASH的合法地址空间:将下载到RAM中的程序/映像文件烧写到FLASH中时,要指定在FLASH中的起始地址,这个地址必须在这个合法的地址范围内,否则报错(当然也可不指定起始地址,而自动分配)。在报错信息中可以看到:
    Invalid FLASH address: 0x04000000 (Invalid FLASH address)
       valid range is 0x00100000-0x04000000
    6.下载映像文件到RAM:
    RedBoot> load -r -m xmodem -b 0xa2000000
    输入以上命令并回车后,右键菜单选择发送文件,弹出对话框,然后选择文件,发送即可。发送成功可看到信息如下:
    Raw file loaded 0xa2000000-0xa2000100
    xyzModem - CRC mode, 3(SOH)/0(STX)/0(CAN) packets, 6 retries
    从此信息还可以计算出映像文件的大小为0x00000100。
    7.将下载到RAM中的程序烧写到FLASH中:
    RedBoot> fis create -b 0xa2000000 -l 0x00000100 -f 0x03000000 -r 0xa2000000 firstbr
    ... Erase from 0x03000000-0x03040000: .
    ... Program from 0xa2000000-0xa2000100 at 0x03000000:
    addr:3000000,data:a2000000,size:100.
    ... Unlock from 0x03fc0000-0x04000000: block: 3fc0000,block_size: 40000,blocks: 80
    .
    ... Erase from 0x03fc0000-0x04000000: .
    ... Program from 0xa3fb0000-0xa3ff0000 at 0x03fc0000:
    addr:3fc0000,data:a3fb0000,size:40000.
    ... Lock from 0x03fc0000-0x04000000: .
    其中,-b指定要写到FLASH中的内容的起始的RAM地址,-l指定映像文件长度,-f指定下载到FLASH中的起始地址,可以省略该选项,-r指定将该映像文件从FLASH中加载到RAM中运行时的起始地址;最后是指定映像文件名。
    操作成功后可以再次查看FIS内容,结果如下:
    RedBoot> fis list
    Name              FLASH addr   Mem addr    Length      Entry point
    RedBoot           0x00000000   0x00100000  0x00040000  0x00000000
    RedBoot config    0x03F80000   0x03F80000  0x00040000  0x00000000
    FIS directory     0x03FC0000   0x03FC0000  0x00040000  0x00000000
    JFFS2             0x00200000   0x00200000  0x02800000  0x00000000
    linux             0x00100000   0xA0200000  0x00100000  0x00000000
    firstbr           0x03000000   0xA2000000  0x00040000  0x00000000
    
    至此,程序已经固化到FLASH中,如何运行呢?仍然在Redboot下,可以如下运行:
    RedBoot> fis load firstbr
    RedBoot> go 0xa2000000
    第一步是将映像firstbr从FLASH加载到RAM,由于加载到RAM后在RAM中的起始地址为0xa2000000,因此使用命令go <addr>即可运行该映像文件。
    可惜,这样操作之后就卡住了,目标板上也没有任何运行反应。

    事实上,在没有Redboot的情况下,是可以使用FLASH烧写工具如jflashmm(linux下的免费工具)来通过JTAG线将映像文件写入 FLASH的,可惜手头没有与开发板配套的工具。明天打算使用PXA270平台的linux下的jflashmm工具试一下。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值