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
本文来自博客园,作者:杨旭0324,转载请注明原文链接:https://www.cnblogs.com/allalonewithyou/p/20729810,个人邮箱:yaonie4444@foxmail.com

浙公网安备 33010602011771号