Arduino выпускает безопасный загрузчик на основе MCUboot

Arduino выпустила новый загрузчик на основе MCUBoot, чтобы увеличить набор функций и безопасность прошивки продуктов Arduino, причем первый выпуск предназначен для плат Arduino Portenta и Nicla Vision на базе STM32H7 из семейства Arduino Pro.

Релиз ориентирован на платы на базе ОС Arduino Mbed, но MCUboot не зависит от ОС и также должен работать с Zephyr , Nuttx и Apache mynewt. Компания также позаботилась о том, чтобы переход был простым, и повторно использовала существующий процесс обновления прошивки OTA на платах Arduino.

Особенности MCUboot Arduino:

  • Подписанные и зашифрованные обновления — MCUboot поддерживает шифрование/дешифрование изображений «на лету» во время обновления. Он также проверит, соответствует ли вычисленная подпись той, которая встроена в образ, перед загрузкой скетча.
  • Подтвердить или отменить обновления — после обновления новый Sketch может обновить содержимое флэш-памяти во время выполнения, чтобы быть получить пометку «ОК». Если все работает так, как ожидалось, изменение будет постоянным, но если скетч не подтвердит, что он работал правильно, MCUboot выполнит обратный обмен и попытается загрузить старый скетч.
  • Начальная загрузка Sketch — если в основном слоте не найдено допустимое изображение, MCUboot будет искать допустимое изображение во вторичном слоте и, если таковое имеется, загрузит его в основной слот.
  • Восстановление сброса — если сброс происходит в середине операции подкачки, два образа во флэш-памяти могут быть несмежными. MCUboot восстанавливается из этого состояния, используя трейлеры образов, чтобы определить, как части образа распределяются во флэш-памяти, и перезапуская подкачку.
  • Обратная совместимость с загрузчиком Arduino по умолчанию. Если ключи подписи и шифрования не хранятся во флэш-памяти вместе с MCUboot, проверка подписи скетча пропускается и можно загрузить любой действительный скетч.
Раздел прошивки в платах Portenta H7

Arduino подробно описывает механизм обновления прошивки в сообщении блога, анонсирующем новый загрузчик. По сути, есть два слота: СЛОТ 0 представляет собой часть флэш-памяти, содержащую текущий образ приложения, а СЛОТ 1 представляет часть флэш-памяти, содержащую обновленный образ приложения. Также имеется дополнительная флэш-область «SCRATCH», необходимая для поддержки алгоритма MCUboot swap swap. На платах Portenta H7 раздел SLOT 0 находится во внутренней флэш-памяти, а разделы/файлы SLOT 1 (update.bin) и SCRATCH (scratch.bin) находятся во флэш-памяти QSPI.

Вы найдете код и более подробную информацию на Github, в частности, пошаговые инструкции (обновление эскиза, генерация ключа шифрования, подписание прошивки и т. д.) для переключения на загрузчик Arduino MCUboot для владельцев Portenta H7, Portenta H7 Lite , Portenta H7 Lite Connected или Nicla Vision.

Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments