Chargeur de démarrage personnalisable pour les microcontrôleurs STM32. Ce projet comprend des démonstrations pour divers matériel comment effectuer la programmation en application d'un micrologiciel situé sur une carte SD externe avec un système de fichiers FAT32.
Chaque exemple utilise la même bibliothèque Bootloader située dans le dossier lib/stm32-bootloader . Les exemples sont situés dans le dossier projects et ils sont livrés avec un fichier de lecture dédié séparé avec description liée à cette implémentation spécifique.
MISE À JOUR: L'exemple STM32L496-Discovery prend en charge la compilation et la construction du projet avec la chaîne d'outils intégrée GNU ARM (ARM GCC), en plus d'Iar Ewarm. Consultez le projet Readme pour plus d'informations.
Veuillez vous référer à https://akospasztor.github.io/stm32-bootloader pour une documentation complète du code source de la bibliothèque de bootloader.
Repository
├── docs
├── drivers
│ ├── CMSIS
│ └── STM32L4xx_HAL_Driver
├── lib
│ ├── fatfs
│ └── stm32-bootloader
└── projects
├── STM32L476-CustomHw
├── STM32L496-CustomHw
└── STM32L496-Discovery
Le dossier docs contient la documentation générée du code source du chargeur de démarrage et d'autres fichiers statiques liés à la documentation.
Le dossier drivers contient la norme d'interface logicielle CMSIS (Cortex Microcontroller Interface) ainsi que les pilotes HAL (calque d'abstraction matérielle) de ST.
Le code source de chargeur de démarrage et le fichier d'en-tête correspondant se trouvent dans le dossier lib/stm32-bootloader . De plus, le dossier lib contient également la bibliothèque FATFS.
Les diverses démonstrations résident dans le dossier projects . Chaque exemple de projet contient un dossier include et source où les fichiers d'en-tête et source sont situés respectivement. Le compilateur et les fichiers spécifiques au SDK sont situés dans leurs sous-dossiers respectifs. De plus, chaque exemple de projet a un fichier de réadme dédié expliquant ses fonctionnalités en détail.
Ce référentiel contient les exemples suivants.
| Microcontrôleur | Matériel | Path du projet |
|---|---|---|
| STM32L476VG | Coutume | Projets / STM32L476-CustomHw |
| STM32L496VG | Coutume | Projets / STM32L496-CustomHw |
| STM32L496AG | 32l496gdiscovery | Projets / STM32L496 Discovery |
Le chargeur de démarrage peut être facilement personnalisé et adapté au matériel et à l'environnement requis, c'est-à-dire pour effectuer des mises à jour du micrologiciel sur diverses interfaces ou même pour implémenter des mises à jour en direct (OTA) si le matériel intègre des modules de communication sans fil. Afin d'effectuer une programmation réussie de l'application, la séquence suivante doit être conservée:
Bootloader_Init() .Bootloader_Erase() .Bootloader_FlashBegin() .Bootloader_FlashNext() . La procédure de programmation nécessite que 8 octets de données (double mot) soient programmés immédiatement dans le flash. Cette fonction augmente automatiquement l'adresse où les données sont en cours d'écriture.Bootloader_FlashEnd() .L'image d'application doit être en format binaire. Si la vérification de la somme de contrôle est activée, le binaire doit inclure la valeur de somme de contrôle à la fin de l'image. Lors de la création de l'image d'application, la somme de contrôle doit être calculée sur l'ensemble de l'image (à l'exception de la zone de somme de contrôle) avec les paramètres suivants:
Remarques importantes :
system_stm32xxxx.c par défaut. Cela doit être désactivé (le chargeur de démarrage peut être configuré pour effectuer la relocalisation de la table vectorielle avant le saut) ou définir manuellement le registre de décalage de table vectoriel (VTOR) sur la valeur de décalage appropriée qui est l'adresse de début de l'espace d'application. Pour plus d'informations, veuillez vous référer à [1]. Le chargeur de démarrage peut être largement configuré dans le fichier bootloader.h . Le fichier comprend des commentaires et des descriptions détaillés liés aux paramètres et définitions configurables.
[1] PM0214, "STM32F3 Series, STM32F4 Series, STM32L4 Série et STM32L4 + série Cortex®-M4 Programming Manual", http://www.st.com/resource/en/programming_manual/dm00046982.pdf