cargador de arranque personalizado STM32: ¿cómo verificar el firmware?

1

Usando un SDIO / FAT personalizado en el cargador de arranque de la aplicación para un STM32 , ¿es posible saltar desde el cargador de arranque al nuevo firmware a prueba de fallas?

Me gustaría verificar la cordura del nuevo firmware antes de saltar a él y lo ideal sería hacerlo en un entorno de espacio aislado o seguro para tratar las fallas si es necesario. Todos los ejemplos y la documentación que encontré verifican que el firmware se ha colocado correctamente en la memoria flash y luego saltan a él sin pensarlo dos veces.

    
pregunta user35082

2 respuestas

3

Lo que probablemente estés buscando es un checksum o un hash de toda la imagen de la aplicación.

Supongamos que estarías usando CRC32 ya que es posible que el chip ya tenga soporte de hardware para él.

  1. Después de compilar el firmware, creas la suma de comprobación y lo guardas en un archivo separado.
  2. Transfiera ambos archivos al sistema de archivos.
  3. El cargador de arranque luego lee la imagen del firmware y crea la suma de comprobación una vez más.
  4. Si las sumas de comprobación generadas y almacenadas coinciden, entonces está listo para comenzar.

Lo siento si entendí la pregunta incorrectamente.

    
respondido por el Dzarda
2

Si desea ir un paso más allá y verificar la imagen antes de cada inicio, puede incluir un encabezado en la imagen de la aplicación. El encabezado contiene metainformación sobre la aplicación (nombre, versión, CRC / hash) y una suma de comprobación.

Entonces, usas el siguiente proceso de arranque:

  1. ¿Comprobar si el encabezado es válido?
  2. Compruebe si la imagen CRC coincide con la CRC almacenada en el encabezado.
  3. Si se pasan los cheques, inicie la aplicación.

Uso esto en un STM32 para actualizar la tarjeta SD. Funciona muy bien El encabezado se puede crear utilizando la srecord tool y un pequeño script alrededor.

Para que el proceso sea a prueba de fallas, puede usar una pieza STM32 con dos bancos de flash separados, por lo que escribe el nuevo firmware en el banco de flash inactivo, lo verifica y hace el cambio.

    
respondido por el Manu3l0us

Lea otras preguntas en las etiquetas