uboot的常用命令详解

 U-Boot还提供了更加详细的命令帮助,通过help命令还可以查看每个命令的参数说明。由于开发过程的需要,有必要先把U-Boot命令的用法弄清楚。接下来,根据每一条命令的帮助信息,解释一下这些命令的功能和参数。


进入uboot的命令行提示后,通过help指令,可以得知当前的uboot支持的所有命令

help 指令名称,可以得知对应指令的相关帮助, 如help setenv 


u-boot的环境变量用来存储一些经常使用的参数变量,uboot希望将环境变量存储在静态存储器中(如nand nor eeprom mmc)。

其中有一些也是大家经常使用,有一些是使用人员自己定义的,更改这些名字会出现错误,下面的表中我们列出了一些常用的环境变量:

     bootdelay    执行自动启动的等候秒数
     baudrate     串口控制台的波特率
     netmask     以太网接口的掩码
     ethaddr       以太网卡的网卡物理地址
     bootfile        缺省的下载文件
     bootargs     传递给内核的启动参数
     bootcmd     自动启动时执行的命令
     serverip       服务器端的ip地址
     ipaddr         本地ip 地址
     stdin           标准输入设备
     stdout        标准输出设备
     stderr         标准出错设备

上面这些是uboot默认存在的环境变量,uboot本身会使用这些环境变量来进行配置。我们可以自己定义一些环境变量来供我们自己uboot驱动来使用。

Uboot环境变量的设计逻辑是在启动过程中将env从静态存储器中读出放到RAM中,之后在uboot下对env的操作(如printenv editenv setenv)都是对RAMenv的操作,只有在执行saveenv时才会将RAM中的env重新写入静态存储器中。

这种设计逻辑可以加快对env的读写速度。


1、bootm
bootm [addr [arg ...]]

- boot application image stored in memory

passing arguments 'arg ...'; when booting a Linux kernel,

'arg' can be the address of an initrd image

bootm命令可以引导启动存储在内存中的程序映像。这些内存包括RAM和可以永久保存的Flash。

第1个参数addr是程序映像的地址,这个程序映像必须转换成U-Boot的格式。

第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也可以是传递给Linux内核的参数(缺省情况下传递bootargs环境变量给内核)。

 

2、bootp

bootp [loadAddress] [bootfilename]

bootp命令通过bootp请求,要求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。

第1个参数是下载文件存放的内存地址。

第2个参数是要下载的文件名称,这个文件应该在开发主机上准备好。

 

3、cmp

cmp [.b, .w, .l] addr1 addr2 count

- compare memory

cmp命令可以比较2块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。注意:cmp.b中间不能保留空格,需要连续敲入命令。

第1个参数addr1是第一块内存的起始地址。

第2个参数addr2是第二块内存的起始地址。

第3个参数count是要比较的数目,单位按照字节、字或者长字。

 

4、cp

cp [.b, .w, .l] source target count

- copy memory

cp命令可以在内存中复制数据块,包括对Flash的读写操作。

第1个参数source是要复制的数据块起始地址。

第2个参数target是数据块要复制到的地址。这个地址如果在Flash中,那么会直接调用写Flash的函数操作。所以U-Boot写Flash就使用这个命令,当然需要先把对应Flash区域擦干净。

第3个参数count是要复制的数目,根据cp.b cp.w cp.l分别以字节、字、长字为单位。

 

5、crc32

crc32 address count [addr]

- compute CRC32 checksum [save at addr]

crc32命令可以计算存储数据的校验和。

第1个参数address是需要校验的数据起始地址。

第2个参数count是要校验的数据字节数。

第3个参数addr用来指定保存结果的地址。

 

6、echo

echo [args..]

- echo args to console; c suppresses newline

echo命令回显参数。

 

7、erase

erase start end

- erase FLASH from addr 'start' to addr 'end'

erase N:SF[-SL]

- erase sectors SF-SL in FLASH bank # N

erase bank N

- erase FLASH bank # N

erase all

- erase all FLASH banks

 

erase命令可以擦Flash。

参数必须指定Flash擦除的范围。

按照起始地址和结束地址,start必须是擦除块的起始地址;end必须是擦除末尾块的结束地址。这种方式最常用。举例说明:擦除0x20000 – 0x3ffff区域命令为erase 20000 3ffff。

按照组和扇区,N表示Flash的组号,SF表示擦除起始扇区号,SL表示擦除结束扇区号。另外,还可以擦除整个组,擦除组号为N的整个Flash组。擦除全部Flash只要给出一个all的参数即可。

 

8、flinfo

flinfo

- print information for all FLASH memory banks

flinfo N

- print information for FLASH memory bank # N

 

flinfo命令打印全部Flash组的信息,也可以只打印其中某个组。一般嵌入式系统的Flash只有一个组。

 

9、go

go addr [arg ...]

- start application at address 'addr'

passing 'arg' as arguments

 

go命令可以执行应用程序。

第1个参数是要执行程序的入口地址。

第2个可选参数是传递给程序的参数,可以不用。

 

10、minfo

iminfo addr [addr ...]

- print header information for application image starting at

address 'addr' in memory; this includes verification of the

image contents (magic number, header and payload checksums)

 

iminfo可以打印程序映像的开头信息,包含了映像内容的校验(序列号、头和校验和)。

第1个参数指定映像的起始地址。

可选的参数是指定更多的映像地址。

 

11、loadb

loadb [ off ] [ baud ]

- load binary file over serial line with offset 'off' and baudrate 'baud'


loadb命令可以通过串口线下载二进制格式文件。

 

12、loads

loads [ off ]

- load S-Record file over serial line with offset 'off'

 

loads命令可以通过串口线下载S-Record格式文件。

 

13、mw

mw [.b, .w, .l] address value [count]

- write memory


mw命令可以按照字节、字、长字写内存,.b .w .l的用法与cp命令相同。

第1个参数address是要写的内存地址。

第2个参数value是要写的值。

第3个可选参数count是要写单位值的数目。

 

14、nfs

nfs [loadAddress] [host ip addr:bootfilename]

nfs命令可以使用NFS网络协议通过网络启动映像。

 

15、nm

nm [.b, .w, .l] address

- memory modify, read and keep address

 

nm命令可以修改内存,可以按照字节、字、长字操作。

参数address是要读出并且修改的内存地址。

 

16、printenv

printenv

- print values of all environment variables

printenv name ...

- print value of environment variable 'name'

 

printenv命令打印环境变量。

可以打印全部环境变量,也可以只打印参数中列出的环境变量。

 

17、protect

protect on start end

- protect Flash from addr 'start' to addr 'end'

protect on N:SF[-SL]

- protect sectors SF-SL in Flash bank # N

protect on bank N

- protect Flash bank # N

protect on all

- protect all Flash banks

protect off start end

- make Flash from addr 'start' to addr 'end' writable

protect off N:SF[-SL]

- make sectors SF-SL writable in Flash bank # N

protect off bank N

- make Flash bank # N writable

protect off all

- make all Flash banks writable

 

protect命令是对Flash写保护的操作,可以使能和解除写保护。

第1个参数on代表使能写保护;off代表解除写保护。

第2、3参数是指定Flash写保护操作范围,跟擦除的方式相同。

 

18、rarpboot

rarpboot [loadAddress] [bootfilename]

 

rarboot命令可以使用TFTP协议通过网络启动映像。也就是把指定的文件下载到指定地址,然后执行。

第1个参数是映像文件下载到的内存地址。

第2个参数是要下载执行的映像文件。

 

19、run

run var [...]

- run the commands in the environment variable(s) 'var'

run命令可以执行环境变量中的命令,后面参数可以跟几个环境变量名。

 

20、setenv

setenv name value ...

- set environment variable 'name' to 'value ...'

setenv name

- delete environment variable 'name'

 

setenv命令可以设置环境变量。

第1个参数是环境变量的名称。

第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量。

 

21、sleep

sleep N

- delay execution for N seconds (N is _decimal_ !!!)

sleep命令可以延迟N秒钟执行,N为十进制数。

 

22、tftpboot

tftpboot [loadAddress] [bootfilename]

tftpboot命令可以使用TFTP协议通过网络下载文件。按照二进制文件格式下载。另外使用这个命令,必须配置好相关的环境变量。例如serverip和ipaddr。

第1个参数loadAddress是下载到的内存地址。

第2个参数是要下载的文件名称,必须放在TFTP服务器相应的目录下。

这些U-Boot命令为嵌入式系统提供了丰富的开发和调试功能。在Linux内核启动和调试过程中,都可以用到U-Boot的命令。但是一般情况下,不需要使用全部命令。比如已经支持以太网接口,可以通过tftpboot命令来下载文件,那么还有必要使用串口下载的loadb吗?反过来,如果开发板需要特殊的调试功能,也可以添加新的命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

minicom 串口信息过长分行显示

有时串口输出一行信息比较多,一行显示不下,这个时候,我们可以用minicom的本身组合键设置,超过一行时自动卷起。 minicom 组合键的用法是:先按CtrlA组合键,然后松开这两个键,再按Z键。另外还有一…

uboot 的 bootcmd 和bootargs参数详解

U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。 bootargsconsolettyS1,115200n8 mem32M0x0 ispmem8M0x2000000 rmem24M0x2800000 init/linuxrc rootfstypesquashfs root/dev/mtdblock2 rw mtdpartsjz_sfc:256k(boot),2560k(kernel),2048k(root),-(appfs) …

MTD和 uboot中的bootargs 下属 mtdparts

MTD 设备是象闪存芯片、小型闪存卡、记忆棒等之类的设备,它们在嵌入式设备中的使用正在不断增长。 MTD 驱动程序是在 Linux 下专门为嵌入式环境开发的新的一类驱动程序。相对于常规块设备驱动程序,使用 MTD 驱动程序的主要优点在于 MTD 驱动程序是专门为…

Linux应用程序在内存中的地址布局

栈:局部变量(初始化的和未初始化的,但不包含局部静态变量)、局部只读变量(const)堆:动态分配的区域(如使用malloc函数申请的区域)BSS段:存储未初始化的全局变…

比较zImage和uImage的区别

一、vmlinuz vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。 vmlinuz的建立有两种方式。一是编译内核时通过“make…

编译faac错误分析

编译faac时遇到了以下的编译错误: /home/xuxuequan/Ingenicwork/toolchain/mips-gcc472-glibc216-32bit/mips-linux-gnu/libc/usr/include/string.h:365:26: error:ambiguates old declaration const char* strcasestr(const char*, const char*) 解决方案&#x…

gcc与g++的区别

一:gcc与g比较 编译c/c代码的时候,有人用gcc,有人用g,于是各种说法都来了,譬如c代码用gcc,而 c代码用g,或者说编译用gcc,链接用g,一时也不知哪个说法正确,如果…

交叉编译openssl不修改Makefile的方法

网上流传的方法都是要修改Makefile的cc值&#xff0c;我来说个不用修改的方法作者&#xff1a;帅得不敢出门 C哈哈堂<31843264>openssl 下载http://www.openssl.org/source/tar -xvf openssl-1.0.1c.tar.gzcd openssl-1.0.1c/CCarm-linux-gcc ./config no-asm shared -…

编译boa过程记录

boa是比较老的HTTP的本地Server&#xff0c;本文是针对0.94.13版本的编译过程做出记录 1.下载boa的程序包&#xff0c;本文的编译是针对misp平台的交叉编译 2.在编译之前&#xff0c;需要针对产品的文件系统和修改编译时可能遇到的错误&#xff0c;修改相关的文件。 &#xff…

/dev/null 21 的作用

shell中可能经常能看到&#xff1a;>/dev/null 2>&1命令的结果可以通过%>的形式来定义输出/dev/null 代表空设备文件> 代表重定向到哪里&#xff0c;例如&#xff1a;echo "123" > /home/123.txt1 表示stdout标准输出&#xff0c;系统默认值是1&a…

移植wpa_supplicant 2.2问题

1.编译libnl1.1问题 In file included from addr.c:28:0: ../include/netlink-local.h: In function __str2type: ../include/netlink-local.h:218:11: error: ULONG_MAX undeclared (first use in this function) ../include/netlink-local.h:218:11: note: each undeclared …

wpa_supplicant与wpa_cli之间通信过程

wpa_supplicant编译&#xff1a; 1. wpa_supplicant/Android.mk : -- wpa_cli -- wpa_supplicant -- libwpa_client.so 2. hostapd/Android.mk : -- hostapd_cli -- hostapd 从通信层次上划分&#xff0c;wpa_supplicant提供向上的控制接口 control interface&#xff0c;用于与…

Linux内核驱动之GPIO子系统(一)GPIO的使用

一 概述 Linux内核中gpio是最简单&#xff0c;最常用的资源(和 interrupt ,dma,timer一样)驱动程序&#xff0c;应用程序都能够通过相应的接口使用gpio&#xff0c;gpio使用0&#xff5e;MAX_INT之间的整数标识&#xff0c;不能使用负数,gpio与硬件体系密切相关的,不过linux有一…

gpio_direction_output 与 gpio_set_value

gpio_set_value&#xff08;port_num,0/1&#xff09; 一般只是在这个GPIO口的寄存器上写上某个值&#xff0c;至于这个端口是否设置为输出&#xff0c;它就管不了&#xff01; 而gpio_direction_output &#xff08;port_num,0/1)&#xff0c;在某个GPIO口写上某个值之后&…

内核ko模块strip使用

编译一个内核时&#xff0c;习惯性的在install目标下加了命令&#xff1a; $(STRIP) --strip-all --remove-section.note --remove-section.comment test.ko 结果在insmod test.ko时出现错误&#xff1a; test: module has no symbols (stripped?) .................. 上…

ubuntu下修复U盘只读问题

1.通过mount指令查看u盘挂载的实际设备 /dev/sdb1 on /media/xuxuequan/0BEB-331A type vfat (rw,nosuid,nodev,uid1000,gid1000,shortnamemixed,dmask0077,utf81,showexec,flush,uhelperudisks2) 2.umount挂载点 umount /media/xuxuequan/0BEB-331A 3.fsck修复u盘设备 s…

mkfs.jffs2参数详解

实例&#xff1a;mkfs.jffs2 -r rootfs -o rootfs.jffs2 -e 0x4000 --pad0x1000000 -s 0x200 -n mkfs.jffs2: Usage: mkfs.jffs2 [OPTIONS] Make a JFFS2 file system image from an existing directory tree Options: -p, --pad[SIZE] 用16進制來表示所要輸出檔案的大小&…

关于c语言字符串函数和一些内存函数的的简介

关于c语言字符串函数和一些内存函数的的简介 求字符串长度的函数 strlen函数介绍![在这里插入图片描述](https://img-blog.csdnimg.cn/20190301142458376.jpg)注模拟实现 . [1 ]计数器方式 因为strlen 是求字符串长度的函数&#xff0c;所以不能改变字符串本身&#xff0c;所…

君正T20平台生成jffs2格式rootfs

基于系统升级的考虑&#xff0c;这两天在君正T20平台上折腾如何生成jffs2 格式的rootfs。详细的过程如下&#xff1a; 1.修改uboot中的分区参数&#xff1a; 修改为rootfs格式为jffs2的&#xff0c;且适当扩大rootfs分区大小。&#xff08;因jffs2的压缩比不如只读的squashfs…

用结构体写一个简单的通讯录

一个简单的通讯录 通讯录应该具备简单的一些功能 1 增添联系人 2 删除联系人 3 查找联系人 4 修改联系人 5 按名字给联系人排序 6 查看通讯录 除此之外&#xff0c;应该在实现上还应该具备一些其他的功能函数 比如 初始化通讯录 这些都是功能函数&#xff0c;而整个函数入口应…