Как установить значение глобальной переменной в C для переменной среды оболочки?
Используйте функцию env_set_addr () , чтобы установить переменную среды для использования в качествеадрес из обычной программной переменной.
Из include / common.h :
/**
* env_set_addr - Set an environment variable to an address in hex
*
* @varname: Environment variable to set
* @addr: Value to set it to
* @return 0 if ok, 1 on error
*/
ADDENDUM
По какой-то причине я не смог найти эту функцию в кодовой базе, которую я использую.
Вы не упомянули, какую версию U-Boot вы используете.
env_set () и его друзья, по-видимому, были представлены в версии 2017.09 для замены setenv () и его друзья.
Я использовал аналогичный setenv () после форматирования с помощью sprintf.
Начиная с версии 2011.12, простая setenv () была дополнена setenv_addr () и / или setenv_hex () , чтопреобразует длинное целое без знака в строку шестнадцатеричных цифр для вас.
Если вы все еще используете версию U-Boot старше 2011.12, то вам придется делать то, что вы описываете.