ARM裸机环境搭建(U-Boot命令详解)

时间:2021-11-01 08:44:17

个人强烈建议看着命令自己做做~~

首先是你的开发板上烧写好了U-Boot。

1、引导启动相关命令

1)go

格式:

go addr [arg ...]

功能:

go命令可以执行应用程序(这里一定要区分与bootm的区别!!)

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

△:第二个是可选参数,是传递给程序的参数。

2)bootm

格式:

bootm [addr[arg ...]]

功能:

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

△:参数addr是程序映像的地址,这个程序映像必须转换成U-Boot的形式(这就是与go的不同!)

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

附加说明:启动映像需要经过mkimage处理。

3)bootp

格式:

bootp [LoadAddress] [BootFilename]

功能:

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

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

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

附加说明:通过网络启动,需要提前设置网络,bdinfo打印ARM相关信息。

4)tftpboot

格式:

tftpboot [LoadAddress] [BootFilename]

功能:

tftpboot命令可以使用TFTP协议通过网络启动映像。按照二进制文件格式下载。

另外使用这个命令,必须配置好相关的环境变量,比如:serverip和ipaddr~~

还有就是虚拟机的TFTP一定要启动~~我猜这个应该是废话~~

△:第一个参数是下载到的内存地址

△:第二个参数是要下载的文件名称。它必须放在TFTP服务器响应的目录下(我的是/tftpboot)

附加说明:tftp命令和tftpboot一样~~

5)nfs(感觉跟TFTP一样,但是暂时不用呢~~)

格式:

nfs [LoadAddress] [host ip addr:BootFilename]

功能:

nfs命令可以使用NFS网络协议通过网络下载文件。

例如:

nfs 32000000 192.168.1.111:aa.txt,可以把192.168.1.111(Linux的NFS文件系统)中的aa.txt读入内存0x32000000中。

 

2、环境变量相关命令

1)echo

格式:

echo [args ...]

功能:

echo命令回显参数。用法跟Linux下的一样~~

2)printenv

格式:

printenv

或者printenv name ...

功能:

printenv命令打印环境变量。可以打印全部的环境变量,也可以打印部分的环境变量。

3)setenv

格式:

setenv name value ...

setenv name

功能:

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

△:第一个参数是环境变量的名称。

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

4)saveenv(更改了环境变量,如果下回还要用就要save一下)

格式:

saveenv

功能:

保存环境变量,命令将当前定义的所有的变量及其值存入Flash中。

5)run

格式:

run var [...]

功能:

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

例如:

6410 # setenv fldnw tftp 0x00000000 my.bin \; earse 0 3ffff \; cp.b 30000000 0 40000

6410 # run flashit

6)ping

格式:

ping IPAddr

功能:

只能开发板ping主机。

3、内存操作命令

1)cmp

格式:

cmp[.b,w,l] Addr1,Addr2 Count

功能:

cmp命令可以比较2块内存中的内容。

.b是以字节为单位;依次类推.w和.l(千万注意这里没有空格!)

△:第一个参数是一块内存的起始地址

△:第二个参数是另一块内存的起始地址

△:第三个参数Count是要比较的数目。

2)cp

格式:

cp[.b,w,l] Source Target Count

功能:

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

△:第一个参数是要复制的数据块起始地址。

△:第二个是要复制到的起始地址。这个地址如果在Flash中,那么会直接调用写Flash的函数操作。所以UBoot写Flash就是用这个命令,当然需要先把对应Flash区域擦除。

△:第三个参数是要复制的数目。

3)mw

格式:

mw[.b,w,l] Addr Value [Count]

功能:

mw命令可以按照字节、字、长字写内存。

△:第一个参数Addr是要写的内存地址

△:第二个参数是要写的值

△:第三个参数是要写单位制的数目

例程:

mw 0x32000000 ff 1000(把内存0x32000000开始的0x10000字节设为0xff)

4)nm

格式:

nm[.b,w,l] Addr

功能:

nm命令可以修改内存,可以按照字节、字、长字操作(其实在Linux系统应该是字节、半字、字!)

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

5)mm

格式:

mm Addr

功能:

读或者修改内存,地址自动增加。

△:直接按回车,保持原内容不变。

△:若要改变,在问号后面输入数值然后回车

△:按空格回车退出。

6)md

格式:

md[.b,w,l] Addr

功能:

md命令可以显示内存区的内容,可以按照字节、字、长字操作

4、Nor Flash

由于Tiny6410的板子上没有这个东西,所以我就不打算写了~~

5、Nand Flash

1)info

格式:

nand info

功能:

打印出可用的nand设备。

2)device

格式:

nand device [dev]

功能:

打印或设置当前nand设备

3)read

格式:

nand read[.jffs2] Addr Off或者Partition Size

功能:

从Nand Flash的Off地址(或者Partition分区)读Size大小的数据到内存地址Addr处。

写的方法可以是普通写,或者按照jffs2文件系统格式来写。

4)write

格式:

nand write[.jffs2]/[.yaffs[1/2]] Addr Off/Partition Size

功能:

将内存中的Addr地址Size大小的的数据写到NandFlash地址Off处(或者Partition分区)。

写的方式可以是普通鞋或者按照yffs2、yaffs1、yaffs2文件系统格式来写。

5)bad

格式:

nand bad

功能:

根据坏块表,显示NandFlash坏块地址。

6)dump

格式:

nand dump[.oob] Off

功能:

一页的内容打印出来。

7)erase