Deseo actualizar el software que se ejecuta en un nodo que tiene un MCU ARM Cortex M4.
para hacerlo, entiendo que tendré que ejecutar un cargador de arranque en mi placa de desarrollo TI ARM Cortex M4 que pueda recibir un archivo binario por aire y programar cierta sección de flash. Entiendo que la funcionalidad de recibir archivos binarios por aire tendrá que agregarse a este gestor de arranque.
Todo esto suena correcto, pero no entiendo cómo se puede lograr. ¿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 es actualizar el software que se ejecuta en mi nodo de forma inalámbrica. Se puede descargar una multa de contenedor a través de HSDPA. Para facilitar las pruebas, puedo hacerlo a través de Ethernet.
Agradecería mucho si alguien puede explicar cómo se realiza este proceso en un formato más detallado para que pueda entender el procedimiento. Muchas gracias.
De hecho, es bastante fácil: hay varios métodos. Describí uno en este hilo .
Básicamente, tendrá dos piezas separadas de software ejecutándose. Considere la siguiente configuración (es solo un ejemplo):
(por supuesto, esos dependen 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 cargador de arranque verifica si el bit "especial" está configurado y luego mostrará el archivo binario en la dirección 0x1000-0x2000. Luego restablecerá ese bit especial, lo que indica que no hay nuevo firmware disponible. A continuación, se reiniciará de nuevo. Ahora, nuevamente, el cargador de arranque se inicia: detectará que el bit especial NO está configurado y no hará nada más que simplemente realizar 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 la energía durante la actualización.
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 deben estar detalladas en la hoja de datos para ese procesador específico. Para moverse posiblemente, si el procesador lo admite, puede ejecutar desde la memoria. Cuando diseñe su cargador de arranque, siempre debe tener en cuenta los escenarios de fallas de energía, es decir, cómo sabe que el contenedor se descargó y se escribió en su totalidad para flashear sin ningún error, qué pasa si no lo hace, cómo se recupera.
Denis
Denis
tom l
tom l
Denis