从 boot.scr 访问 fw_setenv 设置的 u-boot 环境变量
Access u-boot env variables set by fw_setenv from boot.scr
我正在用 ubuntu OS 和 u-boot 引导加载程序试验 nanopi 板。
当启动进入系统时,我设置 u-boot 环境变量 fw_setenv
:
$ fw_setenv foo bar
在接下来的重新启动时,我想从 /boot/boot.scr
脚本访问这个 foo
变量:
if [ -z "${foo}" ]; then
echo "Fail"
else
echo "Ok"
fi
我得到 Fail
,所以 foo
无法访问。
我没有使用 u-boot 的经验,但我读到它有两组环境变量:一组是只读的(固定为 U-boot 映像的一部分),另一组是 read/write(用户环境)。所以看起来用户环境无法从 boot.scr
脚本访问?是真的吗?如何在执行 boot.scr 时使我的 foo
变量可见?
更新:我的 /etc/fw_env.config
文件:
# Block device
/dev/mmcblk1 0xc0000 0x20000
U盘版本:2020.01
问题找到了。 U-boot 常量 CONFIG_SYS_MMC_ENV_DEV
、CONFIG_ENV_OFFSET
和 CONFIG_ENV_SIZE
与 /etc/fw_env.config
中的不匹配。
通过将这些常量更改为
解决了问题
#define CONFIG_SYS_MMC_ENV_DEV 1
#define CONFIG_ENV_OFFSET 0x3f8000
#define CONFIG_ENV_SIZE 0x20000
重新编译 u-boot 并相应地更新 fw_env.config:
/dev/mmcblk1 0x3f8000 0x20000
我正在用 ubuntu OS 和 u-boot 引导加载程序试验 nanopi 板。
当启动进入系统时,我设置 u-boot 环境变量 fw_setenv
:
$ fw_setenv foo bar
在接下来的重新启动时,我想从 /boot/boot.scr
脚本访问这个 foo
变量:
if [ -z "${foo}" ]; then
echo "Fail"
else
echo "Ok"
fi
我得到 Fail
,所以 foo
无法访问。
我没有使用 u-boot 的经验,但我读到它有两组环境变量:一组是只读的(固定为 U-boot 映像的一部分),另一组是 read/write(用户环境)。所以看起来用户环境无法从 boot.scr
脚本访问?是真的吗?如何在执行 boot.scr 时使我的 foo
变量可见?
更新:我的 /etc/fw_env.config
文件:
# Block device
/dev/mmcblk1 0xc0000 0x20000
U盘版本:2020.01
问题找到了。 U-boot 常量 CONFIG_SYS_MMC_ENV_DEV
、CONFIG_ENV_OFFSET
和 CONFIG_ENV_SIZE
与 /etc/fw_env.config
中的不匹配。
通过将这些常量更改为
#define CONFIG_SYS_MMC_ENV_DEV 1
#define CONFIG_ENV_OFFSET 0x3f8000
#define CONFIG_ENV_SIZE 0x20000
重新编译 u-boot 并相应地更新 fw_env.config:
/dev/mmcblk1 0x3f8000 0x20000