Linux应用读写u-boot环境变量的方法

作者

QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118

linux应用访问u-boot环境变量

在uboot的tools/env目录下提供了linux访问环境变量的工具fw_printenv和fw_setenv,配置头文件fw_env.h,

设置CONFIG_FILE从配置文件读取环境变量所在位置,HAVE_REDUND表示使用冗余环境变量,这里都选上,CONFIG_FILE内容为,

# Configuration file for fw_(printenv/setenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
# Notice, that the "Number of sectors" is not required on NOR and SPI-dataflash.
# Futhermore, if the Flash sector size is omitted, this value is assumed to
# be the same as the Environment size, which is valid for NOR and SPI-dataflash
# Device offset must be prefixed with 0x to be parsed as a hexadecimal value.

# NOR example
# MTD device name       Device offset   Env. size       Flash sector size       Number of sectors
/dev/mtd1               0x0000          0x20000         0x20000
/dev/mtd2               0x0000          0x20000         0x20000

# MTD SPI-dataflash example
# MTD device name       Device offset   Env. size       Flash sector size       Number of sectors
#/dev/mtd5              0x4200          0x4200
#/dev/mtd6              0x4200          0x4200

# NAND example
#/dev/mtd0              0x4000          0x4000          0x20000                 2

# On a block device a negative offset is treated as a backwards offset from the
# end of the device/partition, rather than a forwards offset from the start.

# Block device example
#/dev/mmcblk0           0xc0000         0x20000
#/dev/mmcblk0           -0x20000        0x20000

# VFAT example
#/boot/uboot.env        0x0000          0x4000

这里配置了/dev/mtd1和/dev/mtd2互为备份。编译完之后测试发现没有切换分区,由于之前没改代码之前编译过,执行rm *.o *.a fw_printenv,再编译就可以了,fw_setenv失败后会用默认环境变量覆盖原有环境变量,这很怕人啊,待解决。

Warning: Bad CRC, using default environment

宏和环境变量的值应该一样#define CONFIG_ENV_OFFSET_REDUND 0xe0000,默认环境变量由数组const uchar default_environment[]定义,不同版本的u-boot该数组位置可能不一样。

编译

env tools是在板卡上运行的,需要交叉编译,

override HOSTCC=$(CC)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值