uboot命令简介
1、printenv/print 打印环境变量
输入 print
x210 # print
mtdpart=80000 400000 3000000
baudrate=115200 // 波特率
ethaddr=00:40:5c:26:0a:5b // 开发板的本地网卡的MAC地址
bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
bootcmd=movi read kernel 30008000; bootm 30008000 // 内核启动地址
netmask=255.255.255.0 // 子网掩码
serverip=192.168.1.40 // tftp服务器的ip地址,这里是我虚拟机的ip
bootdelay=5 // 进入uboot命令行的倒计时
ipaddr=192.168.1.10 // 开发板的ip地址
gatewayip=192.168.1.1 // 开发板的本地网关地址,用来上外网时使用的
Environment size: 304/16380 bytes
2、setenv/set 修改环境变量
新建:set var value 更改:set var value
删除:set var
输入 set ipaddr 192.168.1.10
这样的修改只是临时的保存,下次开机仍然是修改之前的IP地址。
3、save 保存修改的环境变量
永久保存修改后的环境变量,save之后,下次开机才会是修改后的环境变量。环境变量是批量整体向nand保存的,修改一个环境变量,save的时候会将所有的环境变量都重新保存一遍。
4、fastboot下载uboot、zImage、根文件系统的相关命令
win主机:cmd界面打开D盘,输入dir查看应用。然后使用fastboot device查看连接状态。
开发板:uboot命令行输入fdisk -c 0 重新分区。然后输入fastboot查看到分区,并且等待下载
win主机:fastboot flash bootloader xxxxx
fastboot flash kernel xxxxx
fastboot flash system xxxxx
下载完之后,在win的cmd使用 fastboot reboot 重新启动开发板
5、ping 测试网络连接
输入 ping 192.168.1.30 // ping通window主机
x210 # ping 192.168.1.30
dm9000 i/o: 0x88000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 00:40:5c:26:0a:5b
operating at 100M full duplex mode
host 192.168.1.30 is alive // ping通的标志
6、tftp下载内核镜像
输入 tftp 0x30008000 zImage // 将内核镜像下载到0x30008000
x210 # tftp 0x30008000 zImage
dm9000 i/o: 0x88000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 00:40:5c:26:0a:5b
operating at 100M full duplex mode
TFTP from server 192.168.1.40; our IP address is 192.168.1.10
Filename ‘zImage’.
Load address: 0x30008000
Loading: #################################################################
#################################################################
##########################################################transmission timeout
##############################################################
done
Bytes transferred = 3665268 (0x37ed74)
// transmission timeout表示下载过程中有异常中断,但是它可以自己恢复,接续着中断前的下载。
7、bootm、go 启动内核
输入 bootm 0x30008000 // 从0x30008000启动内核
输入 go 0x30008000 // 不给内核传参
注:go命令还能用来启动裸机程序,向内存DDR中下载uboot,然后烧录进裸机程序到某一地址,然后使用go命令来启动它。
8、nfs 加载根文件系统
uboot也支持nfs命令,需要再虚拟机中搭建nfs服务器
9、reset 重启uboot
输入 reset // 重启uboot
10、 movi操作SD卡/EMMC/iNand
movi是一个命令集,有很多子命令
x210 # help movi
movi init - Initialize moviNAND and show card info
movi read {u-boot | kernel} {addr} - Read data from sd/mmc
movi write {fwbl1 | u-boot | kernel} {addr} - Write data to sd/mmc // fwbl0固件的iROM fwbl1前16k
movi read rootfs {addr} [bytes(hex)] - Read rootfs data from sd/mmc by size
movi write rootfs {addr} [bytes(hex)] - Write rootfs data to sd/mmc by size
movi read {sector#} {bytes(hex)} {addr} - instead of this, you can use “mmc read” // {sector#},iNand的扇区
movi write {sector#} {bytes(hex)} {addr} - instead of this, you can use “mmc write”
举例 movi read {u-boot | kernel} {addr} - Read data from sd/mmc
movi read 必须命令
{u-boot | kernel} 二选一参数
{addr} 必须参数 addr是DDR中地址
[bytes(hex)] 可选参数
输入 movi read u-boot 0x30000000
// 从iNand中读,把iNand中的u-boot分区读出到DDR的0x30000000其实的位置处。 这里的0x30000000可以直接写成30000000,意思是一样的。uboot的命令行中所有数字都是被默认当作十六进制处理,不管你加不加0x都是一样的。
11、mm、mw、md内存操作命令
(1)md // memory display,显示内存中的内容
(2)mw // memory write,将内容写到内存中
(3)mm // memory modify,
输入 help md 查看用法
md [.b, .w, .l] address [# of objects] .b以字节为单位显示 .w以2字节为单位显示 .l以4字节为单位显示 # of objects显示多少字节,输入的数字是16进制数,比如10就是显示16字节
md.w 0x30000000 10 // 显示16个字节
12、bdinfo查看开发板情况
bdinfo
SMDKV210 # bdinfo
arch_number = 0x00000000
env_t = 0x00000000
boot_params = 0x00000000
DRAM bank = 0x00000000
-> start = 0x00000000
-> size = 0x00000000
DRAM bank = 0x00000001
-> start = 0x00000000
-> size = 0x00000000
ethaddr = 00:40:5C:26:0A:5B
ip_addr = 192.168.0.20
baudrate = 115200 bps