linux fw_printenv fw_setenv 设置uboot环境变量

本文介绍了如何使用u-boot提供的fw_printenv和fw_setenv工具来管理Linux系统的环境变量。在uboot端编译这些工具后,在Linux端进行集成,将fw_env.config配置到/etc/目录,fw_printenv复制到/bin,并创建软链接fw_setenv指向fw_printenv。首次启动时需在uboot中使用saveenv保存环境变量。测试表明,fw_printenv和fw_setenv能够正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、fw_printenv/fw_setenv

u-boot提供fw_printenv/fw_setenv 为Linux访问uboot环境编译。

在uboot端编译,在Linux端使用

2、测试环境

source /opt/fsl-imx-xwayland/4.14-sumo/environment-setup-aarch64-poky-linux
make envtools CC="$CC"
Now, you will find the u-boot/tools/env/fw_printenv
Note: the fw_setenv is applet of fw_printenv as busybox does
fw_env.config
fw_env.config default directory is in the /etc/
如下
/dev/mmcblk1  0x400000         0x2000
uboot/include/configs/imx8qxp_mek.h
0x2000 : #define CONFIG_ENV_SIZE  0x2000
0x400000 : #define CONFIG_ENV_OFFSET (64 * SZ_64K)

3、所有文件集成在rootfs里面

fw_env.config copy to /etc/
fw_printenv copy to /bin
Make symbol link fw_setenv from fw_printenv
ln -s fw_printenv fw_setenv
fw_setenv -> fw_printenv

4、Test fw_printenv/fw_setenv

注意以下文字,第一次开机的时候需要在uboot中设置saveenv

The first boot the environment is generated by uboot C code.
i.MX uboot detects the which board it is, then give proper u-boot environment
variables. It is in the memory not in the storage such as emmc, till you use
saveenv to do save.
If it is the first time to do the test, get into uboot run saveenv first.

Test fw_printenv/fw_setenv(Cont.)
Get in to linux then test fw_printenv

### 解决 `fw_printenv` 命令出现 BAD 错误 当遇到 `fw_printenv` 出现 BAD 错误的情况时,通常意味着环境变量存储区域存在读取或校验问题。具体表现为坏的循环冗余校验 (CRC),这会阻止正确加载环境变量。 #### 可能原因分析 - **坏的 CRC 校验**:如果环境中保存的数据损坏,则会出现 "bad CRC, using default environment" 的警告[^2]。 #### 解决策略 为了修复此问题,可以尝试以下方法: 1. **重置 U-Boot 环境变量** 使用 `fw_setenv` 工具来清除并重新设置必要的环境变量。通过删除现有配置文件 `/etc/fw_env.config` 或者直接修改该文件中的路径指向新的未受损分区。 2. **手动修正环境数据** 如果知道确切哪些变量被破坏,可以直接编辑对应的二进制文件(通常是 MTD 设备上的特定偏移位置),但这需要非常谨慎的操作以及对设备内部结构的理解。 3. **更新固件版本** 某些情况下,旧版U-Boot可能存在缺陷,在这种情形下升级到最新稳定版本可能解决问题。 4. **硬件层面排查** 对于某些嵌入式平台来说,Flash芯片本身可能出现物理损伤或者连接不良等问题,特别是对于AMD Flash而言,DQ5引脚用于检测操作状态异常,而其他品牌如SST则不具备相同机制,因此可能导致擦除失败进而影响参数写入准确性。 ```bash # 清理当前环境变量至默认值 sudo fw_setenv -s /path/to/default.env ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值