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

Du 20 au 22 mars 2018 Montpellier (34)

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

Intervenant : AC6

PROGRAMME

JOUR 1

Cortex-M Architecture Overview (6h30)
- V7-M Architecture Overview
- Core Architecture
Harvard Architecture, I-Code, D-Code and System Bus
Write Buffer
Bit-Banding
Registers (Two stacks pointers)
States
Different Running-modes and Privileged Levels
System Control Block
Systick Timer
MPU Overview
- Programmation
Alignement & Endianness
CMSIS Library
- Gestion des Exceptions et Mécanisme de gestion des interruptions
Table de vecteur
Appel et retour d’Interruption
-* Tail-Chaining
-* Pre-emption (Nesting)
Contrôleur d’IT : NVIC
Gestion des priorités
Remontée des défauts
- Interface de Debug
Unité de debug Cortex-M3 JTAG debug : SWJ-DP, AHB-AP
Avantage du debug Série
Mécanisme de sélection du JTAG-DP ou du SW-DP
Flash Patch et Breakpoints
Data Watchpoint et Trace
Instrumentation Trace Macrocell, Trace Port Interface Unit, Trace funnel
- Démonstration : familiarisation avec l’IDE et la séquence de boot
- Travaux pratiques : gestion des interruptions sur Cortex-M3

Trucs et astuces de compilation pour Cortex-M (30min)
- 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

JOUR 2

Vue d’ensemble du processeur STM32F2 (1h30)
- Présentation de l’architecture du cœur ARM
- Présentation de l’architecture du SoC STM32F20X.
- Clarification des chemins internes pour les données et les instructions : Bus Matrix, AHB-lite interconnect, peripheral buses, AHB-to-APB bridges, DMAs
- Organisation de la mémoire
Interface de lecture de la mémoire Flash
Instruction prefetch, queue & branch cache
Accélérateur temps réels,
Effacement d’un secteur & effacement de masse
SRAM interne : Access concurrentiel entre blocs 112 KB &16 KB
- Cartographie mémoire du SoC
- Méthodes de programmation de la Flash
- Configuration de Boot
- Démonstration : Comparaison des performances de la copie de données avec ou sans DMA.

Introduction sur l’OS Temps Réels (30min)
- 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 syntaxiques
- FreeRTOS sur processeur Cortex/M
- Introduction au temps réels
- Concepts de base
- Les contraintes temps réels
- Multitâches & temps réel.

Structures des données (1h)
- Nécessité d’une structure de données spécifiques
- Structures données « Thread safe »
Listes liées
Listes Circulaires
FIFOs
Stacks
- Intégrité des structures de données
Assertions
Pre & postconditions
- Travaux Pratiques : Construire une liste chaînée de « thread safe »

Éléments sur le système temps réel (1h)
- Tâches et descripteurs de tâches
- Changement de contexte (Context Switch)
- Séquenceur de taches et préemptions
- Séquencement systèmes
Séquencement à priorité fixe
Séquencement RMA & EDF
- Séquencement sous FreeRTOS
Séquencement déterministe et préemptif
Stratégie de séquencement
-* Séquencement cyclique (RMA)
-* Séquencement à Deadline
Séquencement Coopératif
Séquencement Hybride
Démonstration : Analyse d’un changement de contexte

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

JOUR 3

Gestion de la mémoire (1h)
- Algorithme de gestion de la mémoire
Buddy System
Best fit / First Fit
Pools Management
- 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)
Démonstrations : Ecrire une simple « thread safe »
Démonstrations : Détection de « stack overflow »

Primitives de Synchronisation (1h30)
- Introduction
Attente et réveils de tâches
Sémaphores, Events, Mailboxes
- Sémaphores binaires
- Queue Management
Usage de base : Création, envoi, réception
Data management
- Travaux Pratiques : Synchroniser une tâche avec une autre en utilisant un sémaphore binaire
- Travaux pratiques : Synchroniser une tâche avec une autre à travers une « queue »

Management des ressources (1h)
- Exclusion Mutuelle
Spinlocks & masque d’interruption
Mutex ou Sémaphore
Mutex récursif ou non récursif
Problème d’inversion de priorité
- Exclusion Mutuelle sous FreeRTOS
- Sections Critiques
- Tâches « Gatekeeper »
- Travaux Pratiques : Implémentation d’une exclusion mutuelle entre deux taches

Solutions au problème de Parallélisme (1h)
- Problème de la programmation parallèle
Accès parallèle non contrôlé
Démonstration : Problème producteur-consommateur : illustration du problème d’accès concurrentiel
Deadlocks,Livelocks,Starvation
- Démonstration : Problème du diner des philosophes : illustration du deadlock, livelock & starvation

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 : Synchronisation d’interruptions avec des tâches

Timer Logiciel (1h)
- La tâche « Timer Daemon »
- Configuration du timer
- API du Timer
- Travaux pratiques : Implémentation d’un timer logiciel.

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

Participation aux frais :
Pour les adhérents CAP’TRONIC : prise en charge totale du coût de l’inscription dans la limite de 10 hommes/jour dans l’année d’adhésion de l’entreprise. La participation à l’atelier est donc gratuite, l’inscription sera validée à réception d’un chèque de caution de 100 €TTC par personne qui sera renvoyé au participant après l’atelier. En cas d’absence non remplacée à l’atelier, la caution sera encaissée et une facture établie.

Si vous êtes une PME non adhérente, vous pouvez adhérer à l’association JESSICA France pour cela contactez l’ingénieur CAP’TRONIC.

Pour les grandes entreprises et les PME qui ne souhaitent pas adhérer : 1 350,00 € HT, soit 1 620,00 € TTC (TVA 20% incluse) pour les trois journées.

Remarque : La prise en charge de cette formation est possible par les Organismes Paritaires Collecteurs Agréés (OPCA) - Déclaration d’activité formation continue CAP’TRONIC enregistrée sous le numéro 82 38 05719 38 auprès du Préfet de région de Rhône-Alpes

Contact et inscription :
Richard SALVETAT : 06 86 40 94 52 – Inscrivez-vous par email au plus tôt : salvetat@captronic.fr
Retournez votre chèque d’inscription par courrier :
LAAS/CNRS – 7, avenue du Colonel Roche - BP 54200 - 31031 TOULOUSE Cedex 4