Formation
Zephyr STM32 MCU
Réf : PHYTEC-5282
- Durée : 4 jours - 5ème journée en option
- Sessions : intra-entreprise
- Plusieurs plateformes possibles (voir rubrique objectifs)
- Adaptation de contenu sur demande
Cette formation Zephyr STM32 MCU est basée sur la version Zephyr Project 4.1.
- Maîtriser l’installation de l’environnement de développement Zephyr sous STM32CubeIDE
- Gérer la configuration de build
- Construire et customiser son image Zephyr RTOS
- Développer et mettre au point des applications sous Zephyr RTOS
- Générer ses propres devicetree
- Ajouter et mettre en œuvre ses propres drivers de périphériques matériels
- Maîtriser les APIs Système Zephyr
- Maîtriser la HAL STM32 Zephyr
Les travaux pratiques de la formation Zephyr STM32 MCU sont peuvent réalisés sur le kit NUCLEO-SMT32WB55
Sur demande client, les travaux pratiques de cette formation pourraient être réaliser sur la base de kit STM32 MCU différents, supportés par Zephyr OS 4.1
La formation Zephyr STM32 MCU est proposée sur 4 journées, pouvant être étendues à 5 pour les clients qui souhaiteraient aborder le développement et la mise au point d’applications Bluetooth Low Energy.
Le contenu de la formation Zephyr STM32 MCU peut être également adapté aux besoins clients, en renforçant certains aspects plus que d’autres, afin de mieux couvrir les attentes des stagiaires à l’issue du stage.
Notre formation Zephyr RTOS est adaptée aux développeurs en informatique et techniciens dans le domaine de OS Embarqués confrontés aux problèmes de portage d’applications en exploitant pleinement les fonctionnalités de Zephyr, notamment Temps Réel. Des notions de programmation en langage C sont fortement recommandées.
Selon les souhaits du client, les travaux pratiques pourront être réalisés sous environnement Microsoft Windows ou Linux OS.
Projet Zephyr RTOS :
• Présentation de Zephyr OS
• Zephyr Ecosystem
• Architecture Modulaire
• Principaux composants
Environnement Zephyr RTOS :
• Sources du projet Zephyr
• Zephyr SDK
• Utilitaires West et Ninja
• Cross-Compiler : GCC - CMake
• IDE STM32CubeIDE et Debogger
Travaux pratiques :
• Installation de l’environnement Zephyr
• Utilisation des l’outil de construction West
• Flashage et exécution d'application sur cible Nucleo SMT32WB55
Zephyr Workspace :
• Structure du dossier de projet
- boards
- application
- librairies
- drivers
• Fichiers de configuration Kconfig du noyau et des subsystems
• Fichiers de configuration de projet
• Fichier de définition de la plateforme cible
- SoC
- defconfig
- devicetree
Modules Zephyr :
• Structure d’un module
• Module externe
• Fichier YAML
• CMakeList d’un module
Travaux pratiques :
• Mise en œuvre d’un Workspace de développement complet sous STM32CubeIDE
• Compilation d’un projet complet et déploiement d’une application simple avec linkage de librairie personnelle pour une plateforme
custom SMT32WB55
• Mise en œuvre de la chaîne de débogage sous Nucleo SMT32WB55 et interface JLink avec STM32CubeIDE
Gestion Mémoire sous Zephyr OS :
• Présentation : Stack et Heap
• Mémoire dynamique :
- K_heap et System heap
- Stubs et Blocks
• Détection de Stack overflow
User Mode / Kernel Mode :
• Présentation
• Domaines mémoire et partitionnement
• Appels système : objets du noyau et permissions
Logging support :
• Global Kconfig Options
• Logger API
Travaux pratiques
• Mise en œuvre de Logs applicatifs
• Mise en œuvre d'un Shell via UART dans son application
DeviceTree :
• Syntaxe, propriétés standards et structures de devicetree
• Device Tree Binding et Zephyr platform driver
• Fichiers devicetree et platforme overlay
• Accès aux propriétés du devicetree depuis l’application et structures dt_spec
Principales API Périphériques sous Zephyr :
• ADC
• EEPROM
• Flash
• GPIO
• Hardware Information
• I2C
• IPM
• LED
• Pinmux
• PWM
• RTC
• Sensors
• SPI
• UART
• Watchdog
Travaux pratiques :
• Définition des ressources matérielles via STM32CubeMX
• Mise en œuvre d'application d’accès aux propriétés du devicetree de la Nucleo SMT32WB55
• Mise en œuvre d'application de gestion de Timer et WatchDog sur plateforme SMT32 MCU
• Mise en œuvre d'application de gestion de mesure de Température et Accelero
Threading sous Zephyr RTOS :
• Main et Idle Threads
• Création de Threads et notion de Thread Custom Data
• Notions de délais et de Timeout
• Ordonnancement des threads sous Zephyr :
- Simple linked-list ready queue
- Red/black tree ready queue
- Traditional multi-queue ready queue
• Priorités des Threads Zephyr :
- Tâches coopératives
- Tâches préemptives
• Memory Pool de Thread
• Framework Machine d’état du Zephyr OS
Travaux pratiques
• Mise en œuvre d’un shell Runtime Statistics
• Mise en œuvre d’une application multi-thread à machine d’état
Présentation des API multitâche du Noyau Zephyr OS :
• Symmetric Multiprocessing et exclusions mutuelles
• Types Atomic
• Spinlock
• Semaphores
• Mutexes
• Condition Variables
• Events
• Timer API
• Watchdog
• Polling API
• Interrupts
- Handler Thread
- Workqueue Threads
- Synchronisation avec ISR
Travaux pratiques
• Mise en œuvre d'application de gestion d'interruption sur GPIO
• Mise en œuvre d'application avec tâches périodiques et WatchDog
Inter-Thread Communication :
• Data passing
• Message Queues
• Queues (FIFOs & LIFOs)
• Mailboxes
• Pipes
• Stacks
• Zephyr Bus (Zbus)
Travaux pratiques :
• Mise en œuvre d'application « multi-thread Queued » sur messages CAN bus
Introduction au développement de pilotes Linux /Pilotes de périphériques sous Linux (Suite)
• Utilisation de pilotes de périphériques de type « character device » simples :
- Fichiers de type device
- Major/Minor number
- Structure de la File Operation
• APIs du noyau Linux et gestion mémoire en Kernel Mode
- Managing hardware
- Memory allocation
- Interrupt handling
- I/O and memory-mapped access
- Memory mapping (“mmap”)
- DMA
Travaux pratiques
• Compilation et déploiement d’un module Linux externe/propriétaire avec le SDK Yocto
Adaptations matérielles de la plateforme STM32MP1 à l’aide du devicetree
- Structure et syntaxe des devicetree sous Linux
- API Kernel devicetree
- Devicetree STM32MP1 : Architecture et fichiers
- Devicetree STM32MP1 : Pin MUXING
- Devicetree Overlay
Travaux pratiques
• Customisation du devicetree et du Pin Muxing de la plateforme STM32MP13 ou STM32MP15 à l’aide de STM32CubeMX
• Driver bloquant, gestion d’interruption sur plateforme Phytec ou STMicroelectronics STM32MP1 MPU avec support
devicetree binding
Support Zephyr Bluetooth LE
• Différents Firmware Bluetooth LE Wireless Stack pour STM32WB MCU
• API Bluetooth Zephyr
Travaux pratiques
• Mise à jour du Firmware Bluetooth LE Wireless Stack Cortex-M0+ avec STM32CubeProgrammer
• Mise en œuvre d'une application Zephyr de découverte de périphériques BT Cortex-M4
Mise à jour via OTA Bluetooth LE sur MCU STM32WB:
• Présentation de la solution fast firmware update over the air (FUOTA)
• Partitionnement Flash
• Application OTA Bluetooth LE
• Applications User de mise à jour : GATT client – Application Android - ST BLE sensor
Travaux pratiques :
• Intégration de la couche FUOTA au firmware Cortex-M4
• Mise en œuvre d'une mise à jour d’une application Zephyr via application Android ST BLE sensor