有些时候我们在进入了Linux之后,依然需要修改Uboot的环境变量来达到我们需要的一些功能,这一点Uboot很早就替我们想到了。提供了fw_printenv工具。fw_printenv位置在这里
编译一下倒不是很复杂,在README里面说的很清楚
我们上手编译一下
成功了,但是事情还远远没有结束,因为uboot提供的这个工具要结合你得板子实际的分区还有环境变量偏移这些参数,才能真正的工作起来。其实这些在README中都详细的介绍过了。
1) 文件配置方式 or 头文件配置
文件配置方式也就是用/etc/fw_env.config 我没弄成功,因此我果断的注释掉了,就采用头文件中预先配置好的方式,如下
2)是否有冗余分区
将其注释掉那么就采用一个分区,也就是DEVICE2被忽略
3) DEVICE1_NAME/DEVICE1_OFFSET/ENV1_SIZE/DEVICE1_ESIZE/DEVICE1_ENVSECTORS
这几个参数很重要了
首先在linux中看下我们自己的分区
很明显,环境变量在Uboot分区里面也就是mtd0
3.1 DEVICE1_NAME
那么很明显 这里填写 "dev/mtd0"
3.2 DEVICE1_OFFSET
这里定义的是环境变量的偏移,那么这个偏移在哪里看?这个就因开发板而异了,比如我得Hi3516就在可以看到
那么非常明显这里填写0x80000
3.3 ENV1_SIZE
也就是环境变量的大小啦,所以这里填写0x40000
3.4 DEVICE1_ESIZE
应该是说第一个分区的大小,反正我这里也还是填写0x40000
3.5 DEVICE1_ENVSECTORS
反正我填1
以上配置完成编译,成功,下面就把它拷贝到开发板上就可以了。使用呢就类似于printenv。关于这里有一篇文章说的非常好
http://labs.isee.biz/index.php/How_to_modify_the_uboot_environment_from_userspace