IMX8MP-清除boot环境变量

说明

IMX8MP的板子,有一个环境变量一直是烧录后设置不上,发现是之前的环境变量被写到存储介质里面,然后还有个备份,然后是一直读的是之前的环境变量,所以是有问题。

解决步骤

写到UUU文件里面即可。

FBK: ucmd mmc=`cat /tmp/mmcdev`; dd if=/dev/zero of=/dev/mmcblk${mmc} bs=1k seek=4112 count=16 conv=fsync
FBK: ucmd mmc=`cat /tmp/mmcdev`; dd if=/dev/zero of=/dev/mmcblk${mmc} bs=1k seek=4096 count=16 conv=fsync

其他办法和解决过程

在uboot的命令行可以输入以下的命令去验证uboot固件里面的环境变量,就是你写到uboot源码里面的 #define CONFIG_EXTRA_ENV_SETTINGS \ CONFIG_MFG_ENV_SETTINGS \ JAILHOUSE_ENV \ BOOTENV \文件include/configs/imx8mp_xxx.h下面的环境变量。

u-boot=> env default -a
## Resetting to default environment
u-boot=> saveenv

然后print。

在系统中可以直接查看存储的boot环境变量的内容:

dd if=/dev/mmcblk2 bs=1k skip=4096 count=16 | hexdump -C

在系统中也可以直接清除掉,设置对应的mmc号:

dd if=/dev/zero of=/dev/mmcblk${mmc} bs=1k seek=4112 count=16 conv=fsync
dd if=/dev/zero of=/dev/mmcblk${mmc} bs=1k seek=4096 count=16 conv=fsync

相关的宏定义:

# 环境变量存储在mmc上
CONFIG_ENV_IS_IN_MMC=y
# 主环境变量偏移量
CONFIG_ENV_OFFSET=0x400000
# 备份的环境变量偏移量
CONFIG_ENV_OFFSET_REDUND=0x404000
# 环境变量大小
CONFIG_ENV_SIZE=0x4000

其中的0x400000是字节,

0x400000 = 4,194,304字节 ÷ 1024 = 4096 KB
0x404000 = 4,210,688 字节 ÷ 1024 = 4112 KB

所以dd命令就是这样的。

其中的4096 KB里面前几个字节是CRC。

IMX93的就是看 https://www.cnblogs.com/allalonewithyou/p/19163199

参考:

https://blog.csdn.net/ivychend/article/details/79296463

https://blog.csdn.net/2401_89324144/article/details/145127763

posted @ 2026-06-23 14:07  杨旭0324  阅读(7)  评论(0)    收藏  举报