Em desenvolvimento, observe: este firmware está atualmente em fase de desenvolvimento. Os recursos podem mudar e o código pode conter erros. Use com cautela e relate todos os problemas que você encontrar.
Este carregador de inicialização para o microcontrolador STM32 fornece uma solução rica e rica em recursos para atualizações de firmware. O bootloader foi projetado para facilitar as atualizações de firmware através das interfaces USB ou UART internas, utilizando um flash SPI externo para armazenar o firmware temporariamente.

Armazenamento de firmware de slot duplo: o carregador de inicialização gerencia dois slots separados em flash SPI externo para armazenar diferentes versões de firmware. Isso permite atualizações seguras de firmware com capacidade de reversão.
Rolução de firmware: No caso de uma falha de atualização, o carregador de inicialização pode reverter para o firmware de trabalho anterior, garantindo que o dispositivo permaneça operacional.
Validação do CRC32: Cada firmware armazenado no flash SPI é validado usando verificações do CRC32 para garantir que a integridade dos dados e impedir que o firmware corrompido seja executado.
Armazenamento criptografado: o carregador de inicialização mantém todos os dados de firmware armazenados em flash SPI de forma criptografada, aumentando a segurança contra o acesso não autorizado.
Gerenciamento de versão: o bootloader pode relatar a versão atual do firmware, ajudando a manter e rastrear as versões do firmware implantadas no dispositivo.
Script Python externo: Um script Python é fornecido para ajudar no carregamento do novo firmware no dispositivo. Esse script também facilita o relatório da versão e outras operações relacionadas ao carregador de inicialização.
FW FILE ) e anexa metadados cruciais como versão do firmware, nome do firmware, ID do firmware, tempo de construção e data do arquivo de saída ( BIN FILE ).Lock Bin combina essas entradas com o arquivo de firmware e criptografa o pacote para garantir sua segurança durante a transmissão.BIN FILE ) que contém com segurança o firmware criptografado junto com os metadados incorporados..fw criptografado e criptografado que contém todos os metadados, incluindo o tempo e a data de construção.Host App é responsável por transmitir o arquivo de firmware criptografado para o microcontrolador..fw criptografado, extrai os metadados necessários para fins de registro ou validação e estabelece uma conexão com o microcontrolador por meio de uma porta COM (por exemplo, USB/UART).Host App via USB/UART. Este pipeline lida com segurança de atualizações de firmware, garantindo a integridade do processo da criptografia à instalação. A adição de tempo de construção e data no arquivo .fw oferece mais rastreabilidade para cada versão do firmware.
Clone este repositório:
git clone https://github.com/mayankpatel97/STM32-SPIFLASH-UART-BOOTLOADER.git
cd STM32-SPIFLASH-UART-BOOTLOADERConfigure o carregador de inicialização usando o seu IDE preferido (por exemplo, STM32Cubeide) ou via linha de comando.
Crie o projeto do bootloader e pisque -o no seu microcontrolador STM32.
Conecte seu dispositivo STM32 ao seu computador via USB ou UART.
Execute o script Python fornecido para carregar um novo firmware:
python firmware_loader.py --port /dev/ttyUSB0 --file firmware.binO script lidará automaticamente com a transferência, validação e gerenciamento de versão.
Depois que o firmware for carregado com sucesso, o bootloader executará uma verificação do CRC16 e inicializará no novo firmware ou reverterá para a versão anterior se um erro for detectado.
No caso de um problema com o firmware recém -carregado, o carregador de inicialização reverte automaticamente para o firmware anterior armazenado no outro slot, garantindo que o dispositivo permaneça operacional.
Para verificar a versão do firmware atualmente em execução, use o seguinte comando:
python firmware_loader.py --port /dev/ttyUSB0 --versionEste projeto está licenciado sob a licença do MIT - consulte o arquivo de licença para obter detalhes.
Sinta -se à vontade para contribuir com este projeto, enviando solicitações de tração ou abrindo problemas para qualquer bugs ou solicitações de recursos.
Agradecimentos especiais à comunidade de código aberto por fornecer ferramentas e bibliotecas que ajudaram no desenvolvimento deste carregador de inicialização.