Actualización del software ARM Cortex M a través del cargador de arranque

1

Deseo actualizar el software que se ejecuta en un nodo que tiene una MCU ARM Cortex M4.

para hacerlo, entiendo que tendré que ejecutar un gestor de arranque en mi TI placa de desarrollo ARM Cortex M4 que puede recibir un archivo binario por el aire y programar cierta sección de flash. Entiendo que la funcionalidad de recibir archivos binarios por aire deberá agregarse a este cargador de arranque.

Esto suena correcto, pero no entiendo cómo se puede lograr esto. ¿Cómo es posible que programe partes del flash en la MCU por la misma MCU?

¿Necesito hardware adicional para actualizar el software que se ejecuta en mi nodo? Todo lo que quiero hacer para actualizar el software que se ejecuta en mi nodo por aire. Se puede descargar una multa binaria a través de HSDPA. Para facilitar las pruebas puedo hacer esto a través de Ethernet.

Apreciaría muchísimo si alguien pudiera elaborar cómo se realiza este proceso en un formato más detallado para que yo pueda entender el procedimiento. Muchas gracias.

    
pregunta Dina

2 respuestas

4

De hecho, es bastante fácil, hay varios métodos. Resalté una en este hilo .

Básicamente, tendrá dos piezas de software separadas ejecutándose. Considere la siguiente configuración (es solo un ejemplo):

  • Bootloader (dirección de flash 0x0000 - 0x1000)
  • Aplicación (dirección Flash 0x1000 - 0x2000)

(por supuesto, eso depende de sus requisitos)

Ahora, la aplicación descargará el binario (lo llamaremos FW 2.0). Establecerá un bit especial en su controlador y realizará un reinicio. Su CPU siempre comienza en la dirección 0x0000, cargará su gestor de arranque. Su gestor de arranque comprueba si el bit "especial" está establecido y luego mostrará el archivo binario para que se dirija a 0x1000-0x2000. Luego se restablecerá ese bit especial, lo que indica que no hay nuevo firmware disponible. Luego se reiniciará de nuevo. Ahora, nuevamente, el cargador de arranque se inicia: detectará que el bit especial no está configurado y no hace nada, sino que simplemente realiza un salto a la aplicación (0x1000) desde donde se ejecutará el programa (ahora con el nuevo firmware).

También es posible que desee incluir una opción para ejecutar un firmware predeterminado o para cargar un firmware a través de UART en caso de que su aplicación no se pueda escribir correctamente o se pierda energía durante la actualización.

    
respondido por el Tom L.
0

Por lo general, no puede escribir en la misma página que está ejecutando, flash se divide en segmentos, páginas y bloques, las direcciones se deben detallar en la hoja de datos para ese procesador específico. Para moverse posiblemente, si el procesador es compatible, puede ejecutar desde la memoria. Cuando diseñe su gestor de arranque, siempre debe tener en cuenta los escenarios de falla de energía, es decir, cómo sabe que la bandeja se descargó y se escribió en su totalidad para flashear sin ningún error, y si no lo hace, cómo se recupera.

    
respondido por el Anon

Lea otras preguntas en las etiquetas