一. uboot 启动
当设备上电启动时,需要马上按下回车键,开发板启动会停止在 uboot的启动Log信息时刻。
这就是 uboot的命令模式,即可以输入 uboot命令进行一些操作。
二. uboot 基础命令
1. help 命令
当开发板上电启动后,马上按下 回车键即可进入 uboot的命令模式,输入 help命令或者输入问号符 "?" 都可以查看开发板上的 uboot所支持的所有的命令。
如下所示(以下只显示了一部分命令):
=> help
? - alias for 'help'
base - print or set address offset
bdinfo - print Board Info structure
bmode - sd1|sd2|qspi1|normal|usb|sata|ecspi1:0|ecspi1:1|ecspi1:2|ecspi1:3|esdhc1|esdhc2|esdhc3|esdhc4 [noreset]
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootelf - Boot from an ELF image in memory
bootm - boot application image from memory
如果需要查看某一个命令的帮助信息:?+ 命令名
例如,需要查看 命令 echo 的帮助信息,可以输入: ? echo
=> ? echo
echo - echo args to console
Usage:
echo [args..]
- echo args to console; \c suppresses newline
=>
2. 信息查询命令
printenv 命令:查看开发板当前的环境变量命令
bdinfo 命令:查看 uboot的信息命令
如下打印所有的环境变量值:
=> printenv
author=wangtian
baudrate=115200
board_name=EVK
board_rev=14X14
bootargs=console=ttymxc0,115200 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:4m(u-boot),128k(env),1m(logo),1m(dtb),8m(kernel),-(rootfs)
bootcmd=nand read ${loadaddr} 0x620000 0x800000;nand read ${fdt_addr} ${fdt_offset} 0x20000;bootz ${loadaddr} - ${fdt_addr}
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=3
3. 环境变量相关命令
setenv 命令:设置所有的环境变量。也可以自定义环境变量。也可以删除环境变量。
saveenv 命令:保存开发板的环境变量,即把所有的环境境变量值保存到 Nand-Flash或 EMMC中。
例如,saveenv 命令的使用:
当开发板停留在 uboot启动时刻时,打印了如下信息:
以上打印信息的意思是:我们并没有把默认的环境变量保存到开发板上去,于是使用了默认的环境变量。
此时,输入 saveenv 命令,就可以把 uboot的默认环境变量的值保存到开发板的 Nand-Flash(或 EMMC中)中去。执行 saveenv命令后,设备之后再重启就不会打印以上的 Warning信息了。
如下操作:
setenv 命令的使用:
例如,这里我们想更改 bootdelay的值,通过 printenv命令可以知道,现在 bootdelay的值是1,也就是 uboot启动后延时了1 秒后才启动 Linux内核的。
这里想将 bootdelay的值改为 3。输入命令如下:
setenv bootdelay 3 //这里只是在代码更改了 bootdelay的值,并没有保存到Nand-Flash中
还需要将更改的 bootdelay 保存,输入命令如下:
saveenv //将更改的 bootdelay的值保存到 Nand_flash中
操作如下:
=> setenv bootdelay 3
=> saveenv
Saving Environment to NAND...
Erasing NAND...
Erasing at 0x400000 -- 100% complete.
Writing to NAND... OK
这时的 bootdelay 的值已经被保存到 Nand-Flash,可以使用 printenv 命令 查看。 也可以将开发板重新上电,验证 uboot启动后是否为 3 秒倒计时。
4. 新建环境变量 / 删除环境变量
(1) 自定义环境变量
自定义环境变量 即定义添加一个新的环境变量。
操作如下:
=> setenv author wangtian
=> saveenv
Saving Environment to NAND...
Erasing NAND...
Erasing at 0x400000 -- 100% complete.
Writing to NAND... OK
再通过 printenv 命令查看,是否已经创建成功。如下:
=> printenv
author=wangtian
(2) 删除环境变量
setenv 命令可以删除环境变量。
把一个环境变量的值设置为空值,即就是删除了该环境变量。
=> setenv author
=> saveenv
Saving Environment to NAND...
Erasing NAND...
Erasing at 0x400000 -- 100% complete.
Writing to NAND... OK
再通过 printenv 命令查看,环境变量 author 已经被删除了。
如下所示:
=> printenv
baudrate=115200
board_name=EVK
board_rev=14X14
bootargs=console=ttymxc0,115200 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs