Доступ к переменным окружения u-boot, установленным fw_setenv, из boot.scr - PullRequest
0 голосов
/ 15 марта 2020

Я экспериментирую с платой nanopi с операционной системой Ubuntu и загрузчиком u-boot. При загрузке в систему я устанавливаю переменную среды u-boot с помощью fw_setenv:

$ fw_setenv foo bar

При следующей перезагрузке я бы хотел получить доступ к этой переменной foo из сценария /boot/boot.scr:

if [ -z "${foo}" ]; then
    echo "Fail"
else
    echo "Ok"
fi

Я получаю Fail, поэтому foo недоступен. У меня нет опыта работы с u-boot, но я читал, что в нем есть два набора переменных среды: один только для чтения (исправлен как часть образа U-boot), а другой - для чтения / записи (пользовательская среда). Таким образом, похоже, что пользовательская среда не доступна из сценария boot.scr? Это правда? Как сделать мою переменную foo видимой в момент запуска boot.scr?

Upd: Мой /etc/fw_env.config файл:

# Block device
/dev/mmcblk1    0xc0000    0x20000

Версия U-boot: 2020.01

1 Ответ

0 голосов
/ 18 марта 2020

Проблема найдена. Константы 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
...