一、基本说明
linux在文件系统层一般情况下是不允许修改uboot相关的环境参数的,因为一旦操作不慎就可能导致板子卡在uboot层起不来。另一个,linux在文件系统层的操作,实际上也是对(nand/nor/spi等)flash的操作,但是这个操作过程由于linux的封装保护,使得我们只能间接地去操作flash,但如果我们想直接操作底层uboot的一些配置,也有办法,但这得借助一个工具:fw_setenv(也叫fw_printenv)。fw_setenv工具在各个平台都是可以用的,但是需要根据不同的平台去交叉编译,本文的开发平台是海思,仅供大家参考。
二、要修改的文件
编译fw_setenv工具只用修改一个文件:fw_env.h
1. fw_env.h文件路径
海思平台下是这个:
…/work/HisiSDK/Hi3531A_SDK_V1.0.5.0/osdrv/opensource/uboot/u-boot-2010.06/tools/env
2. 修改fw_env.h内容
这里主要是根据你需要的环境变量去配置,但其中的CONFIG_BOOTCOMMAND
、CONFIG_BOOTARGS
等几个宏必须要有,因为这个文件的作用是如果你在filesystem层对uboot进行修改操作失败了,那么出于对uboot的保护,底层会初始化uboot的相关环境变量,而这些初始化的变量就是来自于该文件。
//#define CONFIG_FILE "/etc/fw_env.config"
#define DEVICE1_N