Redboot 学习笔记

简介

RedBoot 是 “Red Hat Embedded Debug and Bootstrap” 的缩写,包含很多工具例如下载,还有一个简单的Flash 文件系统用以存放启动代码。

以下是RedBoot 的一些突出优点:
􀁺 支持启动脚本
􀁺 可用简单的命令行界面配置与管理,可通过以太网(Telnet)或串口(超级终端)
访问。
􀁺 集成GDB stubs 用来通过串口或以太网与宿主机上的排错软件通信。(限局域网)
􀁺 属性配置 - 很多数据是可配置的,例如系统时间、日期(如果可用),默认启动
Flash 片,默认失败保护,静态IP 地址等。
􀁺 具有可配置性与可扩展性,准确适应目标硬件环境。
􀁺 X/Y 调制解调方式,用以支持串口的数据下载。
􀁺 加电自检

虽然 RedBoot 从eCos 中发展而来,但它可以当成一种标准的嵌入式系统排错/跟踪工
具使用,甚至可用于操作系统。举例来说,适当添加功能后,RedBoot 可以代替台式机上
常用的BIOS(或其他一定的设备)。现在一般来说Red Hat Embedded Linux 和eCos 移植中
都包含RedBoot。

RedBoot 提供命令行用户界面(CLI)。至少该界面在通过串口与宿主机相连时可用。如
果有一个以上串口可用,RedBoot 一般被配置为查询每一个串口,一旦在一个串口上发现
了命令输入,该串口即被设置为专用口,直到系统重置或用户手动修改。如果硬件平台具有
网络通信能力,RedBoot CLI 也可以通过telnet 协议实现与宿主机的通信。在默认情况下,
RedBoot 再端口TCP/9000 上运行telnet,但这也是可设定的。
RedBoot 还包含一套GDB ”stubs”,包含支持GDB 远程协议的代码。当字符“$”出现
在命令行的任何地方(除非用斜杠表示放弃当前行)时,GDB 模式将被自动唤起。系统将
停留在GDB 模式下直到通过GDB 协议显式断开连接。不惯通过何种方式连接,串口还是
网络,GDB stub 模式都是可用的,应注意如果GDB 连接通过网络建立时,运行用户代码时
一定要保持连接。

REDBOOT配置

RedBoot> history
0 fis list
1 fconfig -l
2 load -m ymodem
3 history

下列命令扩展可以用来执行理事列表中的命令:
 !!     重复上次命令
 !n      重复命令n
 !string 重复以string 开始的最近的命令

 RedBoot 启动模式


RedBoot 可被配置在很多种模式下启动,(以下简称“模式”),来决定指令的存放于执行
位置。
ROM 模式
该模式中,RedBoot 存放在ROM 中,并在ROM 中执行。(可以是flash 或EPROM)。
在内存资源有限时,使用该模式启动。在该模式下,Flash 相关的命令不能修改
RedBoot 代码所在的Flash 存储区域。如果想修改,应使用RAM 模式启动。
ROMRAM 模式
该模式中,RedBoot 存放在ROM 中,但在运行前将会被复制到RAM 中。与ROM
模式相比这样做使用的RAM 资源较多,但有两个好处:通常该模式运行更快(只
针对较慢的开发板上),而且可以在程序运行时修改Flash 中指令所在的存储区。
RAM 模式
在该模式下,RedBoot 不仅在内存中运行,而且实际的存储位置也在内存中。此模
式可以用于在需要的时候修改Flash 中已有的ROM 模式映像;或者是当ROM 中已
经有其他启动程序(非Redboot)时,用于在开发板上加载RedBoot 启动程序。
要独立启动一块电路板的,只能用ROM 和ROMRAM 模式,而RAM 模式必须要由
板上的其他ROM 监控程序(ROM monitor)加载才能运行。如果板上已有ROMRAM
模式的启动代码,就无需使用RAM 模式。当RAM 启动模式被烧到Flash 中时(因
为从Flash 中加载它很快),通常在FIS 目录项中被命名为“RedBoot[RAM]”。


键入version 命令可以看到当前运行RedBoot 的启动模式:

RedBoot> version
RedBoot(tm) bootstrap and debug environment [ROM]
Non-certified release, version UNKNOWN – built 13:31:57, May 17 2002

RedBoot 资源使用
依据启动模式的不同和对一些其他特性的配置,RedBoot 使用Flash 和RAM 资源的情
况也有所不同。RedBoot 还会用到其他资源,例如定时器。
对Flash 和RAM 资源的使用取决于一些RedBoot 配置选项是否被开启。去掉RedBoot
中一些不必需的组件一般说来可以节省资源,特别是RAM。Flash 资源的使用也可以裁剪,
但是由于Flash 是以块为存储单位的,所以裁剪掉一些不需要的特性有时候可能并不能实
际减少RedBoot 占用的Flash 存储器大小。 

一般命令

RedBoot 提供了三类基本命令:
􀁺 程序装载与执行命令
􀁺 Flash 烧写命令与配置命令
􀁺 其他命令

因为eCos 和RedBoot 具有可扩展性和可配置性,所以也可能出现新功能的扩展命令
或功能增强的命令。
基本的命令格式为

RedBoot> COMMAND [-S]… [-s val]… operand

 

RedBoot> help
Manage aliases kept in FLASH memory
alias name [value]
Set/Query the system console baud rate
baudrate [-b <rate>]
Manage machine caches
cache [ON | OFF]
Display/switch console channel
channel [-1|<channel number>]
Display disk partitions
disks
Display (hex dump) a range of memory
dump -b <location> [-l <length>] [-s]
Manage flash images
fis {cmds}
Manage configuration kept in FLASH memory
fconfig [-i] [-l] [-n] [-f] [-d] | [-d] nickname [value]
Execute code at a location
go [-w <timeout>] [-c] [-n] [entry]
Help about help?
help [<topic>]
Set/change IP addresses
ip_address [-l <local_ip_address>] [-h <server_address>]
Load a file
load [-r] [-v] [-d] [-c <channel>] [-h <host>] [-m {TFTP | HTTP | {x|y}MODEM |
disk}]
[-b <base_address>] <file_name>
Network connectivity test
ping [-v] [-n <count>] [-t <timeout>] [-i <IP_addr]
-h <host>
Reset the system
reset
Display RedBoot version information
version
Display (hex dump) a range of memory
x -b <location> [-l <length>] [-s]

此外还有一个附加的特殊命令。当RedBoot 发现‘$’或‘+’时,将转入GDB 协议
模式。这时eCos GDB stub 将被建立,允许目标板与GDB 主机建立连接。从GDB 模式返
回RedBoot 的唯一方法是重新启动系统。
注意:多条命令可以在同一行输入,命令之间用分号分开即可。 

RedBoot> help fis
Manage FLASH images
   fis {cmds}
Create an image
  fis create [-b <mem_base>] [-l <image_length>] [-s <data_length>]
      [-f <flash_addr>] [-e <entry_point>] [-r <ram_addr>] [-n] <name>
Delete an image from FLASH Image System [FIS]
  fis delete name
Erase FLASH contents
  fis erase -f <flash_addr> -l <length>
Display free [available] locations within FLASH Image System [FIS]
  fis free 
Initialize FLASH Image System [FIS]
  fis init [-f]
Display contents of FLASH Image System [FIS]
  fis list [-c] [-d]
Load image from FLASH Image System [FIS] into RAM
  fis load [-d] [-f] [-b <memory_load_address>] [-c] name
Write raw data directly to FLASH
  fis write -f <flash_addr> -b <mem_base> -l <image_length>

 ip_address—设定ip 地址


名称
ip_address – 设置ip 地址
语法结构

ip_address [-l local_IP_address] [-h server_IP_address] [-d DNS_server_IP_address]

 

 描述
Ip_address 命令可以显示/改变RedBoot 的ip 地址。IP 地址可以以数字形式给出例如
192.168.1.67,或以字符串给出例如www.redhat.com

RedBoot> ip_address
IP: 192.168.1.31, Default server: 192.168.1.101, DNS server IP: 0.0.0.0
#更改DNS 服务器地址:
RedBoot> ip_address -d 192.168.1.101
IP: 192.168.1.31, Default server: 192.168.1.101, DNS server IP: 192.168.1.101
#更改默认服务器地址:
RedBoot> ip_address –h 192.168.1.104
IP: 192.168.1.31, Default server: 192.168.1.104, DNS server IP: 192.168.1.101

 load—下载程序或数据到RedBoot 平台

 load -- 下载程序或数据到RedBoot 平台
语法结构

load [-v ] [-d ] [-r ] [-m [[xmodem | ymodem] | tftp | disk] ] [-h server_IP_address] [-b location]
[-c channel] [file_name]

 

 Description
Load 命令可以用来向目标硬件系统下载数据。数据可以通过网络下载,使用TFTP 或HTTP
协议,或者使用串口加x-modem 或y-modem 协议下载,也可以直接从本地磁盘上的文件系
统中加载,可下载的数据可以是ELF 可执行程序格式,Motorala 的S-record 格式,或原始
的二进制数据。

#用TFTP 下载Motorola S-record(或ELF)数据,指定起始数据地址:
RedBoot> load redboot.ROM -b 0x8c400000
Address offset = 0x0c400000
Entry point: 0x80000000, address range: 0x80000000-0x8000fe80
#用HTTP 下载Motorola S-record(或ELF)数据,指定主机[服务器] 地址:
RedBoot> load /redboot.ROM -m HTTP -h 192.168.1.104
Address offset = 0x0c400000
Entry point: 0x80000000, address range: 0x80000000-0x8000fe80
#装载位于/dev/hda1 上的ELF 文件,文件格式为EXT2
RedBoot> load -mode disk hda1:hello.elf
Entry point: 0x00020000, address range: 0x00020000-0x0002fd70

RedBoot> load -r -b 0x80040000 -m xmodem

ping—确认网络连接 

ping --确认网络连接
语法结构
 

ping [-v ] [-i local_IP_address] [-l length] [-n count] [-t timeout] [-r rate] {-h
server_IP_address}

 描述
Ping 命令向网络上发ICMP 包以检测网络连接。这些报应被主机自动返回,该命令显示发出
的包中有多少成功返回。

#测试与主机192.168.1.101. 的连接。
RedBoot> ping -h 192.168.1.101
Network PING - from 192.168.1.31 to 192.168.1.101
PING - received 10 of 10 expected
#测试与主机192.168.1.101. 的连接,详细报告。
RedBoot> ping -h 192.168.1.101 –v -n 4
Network PING - from 192.168.1.31 to 192.168.1.101
seq: 1, time: 1 (ticks)
seq: 2, time: 1 (ticks)
seq: 3, time: 1 (ticks)
seq: 4, time: 1 (ticks)
PING - received 10 of 10 expected
#Test connectivity to a non-existent host (192.168.1.109).
RedBoot> ping -h 192.168.1.109 -v -n 4
PING: Cannot reach server '192.168.1.109' (192.168.1.109)

x - or dump

RedBoot> help x
Display (hex dump) a range of memory  

 x -b <location> [-l <length>] [-s] [-1|-2|-4] 

 

RedBoot> x -b 0x80040000 -l 0x100 -1
80040000: FE FE 3F FD FC A6 FE 22  7F FF 5B BF 23 BE FB BD  |..?...."..[.#...|
80040010: FE 8A 7F 67 63 FB FF DF  EE DF FF EF EF CE EE F7  |...gc...........|
80040020: 1A 9F D8 2C 3B 48 C8 2B  A7 C3 7F 07 0A FB 3B 47  |...,;H.+......;G|
80040030: 17 F4 CE FB BB E1 EC 8B  A7 35 FD 07 F9 D2 4B 6A  |.........5....Kj|
80040040: C8 4B F5 6F 8E FB A7 1D  98 19 DA C7 E7 88 C5 FC  |.K.o............|
80040050: 43 98 13 28 BA 93 DD A3  EF F4 A6 4E 19 34 B6 0B  |C..(.......N.4..|
80040060: DF AF 87 BF 7A 6C B3 A3  D3 88 0B 73 D3 3F 37 89  |....zl.....s.?7.|
80040070: 3B D0 6F C4 EF FB D3 F3  27 EE 8D D7 E8 B1 0F BF  |;.o.....'.......|
80040080: E2 EA FB EC 48 53 92 D7  FF 1B FF 3F DB E2 DF 3E  |....HS.....?...>|
80040090: EA FE FF FF FF FC FF CF  70 A7 FB EF 8A EB FB 07  |........p.......|
800400A0: 6C A0 82 76 BA CE 7A EE  DD FD 3F FC FB AF FF 2F  |l..v..z...?..../|
800400B0: DA 3D 7B 8F AD E7 77 EF  74 36 26 A5 9E ED BE 7E  |.={...w.t6&....~|
800400C0: FF AE F6 EF 3A FE 7F 7E  AB 3C 02 FA 7A 35 AC 74  |....:..~.<..z5.t|
800400D0: 7B 87 5E CE B1 B2 30 39  34 51 A4 E5 F3 7B B8 91  |{.^...094Q...{..|
800400E0: 0F 79 F4 AA 23 25 F7 D1  EA F0 E8 F1 76 2F CE E8  |.y..#%......v/..|
800400F0: E0 98 D4 DB EC E6 76 EC  B4 82 1E DF 1F 59 BF 79  |......v......Y.y|
RedBoot> 

mfill - 填充内存

 Fill a block of memory with a pattern
   mfill -b <location> -l <length> -p <pattern> [-1|-2|-4]
RedBoot> 

 Compare two blocks of memory
   mcmp -s <location> -d <location> -l <length> [-1|-2|-4]


Copy memory from one address to another
   mcopy -s <location> -d <location> -l <length> [-1|-2|-4]

   diag [-q] [-a] [-t] [-d] [-h]  

Run Power-On-Self-Test
  -q: Quiet operation
  -a: Run all tests
  -t: Run TCAM self-test
  -d: Run DDR SDRAM test
  -k: Run DDR SDRAM test continuously (Keep going)

reset—重置设备 

描述
Reset 命令将引起目标硬件系统重新启动。如果硬件支持,该命令相当于重新上电。

RedBoot> reset
... Resetting.+... Waiting for network card: .
Socket Communications, Inc: Low Power Ethernet CF Revision C 5V/3.3V 08/27/98
Ethernet eth0: MAC address 00:c0:1b:00:ba:28
IP: 192.168.1.29, Default server: 192.168.1.101
RedBoot(tm) bootstrap and debug environment [ROM]
Non-certified release, version UNKNOWN - built 10:41:41, May 14 2002
Platform: Compaq iPAQ Pocket PC (StrongARM 1110)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.
RAM: 0x00000000-0x01fc0000, 0x00014748-0x01f71000 available
FLASH: 0x50000000 - 0x51000000, 64 blocks of 0x00040000 bytes each.
RedBoot>

 version—显示RedBoot 版本信息

描述
Version 命令显示RedBoot 版本信息。

RedBoot> version
RedBoot(tm) debug environment - built 09:12:03, Feb 12 2001
Platform: XYZ (PowerPC 860)
Copyright (C) 2000, 2001, Red Hat, Inc.
RAM: 0x00000000-0x00400000
RedBoot> version

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Certified release, built 13:17:44, Nov 21 2018

Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
RedBoot is free software, covered by the eCos license, derived from the
GNU General Public License. You are welcome to change it and/or distribute
copies of it under certain conditions. Under the license terms, RedBoot's
source code and full license terms must have been made available to you.
Redboot comes with ABSOLUTELY NO WARRANTY.

Platform: VCore-III (MIPS32 24KEc) 
RAM: 0x80000000-0x88000000 [0x80021e38-0x87fdfffc available]
FLASH: 0x40000000-0x40ffffff, 256 x 0x10000 blocks
RedBoot> 

FLASH 相关命令

如果硬件平台有flash 存储芯片,RedBoot 可以用它来存储数据。可执行代码和数据均可以
存在一个简单的文件仓库中,该文件仓库位于flash 芯片内。Fis 命令(fis 是Flash Image System
的缩写)可以用来管理和维护flash 中的数据映像。

fis init—初始化flash 数据系统 (FIS)

语法结构
 

fis init [-f]

 

 描述
该命令初始化flash 数据系统(FIS)。通常只应在RedBoot 被安装在硬件上时被执行一次,
如果系统中存储的映像或其大小发生变化,例如更改了RedBoot 的配置,该命令就需要再
执行一遍。
注意: 并发执行将导致预先存储在FIS 中的信息丢失。

#初始化FIS 目录
RedBoot> fis init
About to initialize [format] flash image system - continue (y/n)? y
*** Initialize FLASH Image System
Warning: device contents not erased, some blocks may not be usable
... Erase from 0x00070000-0x00080000: .
... Program from 0x0606f000-0x0607f000 at 0x00070000: .

#初始化FIS 目录和所有flash 数据区,只保留地一个数据块,因为启动代码在那里。
RedBoot> fis init -f
About to initialize [format] flash image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0x00020000-0x00070000: .....
... Erase from 0x00080000-0x00080000:
... Erase from 0x00070000-0x00080000: .
... Program from 0x0606f000-0x0607f000 at 0x00070000: .

 fis list—列出flash 数据系统目录

语法结构

fis list [-f]

 

 描述
该命令列出当前FIS 中的可用数据。有些RedBoot 使用的数据在FIS 中有固定的名称和保留
的槽(slot),这些在执行fis init 后可以看到,其它数据可以由用户控制。
注意: 这些文件是按照他们在FIS 中的排列顺序显示的,不是按名字或是
创建时间显示。

#显示FIS 目录
RedBoot> fis list
Name            FLASH addr Mem addr   Length     Entry point
RedBoot         0x00000000 0x00000000 0x00020000 0x00000000
RedBoot config  0x0007F000 0x0007F000 0x00001000 0x00000000
FIS directory   0x00070000 0x00070000 0x0000F000 0x00000000
#显示FIS 目录,用Checksum 代替物理地址。
RedBoot> fis list -c
Name            FLASH addr Checksum   Length     Entry point
RedBoot         0x00000000 0x00000000 0x00020000 0x00000000
RedBoot config  0x0007F000 0x00000000 0x00001000 0x00000000
FIS directory   0x00070000 0x00000000 0x0000F000 0x00000000
#显示FIS 目录,用数据长度代替flash 块保留长度。
RedBoot> fis list
Name            FLASH addr Mem addr   Datalen    Entry point
RedBoot         0x00000000 0x00000000 0x00000000 0x00000000
RedBoot config  0x0007F000 0x0007F000 0x00000000 0x00000000
FIS directory   0x00070000 0x00070000 0x00000000 0x00000000

 fis free—空闲的flash 空间


语法结构
fis free
描述
该命令显示当前flash 中没有被使用的区域。当一个flash 块中包含不可擦除的内容时被认为
是正在被使用的。因为有时可能需要某一数据块被放在特定的flash 地址中,该命令可用来
检查目标数据空间是否被别的数据占用。
注意: 由于没有FIS 目录与flash 内容之间的一致性检查,可能存在某一flash
数据块含有内容但在FIS 目录中没有显示,反过来也有可能。

#显示空闲的flash 空间。
RedBoot> fis free
0xA0040000 .. 0xA07C0000
0xA0840000 .. 0xA0FC0000

RedBoot> fis free
  0x40020000 .. 0x4003FFFF
  0x40DC0000 .. 0x40FCFFFF
  0x40FE1000 .. 0x40FEFFFF
RedBoot> 

fis create—创建flash 数据文件


语法结构

fis create {-b data address} {-l length} [-f flash address] [-e entry] [-r relocation address][-s data length] [-n ] [name] 

 

 

 描述
该命令在FIS 目录中创建一个文件。文件的数据在创建之前必须在RAM 中存在,一般来说
先用RedBoot load 命令把一个文件读入内存,再使用fis creat 命令创建新文件。

#创建一个新的flash 文件,创建行为需要确认。
RedBoot> fis create RedBoot -f 0xa0000000 -b 0x8c400000 -l 0x20000
An image named ‘RedBoot’ exists - continue (y/n)? n
#创建一个测试文件,让命令自动寻找合适空间。
RedBoot> fis create junk -b 0x8c400000 -l 0x20000
... Erase from 0xa0040000-0xa0060000: .
... Program from 0x8c400000-0x8c420000 at 0xa0040000: .
... Erase from 0xa0fe0000-0xa1000000: .
... Program from 0x8c7d0000-0x8c7f0000 at 0xa0fe0000: .
#更新RedBoot[RAM]中的文件。
RedBoot> load redboot_RAM.img
Entry point: 0x060213c0, address range: 0x06020000-0x06036cc0
RedBoot> fis create RedBoot[RAM]
No memory address set.
An image named 'RedBoot[RAM]' exists - continue (y/n)? y
* CAUTION * about to program 'RedBoot[RAM]'
at 0x00020000..0x00036cbf from 0x06020000 - continue (y/n)? y
... Erase from 0x00020000-0x00040000: ..
... Program from 0x06020000-0x06036cc0 at 0x00020000: ..
... Erase from 0x00070000-0x00080000: .
... Program from 0x0606f000-0x0607f000 at 0x00070000: .

 fis load—读取flash 文件


语法结构

fis load [-b load address] [-c ] [-d ] [name]

 

 描述
该命令用于读取flash 中的文件,并将其写入内存。该命令完成后就可以用go 命令执行所读
的文件。

#读入文件RedBoot[RAM],然后运行。
RedBoot> fis load RedBoot[RAM]
RedBoot> go

fis delete—删除flash 文件


语法结构

fis delete {name} 

 描述
从FIS 中删除一个文件。作为命令执行的一部分,该文件所占的flash 空间将被清空,文件
名将从FIS 中清除。
注意:某些文件被RedBoot 保护,不允许被删除。当试图删除此类文件时,
RedBoot 将会发出警告。

RedBoot> fis list
Name           flash addr Mem addr   Length   Entry point
RedBoot        0xA0000000 0xA0000000 0x020000 0x80000000
RedBoot config 0xA0FC0000 0xA0FC0000 0x020000 0x00000000
FIS directory  0xA0FE0000 0xA0FE0000 0x020000 0x00000000
junk           0xA0040000 0x8C400000 0x020000 0x80000000

RedBoot> fis delete junk
Delete image ‘junk’ - continue (y/n)? y
... Erase from 0xa0040000-0xa0060000: .
... Erase from 0xa0fe0000-0xa1000000: .
... Program from 0x8c7d0000-0x8c7f0000 at 0xa0fe0000: .

fis lock—锁定flash 区域


语法结构

fis lock {-f flash_address} {-l length} 

 

 描述
该命令可以用来锁定某一flash 空间为只读。如果要修改锁定空间中的数据,必须先发出fis
unlock 命令。该命令具有选择性,只支持提供flash 空间写保护的硬件系统。
注意: 根据系统的不同,当向写保护的flash 空间写数据时,可能产生错误、
发出警告。

#锁定flash 区域
RedBoot> fis lock -f 0xa0040000 -l 0x20000
... Lock from 0xa0040000-0xa0060000: .

 fis unlock—解除flash 锁定


语法结构

fis unlock {-f flash_address} {-l length}

 

 描述
用于解除被锁定flash 区域的写保护。当FIS 要修改某已经被锁定的区域中的内容时,必须
先发出该命令。
注意: 有些flash 设备在上电时自动进入锁定状态,必须先发出unlock 命令
才能写入数据。

RedBoot> fis unlock -f 0xa0040000 -l 0x20000
... Unlock from 0xa0040000-0xa0060000: .

 fis erase—清除部分flash 空间


语法结构

fis erase {-f flash_address} {-l length}

 

 描述
该命令强行清除某一部分flash 存储空间,不检查被清除的空间是否与FIS 中的某文件对应。

#清除一部分flash 空间。
RedBoot> fis erase -f 0xa0040000 -l 0x20000
... Erase from 0xa0040000-0xa0060000: .

 fis write—向flash 中写入数据


语法结构

fis write {-b mem_address} {-l length} {-f flash_address}

 

 描述
将内存中的数据写入指定的flash 空间。不检查该flash 空间是否与FIS 中某文件关联空间相
对应。

#向flash 中写入数据。
RedBoot> fis write -b 0x0606f000 -l 0x1000 -f 0x00020000
* CAUTION * about to program FLASH
at 0x00020000..0x0002ffff from 0x0606f000 - continue (y/n)? y
... Erase from 0x00020000-0x00030000: .
... Program from 0x0606f000-0x0607f000 at 0x00020000: .

在REDBOOT 中执行其他程序


go -- 运行程序


语法结构
 

go [-w <timeout>] [-c] [entry]

 描述
Go 命令将目标硬件平台的控制权交给另外一个程序,该程序必须能够独立运行,例如eCos
程序或是Linux 内核。
如果-w 项有值,RedBoot 将在屏幕上打印消息并等待一段时间才开始运行程序。这在运行
脚本是给用户机会取消运行某一程序,接着向下运行脚本。

#运行程序-RedBoot 中没有显式输出
RedBoot> go 0x40040
#运行前带有等待时间
RedBoot> go -w 10
About to start execution at 0x00000000 - abort with ^C within 10 seconds
^C
RedBoot> go 0x800400bc

注意程序起始地址是隐式确定的(例子中为0x00000000)用户将接到提示,并被告知程序
将于10 秒后运行,无论是在运行脚本或是在控制台中,在这10 秒中用户可以按Ctrl+C,
RedBoot 将会取消执行该程序,返回执行下一条命令。

exec 执行程序

执行程序

 

Execute an image
   exec [-b <argv addr>] [-c "kernel command line"] [-w <timeout>]
        [<entry point>]
RedBoot> exec 0x800400bc
Now booting linux kernel:
 Base address 0x80080000 Entry 0x800400bc

RedBoot> exec -b 0x80004000
Now booting linux kernel:
 Base address 0x80004000 Entry 0x800400bc

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值