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

Intéressé.e. par cette formation ?

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