Uboot工作方式:
1. 从裸机长须镜像uboot.bin说起
a) Uboot的本质就是一个裸机程序,和我们裸机全集中写的那些裸机程序xx.bin并没有本质区别。如果非要说要有区别,那就是:我们写的大本分小于16kb,而uboot大于16kb(一般uboot在180kb-400kb之间)
b) Uboot本身是一个开源项目,由若干个.c文件和.h文件组成,配置编译之后会生产一个uboot.bin,这就是uboot这个裸机程序的镜像文件。然后这个镜像文件被合理的烧录到启动介质中拿给soc去启动。也就是说uboot在没有运行时表现为uboot.bin,一般趟在启动介质中。
c) Uboot运行时会被加载到内存中然后一条指令一条指令的拿给cpu去运行。
2. uboot命令式shell界面
a) 普通的裸机程序运行起来就直接执行了。执行时效果和代码有关。
b) 有些程序需要和人进行互动,于是程序中就实现了一个shell,uboot就实现了一个shell。
注意:shell不是操作系统,和操作系统一点关系都没有,linux中打开一个终端后就得到了一个shell,可以输入命令回车执行。Uboot中的shell工作方式和linux中终端shell非常像。
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
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"
movi write {sector#} {bytes(hex)} {addr} - instead of this, you can use "mmc write"
第一个命令:printenv print
作用是打印出系统中所有的环境变量。
环境变量就好像程序的全局变量一样。程序中任何地方都可以根据需要去调用或者更改环境变量(一般都是调用),环境变量和全局变量不同之处在于:全局变量的生命周期是在程序的一次运行当中,开始运行时诞生程序结束时死亡,下次运行程序时从头开始;但是环境变量被存储在Flash的另一块专门区域,一旦我们在程序中保存了该环境变量,那么下次开机时该环境变量的值将维持上一次更改保存后的值。
printenv
- print values of all environment variables
printenv name ...
print value of environment variable ‘name‘
setenv name value ...
- set environment variable ‘name‘ to ‘value ...‘
setenv name
- delete environment variable ‘name‘