En desarrollo, tenga en cuenta: este firmware se encuentra actualmente en la etapa de desarrollo. Las características pueden cambiar, y el código puede contener errores. Use con precaución e informe cualquier problema que encuentre.
Este gestor de arranque para el microcontrolador STM32 proporciona una solución robusta y rica en funciones para actualizaciones de firmware. El cargador de arranque está diseñado para facilitar las actualizaciones de firmware a través de las interfaces internos USB o UART, utilizando un flash SPI externo para almacenar el firmware temporalmente.

Almacenamiento de firmware dual de ranuras: el gestor de arranque gestiona dos ranuras separadas en Flash SPI externo para almacenar diferentes versiones de firmware. Esto permite actualizaciones seguras de firmware con capacidad de reversión.
Rodal de firmware: en el caso de una falla de actualización, el cargador de arranque puede volver al firmware de trabajo anterior, asegurando que el dispositivo permanezca operativo.
Validación CRC32: cada firmware almacenado en el SPI Flash se valida utilizando comprobaciones de CRC32 para garantizar la integridad de los datos y evitar que se ejecute el firmware corrupto.
Almacenamiento cifrado: el gestor de arranque mantiene todos los datos de firmware almacenados en SPI Flash en forma cifrada, mejorando la seguridad contra el acceso no autorizado.
Administración de versiones: el gestor de arranque puede informar la versión de firmware actual, ayudando a mantener y rastrear las versiones de firmware implementadas en el dispositivo.
Script de Python externo: se proporciona un script de Python para ayudar a cargar un nuevo firmware en el dispositivo. Este script también facilita los informes de versión y otras operaciones relacionadas con el gestor de arranque.
FW FILE ) y adjunta metadatos cruciales como la versión de firmware, el nombre del firmware, la ID de firmware, el tiempo de compilación y la fecha en el archivo de salida ( BIN FILE ).Lock Bin combina estas entradas con el archivo de firmware y cifra el paquete para garantizar su seguridad durante la transmisión.BIN FILE ) que contiene de forma segura el firmware cifrado junto con los metadatos integrados..fw seguro y encriptado que contiene todos los metadatos, incluida la hora y la fecha de compilación.Host App es responsable de transmitir el archivo de firmware cifrado al microcontrolador..fw cifrado, extrae los metadatos necesarios para fines de registro o validación, y establece una conexión con el microcontrolador a través de un puerto COM (por ejemplo, USB/UART).Host App a través de USB/UART. Esta tubería maneja las actualizaciones de firmware de forma segura, asegurando la integridad del proceso desde el cifrado hasta la instalación. La adición de la hora y la fecha de compilación en el archivo .fw ofrece una mayor trazabilidad para cada versión de firmware.
Clon este repositorio:
git clone https://github.com/mayankpatel97/STM32-SPIFLASH-UART-BOOTLOADER.git
cd STM32-SPIFLASH-UART-BOOTLOADERConfigure el cargador de arranque utilizando su IDE preferido (por ejemplo, STM32Cubeide) o mediante la línea de comando.
Construya el proyecto del gestor de arranque y flashearlo en su microcontrolador STM32.
Conecte su dispositivo STM32 a su computadora a través de USB o UART.
Ejecute el script Python proporcionado para cargar un nuevo firmware:
python firmware_loader.py --port /dev/ttyUSB0 --file firmware.binEl script manejará automáticamente la administración de transferencia, validación y versión.
Una vez que el firmware se cargue correctamente, el gestor de arranque realizará una verificación CRC16 y arrancará en el nuevo firmware o volverá a la versión anterior si se detecta un error.
En caso de un problema con el firmware recién cargado, el cargador de arranque se vuelve automáticamente al firmware anterior almacenado en la otra ranura, asegurando que el dispositivo permanezca operativo.
Para verificar la versión de firmware actualmente en ejecución, use el siguiente comando:
python firmware_loader.py --port /dev/ttyUSB0 --versionEste proyecto tiene licencia bajo la licencia MIT; consulte el archivo de licencia para obtener más detalles.
Siéntase libre de contribuir a este proyecto enviando solicitudes de extracción o problemas de apertura para cualquier error o solicitud de funciones.
Un agradecimiento especial a la comunidad de código abierto por proporcionar herramientas y bibliotecas que ayudaron en el desarrollo de este cargador de arranque.