Как очистить переменные среды, ранее сохраненные с помощью u-boot?

Я работаю со встроенным комплектом Linux, на котором работает u-boot. Чтобы все загружалось правильно, мне пришлось изменить некоторые переменные среды и сохранить их с помощью команды saveenv.

Теперь я хотел бы вернуться назад и посмотреть, какие были значения по умолчанию, убедиться, что я точно знаю, что было изменено, и найти способ изменить эти значения по умолчанию, чтобы не нужно было отдельно загружать и модифицировать каждое устройство в производстве.

Есть ли способ сказать u-boot очистить все сохраненные данные, чтобы я мог снова увидеть значения по умолчанию? Тип флэш-памяти — QSPI, если это имеет значение.


person KyleL    schedule 16.12.2013    source источник
comment
Область среды U-Boot проверяется с помощью 32-битного CRC, поэтому, если вы очистите ее, достаточно будет всего байта в энергонезависимой памяти, после чего U-Boot вернется к своим настройкам по умолчанию при запуске.   -  person sawdust    schedule 19.12.2013


Ответы (3)


В вашем комплекте попробуйте

help env

и найдите «env по умолчанию».

env default [-f] var [...] - [forcibly] reset variable(s) to their default values

Это похоже на то, что вы ищете.

env default -a

делает непостоянное изменение, тогда "printenv" показывает значения по умолчанию.

Чтобы изменить значения по умолчанию, вы должны перестроить свой u-boot.bin с изменениями, например. в CONFIG_EXTRA_ENV_SETTINGS.

person Joe Kul    schedule 16.12.2013
comment
Я нашел конфигурацию в ./u-boot/include/configs/board-vendor.h.template. Однако в этом разделе для CONFIG_EXTRA_ENV_SETTINGS я вижу такие вещи, как: loadaddr=@nstart@\0 Знаете ли вы, где установлены эта 'nstart' и другие подобные переменные? Я бы предпочел не просто заменить их числом, если есть лучший способ. - person KyleL; 17.12.2013
comment
Текущий u-boot, похоже, не имеет board-vendor.h, и я не распознаю синтаксис переменной @nstart, извините. - person Joe Kul; 17.12.2013
comment
Это должно быть что-то конкретное для моего комплекта (Avnet Zedboard с использованием Xilinx Petalinux). Спасибо за помощь! - person KyleL; 17.12.2013

Чтобы использовать переменные по умолчанию, не удаляя их из флэш-памяти, выполните

env default -a

в u-boot, а затем выполните $bootcmd. Решение Джо Кула.

Чтобы удалить переменные из флэш-памяти SPI, выполните

run eraseenv

в u-boot, а затем перезагрузите компьютер.

person Joshua    schedule 27.06.2017
comment
Обратите внимание, что сначала необходимо определить run eraseenv, а точнее eraseenv. Это не стандартная команда. denx.de/wiki/publish/DULG/to-delete/ - person Catalin; 05.04.2021
comment
@Catalin Хорошо, среда разработки Zynq от Xilinx определила ее, и я не знаю, как далеко она идет по пищевой цепочке. - person Joshua; 06.04.2021

eraseenv в моем случае не определено. Согласно ответу @Joshua, я считаю, что следующая команда делает то, что делает eraseenv.

env default -a
saveenv
person Iceberg    schedule 29.05.2021