ac6-training, un département d'Ac6 SAS
FR
FrançaisEnglish
 
go-up

ac6 ac6-training Programmation Temps réel NXP + FreeRTOS + West
NR3

NXP + FreeRTOS + West

FreeRTOS avec NXP MCUXpresso

Objectifs

  • Comprendre la structure du SDK MCUXpresso (MCUXSDK)
  • Gérer des projets multi-dépôts avec Zephyr West
  • Utiliser Kconfig et prj.conf pour la configuration
  • Créer et intégrer des cartes personnalisées
  • Étendre les projets avec FreeRTOS
  • Obtenir une vue d'ensemble de l'architecture Cortex-M
    • Découvrir les concepts du multitâche temps réel
    • Comprendre les contraintes temps réel
    • Comprendre l'architecture de FreeRTOS
    • Découvrir les différents services et APIs de FreeRTOS
    • Apprendre à développer, déboguer et tracer des applications FreeRTOS
  • Bonnes pratiques pour les grands projets MCUXpresso/FreeRTOS
  • Connaissance du langage C (voir par exemple notre formation L2)
  • Bonne connaissance de Git et des outils en ligne de commande
  • Cours théorique
    • Support de cours au format PDF (en anglais)
    • Le formateur répond aux questions des stagiaires pendant la formation et apporte une assistance technique et pédagogique
  • Activités pratiques
    • Les activités pratiques représentent de 40% à 50% de la durée du cours
    • Code d'exemple, travaux pratiques et solutions
    • Carte NXP MCUX ou carte IMXRT simulée avec Zazu Simulator
  • Tout ingénieur ou technicien en systèmes embarqués possédant les prérequis ci-dessus.
  • Les prérequis sont vérifiés avant l'entrée en formation, sur la base des prérequis publiés sur cette fiche.
  • Pendant la formation, les acquis sont évalués en continu : quiz de fin de séquence et observation directe du formateur.
  • À l'issue de la formation, chaque participant reçoit une attestation de fin de formation.

Plan du cours

  • Structure et composants du SDK
  • Intégration des chaînes d'outils, de CMake et de Ninja
  • Structure d'une application et exemples
  • Présentation
  • Composants et structure d'une application
    • Application
    • Modules
    • Espace de travail West
  • Pourquoi West ? Les problèmes résolus
  • West comme méta-outil : dépôts + commandes
  • Alternatives (sous-modules git, repo) et limitations
  • West
    • Structure de West
    • Utilisation de west
    • Le manifeste West
    • Les commandes West
  • Topologies West
  • Anatomie de west.yml
  • Commandes spécifiques et extensions courantes
    • Init, update, list, config
    • Build, debug, attach, flash
    • Autres commandes courantes
  • Étendre West avec des commandes personnalisées
  • Mise en place des outils hôtes (Git, Python, CMake, Ninja)
  • Intégration de LinkServer, Jlink et d'autres sondes de débogage
  • Flux de travail de débogage avec GDB
  • Intégration VSCode (tâches, sessions de débogage)
  • MCUXpresso pour VSCode
  • Présentation de la suite d'outils de configuration (Pins, Clocks, Peripherals, Device settings)
  • Comment les Config Tools s'intègrent au SDK MCUXpresso et aux builds West
  • Génération du code d'initialisation (pin_mux.c/h, clock_config.c/h, mise en place des périphériques)
  • Utilisation de l'interface graphique pour configurer les GPIO, l'UART et les horloges système
  • Export des fichiers de configuration et réintégration dans les applications
  • Limitations et bonnes pratiques en combinaison avec Kconfig/prj.conf
  • Manifestes personnalisés pour des projets minimaux
  • Écriture de commandes West personnalisées
  • Modification des applications fournies dans l'arborescence (LED blinky)
  • Applications autonomes hors du SDK
  • Ajout de FreeRTOS avec West
  • Projets multicœurs avec Sysbuild
  • Analyse SPDX et contrôle de conformité
  • Empreinte mémoire et analyse Puncover
  • La phase de configuration dans West/CMake
  • Le framework Kconfig :
    • Activation et désactivation de fonctionnalités globales
    • Réglages et compilation conditionnelle
    • Valeurs par défaut et dépendances entre symboles
  • Rôle de prj.conf et des fragments
  • Configuration interactive (menuconfig, guiconfig)
  • Fichiers de configuration générés : .config, mcux_config.h
  • Écriture de nouvelles entrées Kconfig (symboles, menus, valeurs par défaut)
  • Limitations et bonnes pratiques
  • Spécificités du SDK MCUXpresso (préfixes personnalisés, pas de macros CONFIG_)
  • Vue d'ensemble de l'architecture d'une carte
  • Structure et composants d'un portage de carte
  • Création d'une nouvelle définition de carte
  • Configuration des cartes personnalisées
  • Sondes de débogage des cartes
  • Script de l'éditeur de liens
  • Intégration de la carte personnalisée dans le SDK
  • Pourquoi utiliser des modules ?
  • Structure d'un module
  • Module hors arborescence
  • Le YAML du module
  • Le CMakeLists.txt du module
  • Vue d'ensemble de l'architecture Cortex-M
    • Deux pointeurs de pile
    • Différents modes d'exécution et niveaux de privilège
    • Présentation de la MPU
    • Description du timer SysTick
    • Évolutions ARMv8-M
  • Présentation du mécanisme d'exception et d'interruption
    • Présentation de l'entrée en interruption et du retour
    • Présentation des interruptions SVC / PendSV / SysTick
  • Développement avec l'IDE
  • Concepts de base du temps réel
  • Les contraintes temps réel
  • Multitâche et temps réel
  • Tâches et descripteurs de tâche
  • Commutation de contexte
  • Ordonnancement et préemption des tâches
    • Ordonnancement par tick ou tickless
  • Systèmes d'ordonnancement et preuve d'ordonnançabilité
  • L'ordonnancement dans FreeRTOS
  • Le cycle de vie d'une tâche
  • Création de tâches
  • Priorités des tâches
  • États des tâches
  • La tâche idle
  • Temporisations
  • Changement de priorité d'une tâche
  • Destruction de tâches
  • Suspension de tâches
  • Structures du noyau
  • Thread Local Storage
  • Interruptions du noyau sur Cortex-M
  • Traces d'ordonnancement
  • Diagnostic visuel par trace avec Tracealyzer
  • Algorithmes de gestion de la mémoire
  • Schémas d'allocation mémoire fournis par FreeRTOS
    • Schéma allocation seule
    • Best-fit sans fusion des blocs
    • malloc par défaut compatible multitâche
  • Vérification de la mémoire libre restante
  • Ajout d'un allocateur mémoire spécifique à l'application
  • Erreurs de gestion de la mémoire
  • Surveillance de la pile
  • Sections critiques
    • Sections critiques
    • Suspension (verrouillage) du scheduler
  • Exclusion mutuelle
    • Spinlocks et masquage des interruptions
    • Mutex ou sémaphore
    • Mutexes récursifs ou non
    • Le problème de l'inversion de priorité
    • L'héritage de priorité (la réponse automatique)
    • Le plafond de priorité (la réponse par la conception)
  • Tâches gatekeeper
  • Introduction
    • Attente et réveil des tâches
    • Sémaphores
    • Événements
    • Boîtes aux lettres
  • Sémaphores binaires FreeRTOS
  • Gestion des files FreeRTOS
    • Création
    • Envoi dans une file
    • Réception depuis une file
    • Gestion des données
    • Envoi de types composés
    • Transfert de gros volumes de données
  • Ensembles de files
  • Groupes d'événements
  • Notifications de tâche
  • Les problèmes de la programmation parallèle
    • Accès parallèle non contrôlé
    • Interblocages
    • Livelocks
    • Famine
  • Le besoin d'interruptions dans un système temps réel
    • Interruption logicielle
    • Interruptions de temps
    • Interruptions de périphériques
  • Interruptions sur niveau ou sur front
  • Acquittement matériel et logiciel
  • Vectorisation des interruptions
  • Interruptions et ordonnancement
  • Traitement différé des interruptions avec FreeRTOS
    • Tâches synchronisées sur interruption
    • Utilisation des sémaphores dans une ISR
    • Sémaphores à compteur
    • Utilisation des files dans une ISR
  • Traitement des interruptions par FreeRTOS
    • Écriture d'ISR en C
    • Fonctions utilisables sous interruption
    • Imbrication des interruptions
  • La tâche Timer Daemon
  • Configuration des timers
  • Timer one-shot / à rechargement automatique
  • L'API des timers logiciels
Plus d'information

Pour vous enregistrer ou pour toute information supplémentaire, contactez nous par email à l'adresse info@ac6-formation.com.

Les inscriptions aux sessions de formation sont acceptées jusqu'à une semaine avant le début de la formation. Pour une inscription plus tardive nous consulter

Vous pouvez aussi remplir et nous envoyer le bulletin d'inscription

Ce cours peut être dispensé dans notre centre de formation près de Paris ou dans vos locaux, en France ou dans le monde entier.

Les sessions inter-entreprises programmées sont ouvertes dès deux inscrits. Sous condition d'un dossier complet, les inscriptions sont acceptées jusqu'à une semaine avant le début de la formation.

Dernière mise à jour du plan de cours : 2 juillet 2026

L'inscription à nos formations est soumise à nos Conditions Générales de Vente

Sur le même sujet :

Yocto ou Buildroot : comment choisir pour votre projet Linux embarqué