从 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_DEVCONFIG_ENV_OFFSETCONFIG_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