Para aumentar a gama de recursos e segurança de firmware dos produtos, a Arduino lançou um novo bootloader baseado em MCUBoot.
MCUboot é um bootloader seguro para microcontroladores que define uma infra-estrutura comum para o bootloader e o layout flash do sistema em sistemas de microcontroladores, e fornece um bootloader seguro que permite fácil atualização de software.
O MCUboot não depende de nenhum sistema operacional e hardware específico e depende de camadas de portabilidade de hardware do sistema operacional com o qual trabalha.
E, agora, a Arduino lançou um novo bootloader baseado em MCUBoot para aumentar a gama de recursos e segurança de firmware dos produtos Arduino, com o primeiro lançamento direcionado às placas Arduino Portenta e Nicla Vision baseadas em STM32H7 da família Arduino Pro.
Arduino lançou um novo bootloader baseado em MCUBoot
O lançamento se concentra em placas baseadas no Arduino Mbed OS, mas o MCUboot é independente do sistema operacional e também deve funcionar com Zephyr, Nuttx e Apache mynewt.
A empresa também garantiu que a transição seja fácil e reutilizou o processo de atualização de firmware OTA existente nas placas Arduino.
Destaques do MCUboot Arduino:
- Atualizações assinadas e criptografadas – MCUboot tem suporte para criptografar/descriptografar imagens em tempo real durante a atualização. Ele também verificará se a assinatura computada está de acordo com a incorporada na imagem antes de inicializar um esboço.
- Confirmar ou reverter atualizações – Após uma atualização, o novo Sketch pode atualizar o conteúdo do flash em tempo de execução para se marcar como OK. Se tudo funcionar conforme o esperado, a mudança será permanente, mas se o esboço não confirmar se funcionou corretamente, o MCUboot realizará uma troca de reversão e tentará inicializar o esboço antigo.
- Sketch bootstrap – Se nenhuma imagem válida for encontrada no slot primário, o MCUboot procurará uma imagem válida no slot secundário e, se houver, a carregará dentro do slot primário.
- Recuperação de redefinição – Se ocorrer uma redefinição no meio de uma operação de troca, as duas imagens podem ser descontínuas no flash. O MCUboot se recupera dessa condição usando os trailers de imagem para determinar como as partes da imagem são distribuídas em flash e reiniciando a troca.
- Compatibilidade retroativa com o bootloader padrão do Arduino – Se as chaves de assinatura e criptografia não forem armazenadas em flash junto com o MCUboot, a verificação da assinatura do esboço será ignorada e qualquer esboço válido poderá ser inicializado.
- Flash interno do Arduino MCUboot Flash QSPI
- Partição de firmware em placas Portenta H7
O Arduino entra em detalhes sobre o mecanismo de atualização de firmware na postagem do blog anunciando o novo bootloader.
Basicamente, existem dois slots com SLOT 0 representando a parte do flash que contém a imagem do aplicativo atual e o SLOT 1 representando a parte do flash que contém a imagem do aplicativo atualizada.
Há também uma área flash adicional “SCRATCH” necessária para suportar o algoritmo de rascunho de troca do MCUboot.
Nas placas Portenta H7, a partição SLOT 0 está no flash interno, enquanto as partições/arquivos SLOT 1 (update.bin) e SCRATCH (scratch.bin) serão encontradas no flash QSPI.
Você encontrará o código e mais detalhes no Github, principalmente instruções passo a passo (esboço de atualização, geração de chave de criptografia, assinatura de firmware, etc.) Placas Lite, Portenta H7 Lite Connected ou Nicla Vision.