如何访问和更改 linux 中的 u-Boot 环境变量。使用u boot目录中的u-boot/tools/env目录:
u-boot$ make env
其中创建了可执行文件fw_printenv
。我将其复制到 /usr/sbin 和目标 etc/fw_env.config 文件上:
# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundand
# environment sector is assumed present.
# MTD device name Device offset Env. size Flash sector size
/dev/mtd0 0x00000 0x20000 0x20000
target#./fw_printenv
SEGV
是什么导致了这个错误?
/proc/mtd
dev: size erasesize name
mtd0: 00020000 00020000 "flash_uboot_env"
mtd1: 002e0000 00020000 "flash_linux_image"
mtd2: 00900000 00020000 "flash_jffs2"
mtd3: 00900000 00020000 "flash_data"
答案1
你的fw_env.config
和我的不一样。我的 u-boot 环境位于 0x00260000-0x00280000 范围内。我记得,fw_env 文件非常敏感,如果您忘记了某些列,fw_setenv 将回退到某个默认值,这可能会导致各种奇怪的错误。
仅供参考,这是我的 fw_env.config
root@linux:~# cat /etc/fw_env.config
# Dev. name offset env. size flash sector size nbr. sectors
/dev/mtd1 0x00 0x2000 0x20000 1
您可以交叉编译strace
并使用它来进行故障排除。