Anpassbarer Bootloader für STM32 -Mikrocontroller. Dieses Projekt enthält Demonstrationen für verschiedene Hardware, wie die In-Application-Programmierung einer Firmware auf einer externen SD-Karte mit FAT32-Dateisystem durchgeführt wird.
Jedes Beispiel verwendet dieselbe Bootloader-Bibliothek im lib/stm32-bootloader Ordner. Die Beispiele befinden sich im Ordner projects und sind mit einer separaten, dedizierten ReadMe -Datei mit Beschreibung im Zusammenhang mit dieser spezifischen Implementierung geliefert.
UPDATE: Das Beispiel für STM32L496-Discovery unterstützt neben IAR Ewarm zusätzlich zu IAR Ewarm das Zusammenstellen und Erstellen des Projekts mit dem GNU Arm Embedded Toolchain (ARM GCC). Weitere Informationen finden Sie im Projekt Readme.
Weitere Informationen finden Sie unter https://akospasztor.github.io/stm32-bootloader, um die vollständige Dokumentation des Quellcodes der Bootloader-Bibliothek zu erhalten.
Repository
├── docs
├── drivers
│ ├── CMSIS
│ └── STM32L4xx_HAL_Driver
├── lib
│ ├── fatfs
│ └── stm32-bootloader
└── projects
├── STM32L476-CustomHw
├── STM32L496-CustomHw
└── STM32L496-Discovery
Der docs Ordner enthält die generierte Dokumentation des Bootloader-Quellcodes und anderer statischer Dateien im Dokumentation.
Der drivers enthält den CMSIS (Cortex Microcontroller Software Interface Standard) sowie die Treiber für HAL (Hardware Abstraktion) von ST.
Der Bootloader-Quellcode und die entsprechende Header-Datei finden Sie im Ordner lib/stm32-bootloader . Zusätzlich enthält der lib -Ordner auch die FATFS -Bibliothek.
Die verschiedenen Demonstrationen befinden sich im projects . Jedes Beispielprojekt enthält einen include und source , in dem sich die Header- und Quelldateien befinden. Die Compiler- und SDK-spezifischen Dateien befinden sich in ihren jeweiligen Unterordnern. Darüber hinaus verfügt jedes Beispielprojekt über eine dedizierte Readme -Datei, in der seine Funktionalität im Detail erläutert wird.
Dieses Repository enthält die folgenden Beispiele.
| Mikrocontroller | Hardware | Projektweg |
|---|---|---|
| STM32L476VG | Brauch | Projekte/STM32L476-CUSTOMHW |
| STM32L496VG | Brauch | Projekte/STM32L496-CUSTOMHW |
| STM32L496AG | 32l496gdiscovery | Projekte/STM32L496 Discovery |
Der Bootloader kann leicht angepasst und auf die erforderliche Hardware und Umgebung zugeschnitten werden, dh zur Durchführung von Firmware-Updates über verschiedene Schnittstellen oder sogar die Implementierung von OTA-Updates (OTA), wenn die Hardware drahtlose Kommunikationsmodule enthält. Um eine erfolgreiche In-Application-Programmierung durchzuführen, muss die folgende Sequenz aufbewahrt werden:
Bootloader_Init() .Bootloader_Erase() löschen.Bootloader_FlashBegin() aufrufen.Bootloader_FlashNext() wiederholt aufrufen. Für die Programmiervorgangs müssen 8 Bytes von Daten (Doppelwort) gleichzeitig in den Blitz programmiert werden. Diese Funktion erhöht automatisch die Adresse, in der die Daten geschrieben werden.Bootloader_FlashEnd() .Das Anwendungsbild muss im binären Format sein. Wenn die Überprüfung der Prüfsummen aktiviert ist, muss die Binärdatei am Ende des Bildes den Schecksummesser -Wert enthalten. Beim Erstellen des Anwendungsbildes muss die Prüfsumme über das gesamte Bild (mit Ausnahme des Prüfsummenbereichs) mit den folgenden Parametern berechnet werden:
Wichtige Anmerkungen :
system_stm32xxxx.c auf 0x0000 fest. Dies muss entweder deaktiviert werden (der Bootloader kann so konfiguriert werden, dass der Umzug der Vektortabelle vor dem Sprung ausführt) oder das Vektor -Offset -Register (VTOR) auf den entsprechenden Offsetwert manuell festlegen, der die Startadresse des Anwendungsraums darstellt. Weitere Informationen finden Sie unter [1]. Der Bootloader kann in der Datei bootloader.h weit verbreitet sein. Die Datei enthält detaillierte Kommentare und Beschreibungen, die sich auf die konfigurierbaren Parameter und Definitionen beziehen.
[1] PM0214, "STM32F3-Serie, STM32F4-Serie, STM32L4-Serie und STM32L4+ Serie Cortex®-m4 Programmierhandbuch", http://www.st.com/resource/en/programming_manual/dm00046982.pdf