SWUpdate несколько разделов Bootenv
Я использую SWUpdate для обновления различных версий оборудования одного и того же устройства с помощью стратегии двойного копирования. Окружение загрузчика всех этих выглядит очень похоже. Тем не менее, я должен установить загрузочный раздел mmc в зависимости от активной копии и загрузочный_файл в зависимости от версии оборудования. Чтобы сохранить sw-description-файл как можно более полным и облегчить его обслуживание, я хотел бы установить "базовую" загрузочную среду для всех устройств на первом шаге и на втором шаге перезаписать некоторые переменные в зависимости от аппаратного обеспечения. ревизия и активная копия:
software =
{
version = "1.1";
hardware-compatibility = ["0.1","1.0"];
device1=
{
copy-1:
{
images:
(
{
filename = "rootfs.ext3.gz";
device = "/dev/mmcblk0p3";
compressed = true;
},
{
filename = "u-boot-env-base"; #basic boot environment
type = "uboot";
}
);
bootenv: # device-specific boot variables
(
{
name = "boot_file"
value = "uImage1"
},
{
name = "mmcpart";
value = "3";
}
);
}
}
}
При синтаксическом анализе сообщается обо всех средах загрузчика, но применяется только одна или обе, но в неправильном порядке, потому что при проверке через fw_printenv
"u-boot-env-base" не изменяется.
я использую
SWUpdate v2018.11.0
U-Boot 2018.09.
Я чувствую, что у меня это работало в более старой установке (SWUpdate 2016).
0 ответов
Я обратился к списку рассылки с этим вопросом. Стефано Бабич (Stefano Babic), разработчик и сопровождающий SWUpdate, ответил на мой вопрос.
Я описал желаемое поведение. Не предусмотрено устанавливать переменные загрузчика дважды во время обновления. Переменные u-boot, определенные в файле, имеют приоритет над парами имя-значение u-boot в разделе bootenv, поскольку файл обрабатывается в самом конце обновления. Решение в моем случае - установить переменные только в разделе bootenv.