Arduino lanza gestor de arranque basado en MCUboot

Arduino ha lanzado un nuevo gestor de arranque basado en MCUBoot para aumentar la gama de características y la seguridad del firmware de los productos Arduino, con el primer lanzamiento dirigido a STM32H7 basado en Arduino Portenta y Nicla Vision placas de la Familia Arduino Pro.

El lanzamiento se centra en placas basadas en Arduino Mbed OS, pero MCUboot es independiente del sistema operativo y también debería funcionar con Zephyr, Nuttx y Apache mynewt. La compañía también se aseguró de que la transición sea fácil y reutilizó el proceso de actualización de firmware OTA existente en las placas Arduino.

Arduino MCUboot

Aspectos destacados de MCUboot Arduino:

  • Actualizaciones firmadas y cifradas: MCUboot es compatible con el cifrado/descifrado de imágenes sobre la marcha durante la actualización. También comprobará si la firma calculada coincide con la incrustada en la imagen antes de iniciar un boceto.
  • Confirmar o revertir actualizaciones: después de una actualización, el nuevo Sketch puede actualizar el contenido del flash en el tiempo de ejecución para marcarse como correcto. Si todo funciona como se esperaba, el cambio será permanente, pero si el boceto no confirma que funcionó correctamente, MCUboot realizará un intercambio de reversión e intentará iniciar el boceto anterior.
  • Sketch bootstrap: si no se encuentra una imagen válida en la ranura principal, MCUboot buscará una imagen válida en la ranura secundaria y, si hay alguna, la cargará dentro de la ranura principal.
  • Recuperación de reinicio: si se produce un reinicio en medio de una operación de intercambio, es posible que las dos imágenes no sean contiguas en la memoria flash. MCUboot se recupera de esta condición utilizando los avances de imagen para determinar cómo se distribuyen las partes de la imagen en flash y reiniciando el intercambio.
  • Compatibilidad con versiones anteriores con el cargador de arranque Arduino predeterminado: si las claves de firma y cifrado no se almacenan en flash junto con MCUboot, se omite la verificación de la firma del boceto y se puede iniciar cualquier boceto válido.
Arduino MCUboot internal flash QSPI flash
partición de firmware en placas Portenta H7

Arduino entra en detalles sobre el mecanismo de actualización del firmware en la entrada del blog anunciando el nuevo gestor de arranque. Básicamente, hay dos ranuras: la RANURA 0 representa la parte de la memoria flash que contiene la imagen de la aplicación actual y la RANURA 1 representa la parte de la memoria flash que contiene la imagen de la aplicación actualizada. También se necesita un área de flash adicional «SCRATCH» para admitir el algoritmo de scratch de intercambio de MCUboot.En las placas Portenta H7, la partición SLOT 0 está en la memoria flash interna, mientras que las particiones/archivos SLOT 1 (update.bin) y SCRATCH (scratch.bin) se encontrarán en la memoria flash QSPI.

Encontrará el código y más detalles en Github, en particular, instrucciones paso a paso (actualizar boceto, cifrado generación de claves, firma de firmware, etc.) para cambiar al cargador de arranque Arduino MCUboot para propietarios de Portenta H7, Portenta H7 Lite, Portenta H7 Lite Connected, o placas Nicla Vision.

Traducido del artículo en inglés «Arduino releases secure bootloader based on MCUboot«.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
StarFive RISC-V SBC