Logo de la rubrique ATELIER : Programmation temps réels avec FreeRTOS pour un cœur Cortex-M

ATELIER : Programmation temps réels avec FreeRTOS pour un cœur Cortex-M

Pour connaitre les prochaines sessions de formation sur Logiciel embarque et programmation cliquez ici.




L’architecture ARM est connue pour offrir un des meilleurs ratios performance/efficacité du marché, tout en consommant très peu d’énergie. Ces architectures ARM ont d’ailleurs pris naturellement possession du marché de la mobilité et équipent l’essentiel des smartphones du marché et de nombreux produits embarqués industriels.

Le noyau temps réel FreeRTOS est particulièrement bien adapté à ces architectures par sa faible empreinte et ses performances.

Objectifs

• Avoir une vue d’ensemble sur les architectures Cortex-M
• Comprendre l’implémentation et le debug des programmes sur Cortex-M
• Comprendre la gestion des interruptions
• Avoir une vue d’ensemble sur les architectures STM32F
• Découverte du concept du multitâche temps-réels
• Comprendre les contraintes temps réels lors de la mutualisation des ressources.
• Comprendre l’architecture FreeRTOS
• Découverte des services et API FreeRTOS.
• Apprendre comment développer et debugger des applications sous FreeRTOS

PROGRAMME

JOUR 1

Cortex-M Architecture Overview
• M0,M3,M4 Architecture Overview
• Core Architecture
o Harvard Architecture, I-Code, D-Code and System Bus
o Registers (Two stacks pointers)
o States, Different Running-modes and Privileged Levels,System Control Block
o MPU Overview M0-M7
• Programmation
o Alignement & Endianness
o CMSIS Library
• Gestion des Exceptions et Mécanisme de gestion des interruptions
o Table de vecteur, Appel et retour d’Interruption
o Contrôleur d’IT :NVIC, Gestion des priorités ,Remontée des défauts
• Interface de Debug
o Unité de debug Cortex-M3 JTAG debug : SWJ-DP, AHB-AP, Avantage du debug Série
o Mécanisme de sélection du JTAG-DP ou du SW-DP
o Flash Patch et Breakpoints, Data Watchpoint et Trace
o Instrumentation Trace Macrocell, Trace Port Interface Unit, Trace funnel
Installation des outils de développement Cortex-M
• Installation de STM32CubeMX
• Installation de l’IDE AC6-Tools
• Optimisation, Programmation mixte C & Assembleur, Coder avec le compilateur ARM,Usage de l’attribut volatile
• Approfondissement des notions de variables locales & globales, d’alignement et de structure

Travaux Pratiques sur carte d’évaluation STM32 F302R8
• Overview de la carte d’évaluation STM32-F302R8
• Installation de la carte d’évaluation
• Travaux pratiques : gestion du timer et des GPIO

Introduction sur l’OS Temps Réels FreeRTOS
• Le code source du FreeRTOS
• Introduction à FreeRTOS
• Caractéristiques et architectures de FreeRTOS
• Obtenir le code source du FreeRTOS
• Structure des répertoires et des fichiers
• Types de données & de codage
• Conventions synthaxique
• FreeRTOS sur processeur Cortex/M
• Introduction au temps réels
• Concepts de base
• Les contraintes temps réels
• Multitâches & temps réel.

JOUR 2

Structures des données sous FreeRTOS
• Nécessité d’une structure de données spécifiques
• Structures données « Thread safe »
o Listes liées, Listes Circulaires, FIFOs, Stacks
• Intégrité des structures de données
o Assertions, Pre & post-conditions

Éléments sur le système temps réel

• Tâches et descripteurs de tâches
• Changement de contexte (Context Switch)
• Séquenceur de taches et préemptions
• Séquencement systèmes
o séquencement à priorité fixe, séquencement RMA & EDF
• Séquencement sous FreeRTOS

Gestions des tâches
• Cycle de vie d’une tâche : Créer une tâche, Détruire une tâche, Boucle sans fin.
• Gestion de la priorités des tâches : Assignation des priorités, Changement de priorités
• La tâche « Idle »
• Timing
• Capacités de debug sous FreeRTOS (Hook, Trace)

Gestion des interruptions (1h30)
• Processus d’interruptions sous FreeRTOS
Tâche avec synchronisation d’ITs
Utilisation de sémaphores dans un ISR
Comptage de sémaphores
Utilisation de « queues » dans un ISR
• Processus de gestion d’It sous FreeRTOS
Ecrire une ISRs in C
Imbrication d’interruptions

Travaux Pratiques FreeRTOS sur carte d’évaluation STM32 F302R8
• Travaux pratiques : gestion des ITs, gestions du convertisseur A/D

JOUR 3

Gestion de la mémoire
• Algorithme de gestion de la mémoire
• Schémas d’allocations mémoires
• Les erreurs de « Memory management »
• Moniteur de pile (Stack monitoring)
• Dimensionnement de la pile (Stack) et du tas (Heap)

Primitives de Synchronisation
• Introduction
o Attente and réveils de tâches
o Sémaphores Events,Mailboxes
• Sémaphores binaires
• Queue Management
o Usage de base :Création, envoi, réception
o Data management

Management des ressources
• Exclusion Mutuelle
o Spinlocks & masque d’interruption
o Mutex ou Sémaphore
o Mutex récursif ou non récursif
o Problème d’inversion de priorité
• Exclusion Mutuelle sous FreeRTOS

Overview et utilisation du FPU
• Présentation de l’unité de calcul en virgule flottante
• Impact sur les applications.

Optimisation du compilateur et overview des LIB
• Directive d’optimisation du compilateur
• Overview des librairies : CAN,Ethernet, ….


Travaux Pratiques FreeRTOS sur carte d’évaluation STM32 F302R8

• Travaux pratiques : queues I2C.

INFORMATIONS PRATIQUES

Public visé et prérequis : PME, start-ups ou bureaux d’études du secteur électronique au sens large qui envisagent de monter en compétence dans la maîtrise des outils de développement de logiciels embarqués. Les stagiaires devront maîtriser le développement d’applications en C et avoir une connaissance de base sur les systèmes embarqués ;

Date et lieu :
- 20 au 22 mars 2018 de 09h00 à 12h30 et de 13h30 à 17h00
- MONTPELLIER

Les inscriptions sont closes. Pour connaitre les prochaines sessions de formation sur Logiciel embarque et programmation cliquez ici.