【海思内核驱动篇】-(5)env工具
env是和uboot一个分区,并且是通过设定偏移量保存的,所以有时候可以上层需要保存env变量来通知uboot事件,比如上层升级事件来显示logo等。
1 宏定义
我们知道海思uboot头文件里面保存有默认的环境变量。并且有如下定义:
include\configs\hi3519av100.h
/*allow change env*/
#define CONFIG_ENV_OVERWRITE
#define CONFIG_COMMAND_HISTORY
/* env in flash instead of CFG_ENV_IS_NOWHERE */
#define CONFIG_ENV_OFFSET 0x80000 /* environment starts here */
#define CONFIG_ENV_SIZE 0x40000
#define CONFIG_ENV_SECT_SIZE 0x10000
#define CONFIG_ENV_VARS_UBOOT_CONFIG
从CONFIG_ENV_OFFSET偏移量可以是在uboot分区,偏移CONFIG_ENV_OFFSET开始写入的,也就是说uboot大小不能操作这个偏移量(512K).
2 默认环境变量
include\env_default.h中default_environment定义
3 fw_setenv工具
直接在uboot下编译即可:源码:tools\env\
在u-boot-2016.11根目录下:
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- env
fw_env.config配置如下:
/etc # cat fw_env.config
# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
# Notice, that the “Number of sectors” is ignored on NOR.
# MTD device name Device offset Env. size Flash sector size Number of sectors
#/dev/mtd1 0x0000 0x4000 0x4000
#/dev/mtd2 0x0000 0x4000 0x4000
# NAND example
/dev/mtd0 0x4000 0x4000 0x20000 2
char cmdStr[128] = {0};
sprintf(cmdStr,”/usr/bin/fw_setenv %s %s”,”flag”, “hi_flag=1”);
system(cmdStr);免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:【海思内核驱动篇】-(5)env工具 https://www.yhzz.com.cn/a/14805.html