Architecture logicielle des systèmes embarqués : C++, FreeRTOS et méthodologie de développement firmware
Conception de firmwares robustes, réutilisables et maintenables sur microcontrôleurs STM32
Formation créée le 09/03/2026. Dernière mise à jour le 12/03/2026.Version du programme : 1
Type de formation
PrésentielDurée de formation
35 heures (5 jours)Accessibilité
OuiArchitecture logicielle des systèmes embarqués : C++, FreeRTOS et méthodologie de développement firmware
Conception de firmwares robustes, réutilisables et maintenables sur microcontrôleurs STM32
Cette formation vise à structurer et professionnaliser le développement de firmwares embarqués sur microcontrôleurs STM32 en combinant C++ moderne, FreeRTOS et des méthodologies de développement adaptées aux petites équipes techniques. La première partie est consacrée à la conception de firmwares robustes et maintenables, en abordant les bonnes pratiques C++, la structuration des couches logicielles (drivers, middleware, application) et la gestion du multitâche avec FreeRTOS. La seconde partie traite de l’industrialisation du développement firmware, notamment la réutilisation de blocs logiciels (drivers, bibliothèques), l’organisation des projets, les bonnes pratiques Git et l’amélioration de la qualité logicielle (tests, debug, gestion des versions). La formation s’appuie sur des exemples concrets afin de permettre une application directe dans les projets des participants.
Objectifs de la formation
- Concevoir l’architecture logicielle complète d’un firmware embarqué sur microcontrôleur STM32 en structurant les couches HAL, drivers, middleware et application.
- Développer des drivers matériels modulaires en C++ permettant l’abstraction du matériel et la réutilisation des composants logiciels entre plusieurs projets.
- Mettre en œuvre une architecture multitâche robuste sous FreeRTOS, incluant :gestion des tâches, synchronisation inter-tâches (queues, mutex, event groups), gestion des priorités et du temps réel.
- Mettre en place une organisation logicielle permettant la réutilisation de bibliothèques internes, avec une gestion propre des dépendances et du versionnement.
- Utiliser les outils de développement collaboratif (Git, gestion des branches, revue de code) pour améliorer la qualité et la maintenabilité des firmwares.
- Améliorer la qualité et la fiabilité des firmwares à l’aide de techniques de debug avancé, d’analyse de performance et d’introduction de tests logiciels.
Profil des bénéficiaires
- Ingénieurs et développeurs systèmes embarqués
- Connaissances en programmation C ou C++ appliquée aux systèmes embarqués.
- Expérience de développement sur microcontrôleurs (ex. STM32) et utilisation d’un environnement de développement embarqué.
Contenu de la formation
1- C++ moderne pour systèmes embarqués (3,5h) Principes d’utilisation de C++ dans un contexte microcontrôleur
- Principes d’utilisation de C++ dans un contexte microcontrôleur
- Rappels sur les différences C / C++ en embarqué
- Encapsulation et abstraction matérielle
- Classes et interfaces pour drivers matériels
- Gestion mémoire en environnement contraint
- Utilisation maîtrisée des templates et inline
- Bonnes pratiques C++ pour firmware embarqué
- Organisation des fichiers et interfaces publiques
2- Conception de drivers et abstraction matérielle (3,5 h) Architecture des drivers matériels réutilisables :
- Séparation HAL / drivers / application
- Conception de drivers indépendants du matériel cible
- Interfaces génériques pour périphériques (UART, SPI, I2C)
- Gestion des dépendances entre modules
- Gestion des interruptions et callbacks
- Exemples de drivers modulaires
3. Architecture logicielle des firmwares embarqués (3,5 h) Structuration globale d’un firmware :
- Organisation des couches logicielles
- Architecture modulaire par fonctionnalités
- Gestion des dépendances entre modules
- Patterns utiles en systèmes embarqués
4. Audit d’un firmware existant et analyse d’architecture (3,5 h) Analyse critique d’un projet réel :
- Identification de l’architecture existante
- Analyse des dépendances logicielles
- Identification de la dette technique
- Identification des modules réutilisables
- Proposition d’améliorations d’architecture
- Discussion collective autour des bonnes pratiques
5. Introduction et maîtrise de FreeRTOS (3,5 h) Principes des systèmes temps réel :
- Fonctionnement d’un RTOS
- Scheduler et gestion des priorités
- Création et gestion des tâches
- Gestion de la mémoire RTOS
- Synchronisation entre tâches
6. Conception d’architectures multitâches robustes (3,5 h) Conception d’un firmware multitâche robuste :
- Communication inter-tâches
- Queues
- Mutex
- Sémaphores
- Event groups
- Gestion des ressources partagées
- Gestion des erreurs et watchdog
- Détection des stack overflow
- Architecture typique d’un firmware multitâche
7. Réutilisation et mutualisation de bibliothèques logicielles (3,5 h) Industrialisation du code :
- Structuration de bibliothèques internes
- Gestion des versions des bibliothèques
- Mutualisation des drivers entre projets
- Organisation multi-projets
- Gestion des dépendances logicielles
8. Organisation des projets et gestion collaborative avec Git (3,5 h) Utilisation de Git dans un contexte embarqué :
- Organisation des dépôts firmware
- Stratégies de branches (feature, release, hotfix)
- Revue de code
- Bonnes pratiques de collaboration
- Organisation d’une base de code partagée
9. Debug avancé et analyse de performance des firmwares (3,5 h) Utilisation avancée des outils de debug :
- Debug J-Link avancé
- Analyse des variables et mémoire
- Profiling et analyse des performances
- Détection des blocages et deadlocks
10. Qualité logicielle, tests et gestion des releases firmware (3,5 h) Amélioration de la qualité firmware :
- Introduction aux tests logiciels en embarqué
- Validation fonctionnelle et tests automatisés
- Gestion des versions firmware
- Génération des livrables binaires
- Bonnes pratiques de release pour la production
Équipe pédagogique
Suivi de l'exécution et évaluation des résultats
- Feuilles de présence
- Auto-positionnement du bénéficiaire sur les objectifs pédagogiques avant la formation afin de personnaliser le contenu pédagogique
- Auto-positionnement du bénéficiaire sur les objectifs pédagogiques de la formation en fin de formation pour évaluer sa progression
- Évaluation de l'atteinte des objectifs du bénéficiaire par le formateur en fin de formation
- Certificat de réalisation de la formation remis en fin de parcours
Ressources techniques et pédagogiques
- Supports de formation et exemples de code commentés
- Études de cas et exercices pratiques basés sur des firmwares réels
Qualité et satisfaction
Capacité d'accueil
Accessibilité
Les situations de handicap seront étudiées au cas par cas.