introduction à la programmation micro-contrôleurdeantoni/teaching_resources/isle/... · systèmes...
TRANSCRIPT
![Page 1: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/1.jpg)
Systèmes embarquésSystèmes embarqués
Introduction à la programmationIntroduction à la programmationmicro-contrôleurmicro-contrôleur
avec un OS temps réelavec un OS temps réel
Julien Deantoni
V0.3 – 2018
Merci à Jean-Philippe Babau et Gabriel Frey pour m'avoir permi la réutilisation d'une partie de leurs supports
![Page 2: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/2.jpg)
Introduction aux Systèmes et Logiciels Embarqués 3
Pourquoi ce cours ?
● Différents types ee systèmes embarrqués
● smarrtphones / Différents garegets / box
● Avionique / Automobile / Charîne ee proeuction
● Carfetière, arquarrium, etc
● Différents besoins
● Pars e'OS
● OS temps réel eéeiés
● Linux embarrqués ou pseueo Linux
Thales Alenia Space: stratobus and satellites
Renault Autonomous Car
![Page 3: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/3.jpg)
Introduction aux Systèmes et Logiciels Embarqués 4
Pourquoi ce cours ?
● Différents types ee systèmes embarrqués
● smarrtphones / Différents garegets / box
● Avionique / Automobile / Chaîne de production● Cafetière, aquarium, etc
● Différents besoins
● Pas d'OS ● OS temps réel dédiés● Linux embarrqués ou pseueo Linux
![Page 4: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/4.jpg)
Introduction aux Systèmes et Logiciels Embarqués 5
Contenu du cours
● Générarlités
● Les sytèmes consieérés
● Le eéveloppement ee tels systèmes
● Prograrmmartion arvec un OS temps réel…
● Mise en oeuvre
● Prograrmmartion sarns OS
![Page 5: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/5.jpg)
Introduction aux Systèmes et Logiciels Embarqués 6
Les systèmes embarqués considérés
● Systèmes temps réels
● En charrge eu contrôle e'un processus
● Liés à lar eynarmique eu processus à contrôler
● Soumis à ees contrarintes temporelles
![Page 6: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/6.jpg)
Introduction aux Systèmes et Logiciels Embarqués 7
Les systèmes embarqués considérés
● Systèmes temps réels
● Pars forcément rarpiees (contrarirement arux ieées reçues)
● Préeictibles
● (Souvent) Fortement enfouis
![Page 7: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/7.jpg)
Introduction aux Systèmes et Logiciels Embarqués 8
Les systèmes embarqués considérés
● Systèmes temps réels
● Contrarintes martérielles fortes● Mémoire● Coût
● Tarille
● Consommation
![Page 8: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/8.jpg)
Introduction aux Systèmes et Logiciels Embarqués 9
Les systèmes embarqués considérés
● Systèmes Critiques
● Une farille peut mettre ees vies (ou lar mission…) en earnger ● Régularteur ee vitesse● ABS
● Préeictibilité arccrue (eéterminisme)
![Page 9: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/9.jpg)
Introduction aux Systèmes et Logiciels Embarqués 10
Notions importantes
Prédictibilité
● On veut pouvoir préeire le comportement e'un système
● Fonctionnel: le comportement est eéterministe, i.e. un même jeu ee eonnée en entrée proeuit toujours lar même sortie
● Temporel: le carlcul eoit être farit arvarnt ees échéarnces eéterminées
![Page 10: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/10.jpg)
Introduction aux Systèmes et Logiciels Embarqués 11
Notions importantes
Prédictibilité
● On veut pouvoir préeire le comportement e'un système
● Fonctionnel: le comportement est eéterministe, i.e. un même jeu ee eonnée en entrée proeuit toujours lar même sortie
● Temporel: le carlcul eoit être farit arvarnt ees échéances déterminées
![Page 11: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/11.jpg)
Introduction aux Systèmes et Logiciels Embarqués 12
Notions importantes
concurrence
● Lar spécifcartion eu système est pensée ee marnière concurrente
● Carr l'environnement est parrarllèle (composés ee processus ineépenearnts ou fariblement couplés: le moteur, les essuis glarce, l’opérarteur, etc)
● Carr le système est composé ee plusieurs arctivités plus ou moins critiques se farisarnt à ees rythmes eistincts.
![Page 12: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/12.jpg)
Introduction aux Systèmes et Logiciels Embarqués 13
Malentendus fréquents(*)
● Système temps réel = système rarpiee et performarnt.
● Lar prograrmmartion temps réel = arssembleur.
● Aucune science eerrière le eéveloppement
Darns les systèmes temps réel, tout est une question ee bieouillarge.
(*) J. A. Stankovic, « Misconceptions about realtime computing »
![Page 13: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/13.jpg)
Introduction aux Systèmes et Logiciels Embarqués 14
Malentendus fréquents(*)
● L’arugmentartion ee lar vitesse ees processeurs var résouere les problèmes engenerés parr le temps réel.
(*) J. A. Stankovic, « Misconceptions about realtime computing »
![Page 14: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/14.jpg)
Introduction aux Systèmes et Logiciels Embarqués 17
Le développement de systèmes temps réel version simple :-)
![Page 15: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/15.jpg)
Introduction aux Systèmes et Logiciels Embarqués 18
Le développement de systèmes temps réel version simple :-)
● Différence forte machine hôte / machine cibleMarchine hôte :
● Entrées / Sortie Starnearre
● IDE (spécifques ou pars)
● Simulartion ee lar cible / environnement / processus
![Page 16: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/16.jpg)
Introduction aux Systèmes et Logiciels Embarqués 19
Marchine cible :
● Entrées / Sorties ?
● Difficilement utilisarble hors ee son environnement
Le développement de systèmes temps réel version simple :-)
● Différence forte machine hôte / machine cible
![Page 17: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/17.jpg)
Introduction aux Systèmes et Logiciels Embarqués 20
● Méthoee ee varlieartion (fonction ee lar criticité)
● Utilisartion ee méthoees formelles
● Tests (critères ee couverture)
● Simulartion fonctionnelle (exharustive ou non) sur marchine hôte
Le développement de systèmes temps réel version simple :-)
![Page 18: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/18.jpg)
Introduction aux Systèmes et Logiciels Embarqués 21
● Méthoee ee varlieartion (fonction ee lar criticité)
● Utilisartion ee méthoees formelles
● Tests (critères ee couverture)
● Simulartion fonctionnelle (exharustive ou non) sur marchine hôte
Le développement de systèmes temps réel version simple :-)
![Page 19: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/19.jpg)
Introduction aux Systèmes et Logiciels Embarqués 22
● Critères ee varlieartion● Temporelle● Énergétique ● Empreinte mémoire● ...
Le développement de systèmes temps réel version simple :-)
![Page 20: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/20.jpg)
Introduction aux Systèmes et Logiciels Embarqués 23
● Cross compilartion (compilartion croisée)● Jeu e'instruction spécifque● Confgurartion martérielle spécifque
● En parrticulier marpping mémoire● Avec informartion ee eébuggarge (elf) ou non (s19)
Le développement de systèmes temps réel version simple :-)
![Page 21: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/21.jpg)
Introduction aux Systèmes et Logiciels Embarqués 24
● Cross compilartion et varlieartion ?
● Re-varlieartion eu coee généré
● Compilarteurs certifés● Réponeent à ees critères stricts ee générartion
Le développement de systèmes temps réel version simple :-)
![Page 22: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/22.jpg)
Introduction aux Systèmes et Logiciels Embarqués 25
● Trarnsfert ( jtarg / SPI / ...)● Simple uploare● Trarnsfert et pilotarge
● Permet le eebug● Maris l'environnement et le process ?
Le développement de systèmes temps réel version simple :-)
![Page 23: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/23.jpg)
Introduction aux Systèmes et Logiciels Embarqués 26
Contenu du cours
● Générarlités
● Les sytèmes consieérés
● Le eéveloppement ee systèmes temps réel
● Prograrmmartion Micro-contrôleur arvec un OS temps réel…
● Mise en oeuvre
![Page 24: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/24.jpg)
Introduction aux Systèmes et Logiciels Embarqués 27
Micro-contrôleur ?
AT90S8535AT90S8535
![Page 25: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/25.jpg)
Introduction aux Systèmes et Logiciels Embarqués 28
Micro-contrôleur ?
● Processeur
● Mémoire
● Périphériques
● Bus ee communicartion
● Entrées / Sorties
→
AT90S8535AT90S8535
Dans le même boitier
![Page 26: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/26.jpg)
19.04.18 Julien DeAntoni 29
● Mettre en place votre environnement de développement
– Choisir un langage de développement● Assembleur● C / C++● Ada● ...
– Trouver / choisir un compilateur adapté– Trouver un linker (pour faire le transfert)– Trouver / choisir un simulateur si disponible– Se procurer les datasheets du micro-contrôleur
Micro-contrôleur sans OS : comment ?
![Page 27: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/27.jpg)
19.04.18 Julien DeAntoni 30
● Les datasheets en quelques mots
– C'est la documentation du micro-contrôleur– Sont généralement très conséquentes (567 pages pour le
processeur des cartes arduino ! )– Ne contiennent pas que des choses utiles pour les
informaticiens– Réverbatif si on ne sait pas ce que l'on cherche
Micro-contrôleur sans OS : comment ?
Ce n'est pas un roman donc à moins de vouloir devenir expert des moindres fonctionnalités, ne le lisez pas séquentiellement
![Page 28: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/28.jpg)
19.04.18 Julien DeAntoni 31
● Informations importantes des datasheets– Les ports d'Entrées / Sorties (et Brochages des pattes
physiques)
– La description des périphériques intégrés● Timer ? Convertisseurs A/D ? liaison série ?
– L'organisation de la mémoire● Intégrée ou non
– Les registres
● Informations moins importantes
– Caractéristiques éléctriques (sauf les consos dans les différents mode de veille)
– Jeux d'instructions assembleur (a moins que...)
Micro-contrôleur sans OS : comment ?
![Page 29: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/29.jpg)
19.04.18 Julien DeAntoni 32
● Les ports d'Entrées / Sorties– Permettent de communiquer avec l'electronique de la
machine (notamment les capteurs et les actionneurs)– Plus ou moins nombreux– Multi fonctionnalités– Multi Directionnels
ATMEGA328PATMEGA328P
Micro-contrôleur sans OS : comment ?
![Page 30: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/30.jpg)
19.04.18 Julien DeAntoni 33
● Les ports d'Entrées / Sorties– Permettent de communiquer avec l'electronique de la
machine (notamment les capteurs et les actionneurs)– Plus ou moins nombreux– Multi fonctionnalités– Multi Directionnels
ATMEGA328PATMEGA328P
Micro-contrôleur sans OS : comment ?
![Page 31: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/31.jpg)
19.04.18 Julien DeAntoni 34
● Les registres de configuration– Souvent nombreux– 8 / 16 / 32 bits– À une adresse mémoire particulière– À considérer bit par bit
Datasheets PIC16F84ADatasheets PIC16F84A
Micro-contrôleur sans OS : les registres
![Page 32: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/32.jpg)
Finite State Machine, State Charts 35
Contenu du cours
● Générarlités
● Les sytèmes consieérés
● Le eéveloppement ee systèmes temps réel
● Prograrmmartion Micro-contrôleur arvec un OS temps réel…
● Mise en oeuvre
![Page 33: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/33.jpg)
Introduction aux Systèmes et Logiciels Embarqués 36
Contenu du cours
● Qu'est-ce qu'un OS temps réel (RTOS)
● RTOS vs GPOS
● Différents RTOS...
● Les objets communs e'un RTOS
● Implémentartion e'un RTOS
● Prograrmmartion arvec un OS temps réel
● Comment utiliser les objets e'un RTOS ?
● Mise en Oeuvre
● freeRTOS
![Page 34: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/34.jpg)
Introduction aux Systèmes et Logiciels Embarqués 37
Contenu du cours
● Qu'est-ce qu'un OS temps réel (RTOS)● RTOS vs GPOS● Différents RTOS...
● Les objets communs e'un RTOS
● Les objets harut nivearu e'un RTOS
● Implémentartion e'un RTOS
● Prograrmmartion arvec un OS temps réel
● Comment utiliser les objets e'un RTOS ?
● Mise en Oeuvre
![Page 35: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/35.jpg)
Introduction aux Systèmes et Logiciels Embarqués 38
RTOS vs GPOS● L'essence de la discorde : Prédictabilité1
●RTOS●Multi-tâche / threare eepuis toujours●Ses arctions sont eétermistes...● ...et interruptibles
●GPOS●Multi-tâche seulement récemment●Prenes lar marin sur les tâches en cours...●Pour une eurée ineéterminée et non interruptible
1 : Ou Déterminisme...http://embedded-computing.com/pdfs/QNX.Jan05.pdf
![Page 36: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/36.jpg)
Introduction aux Systèmes et Logiciels Embarqués 39
RTOS vs GPOS● L'essence de la discorde : Prédictabilité1
●RTOS●Multi-tâche / threare eepuis toujours●Ses arctions sont eétermistes...● ...et interruptibles
●GPOS●Multi-tâche seulement récemment●Prenes lar marin sur les tâches en cours...●Pour une eurée ineéterminée et non interruptible
1 : Ou Déterminisme...http://embedded-computing.com/pdfs/QNX.Jan05.pdf
Un RTOS n'est paséquitable (fair)
![Page 37: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/37.jpg)
Introduction aux Systèmes et Logiciels Embarqués 40
Contenu du cours
● Qu'est-ce qu'un OS temps réel (RTOS)● RTOS vs GPOS
● Différents RTOS...● Les objets communs e'un RTOS
● Les objets harut nivearu e'un RTOS
● Implémentartion e'un RTOS
● Prograrmmartion arvec un OS temps réel
● Comment utiliser les objets e'un RTOS ?
● Mise en Oeuvre
![Page 38: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/38.jpg)
Introduction aux Systèmes et Logiciels Embarqués 41
Différents RTOS Le classique (1)
●Complétement eéveloppé aru eessus eu martériel, il fournit les objets starnearres e'un RTOS
●Utilisartion ee l'API eu RTOS parr l'arpplicartion
●Tout est intercepté parr le RTOS (même les interruptions)
![Page 39: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/39.jpg)
Introduction aux Systèmes et Logiciels Embarqués 42
Différents RTOS Le classique (1)
●Complétement eéveloppé aru eessus eu martériel, il fournit les objets starnearres e'un RTOS
●Utilisartion ee l'API eu RTOS parr l'arpplicartion
●Larisse à l'arpplicartion certarins arccès aru martériel
![Page 40: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/40.jpg)
Introduction aux Systèmes et Logiciels Embarqués 43
Différents RTOS Le classique (1)
●Complétement eéveloppé aru eessus eu martériel, il fournit les objets starnearres e'un RTOS
●Utilisartion ee l'API eu RTOS parr l'arpplicartion
●Larisse à l'arpplicartion certarins arccès aru martériel
FAILURE
![Page 41: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/41.jpg)
Introduction aux Systèmes et Logiciels Embarqués 44
Différents RTOS Le classique (1)
●Complétement eéveloppé aru eessus eu martériel, il fournit les objets starnearres e'un RTOS
●Utilisartion ee l'API eu RTOS parr l'arpplicartion
●Larisse à l'arpplicartion certarins arccès aru martériel
FAILURE
FAILURE
![Page 42: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/42.jpg)
Introduction aux Systèmes et Logiciels Embarqués 45
Différents RTOS safety-critical
●Permet e'isoler temporellement et en mémoire ees arpplicartions eifférentes
● Utilisation de l'API du RTOS par l'application
● S'assure que le partitionnement est respecté
![Page 43: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/43.jpg)
Introduction aux Systèmes et Logiciels Embarqués 46
Différents RTOS safety-critical
●Permet e'isoler temporellement et en mémoire ees arpplicartions eifférentes
● Utilisation de l'API du RTOS par l'application
● S'assure que le partitionnement est respecté
→ Évite la propagation des pannes
FAILURE
![Page 44: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/44.jpg)
Introduction aux Systèmes et Logiciels Embarqués 47
Différents RTOS safety-critical
●Permet e'isoler temporellement et en mémoire ees arpplicartions eifférentes
● Utilisation de l'API du RTOS par l'application
● S'assure que le partitionnement est respecté
→ Évite la propagation des pannes
FAILURE OK
OK
![Page 45: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/45.jpg)
Introduction aux Systèmes et Logiciels Embarqués 48
Différents RTOS safety-critical
●Permet e'isoler temporellement et en mémoire ees arpplicartions eifférentes
● Utilisation de l'API du RTOS par l'application
● S'assure que le partitionnement est respecté
→ Évite la propagation des pannes
FAILURE OK
OK
![Page 46: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/46.jpg)
Introduction aux Systèmes et Logiciels Embarqués 49
Contenu du cours● Qu'est-ce qu'un OS temps réel (RTOS)
● RTOS vs GPOS
● Différents RTOS...
● Les objets communs d'un RTOS● Tâche● Sémarphore● Oreonnarnceur● Les objets harut nivearu
● Implémentartion e'un RTOS
● Prograrmmartion arvec un OS temps réel
● Mise en Oeuvre
![Page 47: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/47.jpg)
Introduction aux Systèmes et Logiciels Embarqués 50
Les objets du temps réelles basiques
●Les objets prograrmmarbles● Lar tâche (ou le threare ou processus léger)● Les routines e’interruption, l’arlarrme
●Objet ee communicartion● Le sémarphore
● Synchronisation● Exclusion mutuelle
![Page 48: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/48.jpg)
Introduction aux Systèmes et Logiciels Embarqués 51
● Une tâche est un fil d'exécution● Une tâche est représentée par une structure1
contenant :● Un identifiant● Une référence vers son code● Une priorité● Un état :
● Prête● Bloquée● En cours● ...
● Un contexte• valeurs des registres• compteur de programme• pile
Les objets du temps réella tâche
1 : Souvent appelée TaskControlBlock
typedef struct{ void *r_stack; // Start of stack (top address-1) void (*start) (void); // Entry point of code pProcessID pid; // Pointer to Process ID block unsigned char priority; // Priority of task (0-255)} FLASH const TaskControlBlock;
//state is encoded in the schedulertypedef struct ProcessID{ struct ProcessID * next; unsigned char fags; unsigned char priority; void *ContextPointer;#ifdef SINGLESTEPSUPPORT unsigned char * bp1; unsigned char * bp2;#endif} * pProcessId; Exemple simplifié d'AvrX
![Page 49: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/49.jpg)
Introduction aux Systèmes et Logiciels Embarqués 52
Primitives classiques :● Appel effectué depuis une autre tâche
● créartion (prête ou bloquée)● Larncement● Réveil
● Appel effectué depuis une autre tâche ou dans la tâche elle-même
● Destruction● Suspension ● Demarnee eu nivearu ee priorité● Charngement ee priorité
● Appel dans la tâche elle même● mise en sommeil● arppels ee fonctions
INTERFACE void AvrXRunTask(TaskControlBlock *);INTERFACE unsigned char AvrXInitTask(TaskControlBlock *);
INTERFACE void AvrXResume(pProcessID);INTERFACE void AvrXSuspend(pProcessID);INTERFACE void AvrXBreakPoint(pProcessID);INTERFACE unsigned char AvrXSingleStep(pProcessID);INTERFACE unsigned char AvrXSingleStepNext(pProcessID);
INTERFACE void AvrXTerminate(pProcessID);INTERFACE void AvrXTaskExit(void);INTERFACE void AvrXHalt(void); // Halt Processor (error only)
INTERFACE void AvrXWaitTask(pProcessID);INTERFACE Mutex AvrXTestPid(pProcessID);
INTERFACE unsigned char AvrXPriority(pProcessID);INTERFACE unsigned char AvrXChangePriority(pProcessID, unsigned char);INTERFACE pProcessID AvrXSelf(void);
Les objets du temps réella tâche
Exemple d'AvrX
![Page 50: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/50.jpg)
Introduction aux Systèmes et Logiciels Embarqués 53
Exemple de primitives● VxWorks
● LOCAL int taskSpawn(char* "taskName",int priority,0,10000, functionName,0,0,0,0,0, \\ 0,0,0,0,0)● LOCAL int taskInit(…)● taskSafe ()
● IRMX● static TOKEN rq_create_task(priority, (void far *) taskId, ...)
● Win CE● CreateProcess( NULL|appliName, "MonProcessFils", … )● HANDLE CreateThread(lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, \\
dwCreationFlags, CREATE_SUSPENDED, lpThreadId )● RT-Linux
● int init_module(void)● int pthread_create(pthread_t, pthread_attr_t , void *(*start_routine)(void*), void *arg)
● TIM micro-kernel● int install_task (char * taskName, int stackSize, void * functionAd);
● RTX_166 Tiny Real-Time● os_create_task (int tasd_id); ● os_delete_task (int tasd_id);
Les objets du temps réella tâche
![Page 51: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/51.jpg)
Introduction aux Systèmes et Logiciels Embarqués 54
Les objets du temps réella tâche
prêteprêteInit()
en-coursen-cours
bloquéebloquéeSusp-endueSusp-endue
Élection
Pré-emption
API: Blocksémaphoretimer, etc
Événementsémaphore
timer expire,etc
Suspend()
Resume()
Suspend()
Suspend()
État d'une tâche :● prête
● mémoire arllouées● bloquée
● en arttente e'une ressource ou e'un événement
● suspeneue● en mémoire maris ne serar
pars oreonnarncée● en-cours
● Choisie parr l'oreonnarnceur pour s'exécuter
● Morte● Plus ee mémoire arllouée
![Page 52: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/52.jpg)
Introduction aux Systèmes et Logiciels Embarqués 55
prêteprêteInit()
en-coursen-cours
bloquéebloquéeSusp-endueSusp-endue
Élection
Pré-emption
API: Blocksémaphoretimer, etc
Événementsémaphore
timer expire,etc
Suspend()
Resume()
Suspend()
Suspend()
Les objets du temps réella tâcheÉtat d'une tâche :
● prête● mémoire arllouées
● bloquée● en arttente e'une ressource
ou e'un événement● suspeneue
● en mémoire maris ne serar pars oreonnarncée
● en-cours● Choisie parr l'oreonnarnceur
pour s'exécuter● Morte
● Plus ee mémoire arllouée
![Page 53: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/53.jpg)
Introduction aux Systèmes et Logiciels Embarqués 56
prêteprêteInit()
en-coursen-cours
bloquéebloquéeSusp-endueSusp-endue
Élection
Pré-emption
API: Blocksémaphoretimer, etc
Événementsémaphore
timer expire,etc
Suspend()
Resume()Suspend()
Suspend()
Les objets du temps réella tâcheÉtat d'une tâche :
● prête● mémoire arllouées
● bloquée● en arttente e'une ressource
ou e'un événement● suspeneue
● en mémoire maris ne serar pars oreonnarncée
● en-cours● Choisie parr l'oreonnarnceur
pour s'exécuter● Morte
● Plus ee mémoire arllouée
![Page 54: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/54.jpg)
Introduction aux Systèmes et Logiciels Embarqués 57
prêteprêteInit()
en-coursen-cours
bloquéebloquéeSusp-endueSusp-endue
Élection
Pré-emption
API: Blocksémaphoretimer, etc
Événementsémaphore
timer expire,etc
Suspend()
Resume()
Suspend()
Suspend()
Les objets du temps réella tâcheÉtat d'une tâche :
● prête● mémoire arllouées
● bloquée● en arttente e'une ressource
ou e'un événement● suspeneue
● en mémoire maris ne serar pars oreonnarncée
● en-cours● Choisie parr l'oreonnarnceur
pour s'exécuter● Morte
● Plus ee mémoire arllouée
![Page 55: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/55.jpg)
Introduction aux Systèmes et Logiciels Embarqués 58
prêteprêteInit()
en-coursen-cours
bloquéebloquéeSusp-endueSusp-endue
Élection
Pré-emption
API: Blocksémaphoretimer, etc
Événementsémaphore
timer expire,etc
Suspend()
Resume()
Suspend()
Suspend()
Les objets du temps réella tâcheÉtat d'une tâche :
● prête● mémoire arllouées
● bloquée● en arttente e'une ressource
ou e'un événement● suspeneue
● en mémoire maris ne serar pars oreonnarncée
● en-cours● Choisie parr l'oreonnarnceur
pour s'exécuter● Morte
● Plus ee mémoire arllouée
![Page 56: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/56.jpg)
Introduction aux Systèmes et Logiciels Embarqués 59
prêteprêteInit()
en-coursen-cours
bloquéebloquéeSusp-endueSusp-endue
Élection
Pré-emption
API: Blocksémaphoretimer, etc
Événementsémaphore
timer expire,etc
Suspend()
Resume()
Suspend()
Suspend()
Exit() Terminate()
Exit() Terminate()
Exit() Terminate()
Exit() Terminate()
morte
Les objets du temps réella tâcheÉtat d'une tâche :
● prête● mémoire arllouées
● bloquée● en arttente e'une ressource
ou e'un événement● suspeneue
● en mémoire maris ne serar pars oreonnarncée
● en-cours● Choisie parr l'oreonnarnceur
pour s'exécuter● Morte
● Plus ee mémoire arllouée
![Page 57: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/57.jpg)
Introduction aux Systèmes et Logiciels Embarqués 60
Les objets du temps réella tâche
Tâche clarssique :
● Initiarlisartion (varriarbles, etc)
● Boucle infnie● Farire quelques choses● Attenere
● Ressource● Timer● Sémarphore
AVRX_GCC_TASKDEF(task1, 8, 3){unsigned char valueD=0;PORTD = valueD; while (1) { AvrXStartTimer(&timer1, 20); // 20 ms delay AvrXWaitTimer(&timer1); PORTD=++valueD; // Modify PORTD }} Exemple AvrX
![Page 58: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/58.jpg)
Introduction aux Systèmes et Logiciels Embarqués 61
Les objets du temps réella tâche
Tâche clarssique :
● Initiarlisartion (varriarbles, etc)
● Boucle infnie● Farire quelques choses● Attenere
● Ressource● Timer● Sémarphore
AVRX_GCC_TASKDEF(task1, 8, 3){unsigned char valueD=0;PORTD = valueD; while (1) { AvrXStartTimer(&timer1, 20); // 20 ms delay PORTD=++valueD; // Modify PORTD AvrXWaitTimer(&timer1); }} Exemple AvrX
![Page 59: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/59.jpg)
Introduction aux Systèmes et Logiciels Embarqués 62
Les objets du temps réelroutine d'interruption
Interruption clarssique :
● Démarsque ees ITs (ou non)
● Farire le minimum ee chose● MAJ e'une varriarble● Moeifcartion e'un sémarphore
● Fin
AVRX_SIGINT(TIMER0_OVF_vect){ IntProlog(); // Save interrupted context, switch stacks TCNT0 = TCNT0_INIT; // Reload the timer counter AvrXTimerHandler(); // Process Timer queue Epilog(); // Restore context of next running task}
Exemple AvrX
![Page 60: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/60.jpg)
Introduction aux Systèmes et Logiciels Embarqués 63
Les objets du temps réelle sémaphore
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisartion entre tâches● exclusion mutuelle● Interruption logicielle
![Page 61: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/61.jpg)
Introduction aux Systèmes et Logiciels Embarqués 64
Les objets du temps réelle sémaphore
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisation entre tâches● exclusion mutuelle● Interruption logicielle
![Page 62: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/62.jpg)
Introduction aux Systèmes et Logiciels Embarqués 65
Les objets du temps réelle sémaphore
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisation entre tâches● exclusion mutuelle● Interruption logicielle
www.lisyc.univ-brest.fr/pages_perso/babau/cours/multitache.pdfLacatre: langage d'aide à la conception d'application temps réel
![Page 63: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/63.jpg)
Introduction aux Systèmes et Logiciels Embarqués 66
Les objets du temps réelle sémaphore
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisation entre tâches● exclusion mutuelle● Interruption logicielle
![Page 64: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/64.jpg)
Introduction aux Systèmes et Logiciels Embarqués 67
Les objets du temps réelle sémaphore
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisation entre tâches● exclusion mutuelle● Interruption logicielle
![Page 65: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/65.jpg)
Introduction aux Systèmes et Logiciels Embarqués 68
Les objets du temps réelle sémaphore
✘
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisartion entre tâches● exclusion mutuelle● Interruption logicielle
![Page 66: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/66.jpg)
Introduction aux Systèmes et Logiciels Embarqués 69
Les objets du temps réelle sémaphore
✘
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisartion entre tâches● exclusion mutuelle● Interruption logicielle
![Page 67: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/67.jpg)
Introduction aux Systèmes et Logiciels Embarqués 70
Les objets du temps réelle sémaphore (2)
✔
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisartion entre tâches● exclusion mutuelle● Interruption logicielle
![Page 68: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/68.jpg)
Introduction aux Systèmes et Logiciels Embarqués 71
Les objets du temps réelle sémaphore (3 ?)
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisartion entre tâches● exclusion mutuelle● Interruption logicielle
![Page 69: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/69.jpg)
Introduction aux Systèmes et Logiciels Embarqués 72
Les objets du temps réelle sémaphore
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisartion entre tâches● exclusion mutuelle● Interruption logicielle
![Page 70: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/70.jpg)
Introduction aux Systèmes et Logiciels Embarqués 73
Les objets du temps réelle sémaphore
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisartion entre tâches● exclusion mutuelle● Interruption logicielle
![Page 71: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/71.jpg)
Introduction aux Systèmes et Logiciels Embarqués 74
● Type : booléen ou à compte
● Possèee ees primitives parrticulières :● Ces primitives sont artomic !!
● Décrémenter() //ne peut pars être < 0● Incrémenter()
● Rôle● synchronisartion entre tâches● exclusion mutuelle● Interruption logicielle
● Accès par fle d’attente ● FIFO● PRIORITY
Les objets du temps réelle sémaphore
![Page 72: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/72.jpg)
Introduction aux Systèmes et Logiciels Embarqués 75
● Primitives clarssiques
● Créartion● Initiarlisartion
● Destruction● imparct sur l ’arpplicartion
● Dépôt (incrémentartion)● nombre e’unité
● Retrarit (eécrémentartion)● nombre e’unité ● temps e’arttente
● Infni● fni
void AvrXSetSemaphore(pMutex); //blockingvoid AvrXIntSetSemaphore(pMutex); //non blockingvoid AvrXWaitSemaphore(pMutex);Mutex AvrXTestSemaphore(pMutex); //blockingMutex AvrXIntTestSemaphore(pMutex); //non blockingvoid AvrXResetSemaphore(pMutex);void AvrXResetObjectSemaphore(pMutex);
Les objets du temps réelle sémaphore
Exemple d'AvrX
![Page 73: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/73.jpg)
Introduction aux Systèmes et Logiciels Embarqués 76
Exemples ee primitives● VxWorks
semId = semBCreate(SEM_Q_FIFO | SEM_Q_PRIORITY, SEM_FULL | SEM_EMPTY) ;semId = semCCreate(SEM_Q_FIFO | SEM_Q_PRIORITY, initCount) ;semId = semMCreate(SEM_Q_FIFO | SEM_Q_PRIORITY |SEM_DELETE_SAFE| SEM_INVERSION_SAFE)status = semGive(semId)status = semFlush(semId) ; /* déblocage de toutes les tâches en attentestatus = semTake(semId, temps | WAIT_FOREVER | NO_WAIT) ;
● iRMXsemId_tk = rq_create_semaphore(valInit,valMax,fags,&status) ;rq_send_units(semId,nbUnite,&status)reste = rq_receive_units(semId_tk,nbUnite,temps,&status)
● Win32HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES, InitialCount, MaximumCount, lpName);ReleaseSemaphore ( semhandle , unitNumber , 0 )WaitForSingleObject ( sem , INFINITE | Time-out ) // timeout en ms
● TIM micro-kernel : pars ee « sémarphore »
Les objets du temps réelle sémaphore
![Page 74: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/74.jpg)
Introduction aux Systèmes et Logiciels Embarqués 77
● Moee préemptif● Oreonnarnceur arppelé arprès charque charngement e’étart
• Appel des primitives de communication• Après une routine (si déblocage possible d’une tâche)
● Moee non préemptif● Oreonnarnceur arppelé à lar fn ee tâche / boucle
● tarsk_suspene(), tarsk_exit()
● Oreonnarncement clarssique ● Roune Robin● Roune Robin parr priorités● EDF (earrliest eeareline frst) / RMA (rarte monotonic
arnarlysis)
Les objets du temps réell'ordonnanceur
![Page 75: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/75.jpg)
Introduction aux Systèmes et Logiciels Embarqués 78
● Moee préemptif● Oreonnarnceur arppelé arprès charque charngement e’étart
• Appel des primitives de communication• Après une routine (si déblocage possible d’une tâche)
● Moee non préemptif● Oreonnarnceur arppelé à lar fn ee tâche / boucle
● tarsk_suspene(), tarsk_exit()
● Blocarge ee l’oreonnarnceur● Parssarge en moee non préemptif● Exécution ee primitives système● Primitives spécifques
Les objets du temps réell'ordonnanceur
On en parlela semaine prochaine
![Page 76: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/76.jpg)
Introduction aux Systèmes et Logiciels Embarqués 79
● Pas de nombre limité (théoriquement)
● attente non active (pour le micro-contrôleur)
● Différentes stratégies :
● 1 tâche spécifique qui modifie plusieurs sémaphores lors de l'expiration d'un timer (pas forcément les même à chaque fois) (période ≅ timer)
● Appel d'un timer dans la tâche concernée (période dépendante du temps d'exécution des calculs)
Les objets du temps réeltimer logiciel (1)
![Page 77: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/77.jpg)
Introduction aux Systèmes et Logiciels Embarqués 80
● Événement● synchronisartion entre tâches● reneez-vous
● Boîte aux lettres (FIFO)● échange d’information synchronisées entre tâches
● objet ee communicartion entre lecteurs/écrivarins
● Pipe● écharnge e’informartion synchronisées entre tâches ee processus
eistinct● objet ee communicartion entre lecteurs/écrivarins
Les objets du temps réelobjets haut-niveau
![Page 78: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/78.jpg)
Introduction aux Systèmes et Logiciels Embarqués 81
Contenu du cours
● Qu'est-ce qu'un OS temps réel (RTOS)● RTOS vs GPOS
● Différents RTOS...
● Les objets communs e'un RTOS
● Implémentation d'un RTOS
● Prograrmmartion arvec un OS temps réel
● Mise en Oeuvre
![Page 79: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/79.jpg)
Introduction aux Systèmes et Logiciels Embarqués 82
● Barse ee temps unique pour le système➔ Mise en plarce e’une interruption périoeique : compteur ee ticks
● Activartion e’un timer● intervarlle ee X ms (10, 200, ...)● peut souvent être moeifée
● Tous les ticks //si pré-emptif :● L'OS prene lar marin● L'OS incrémente le compteur ee tick● Vérife si ees timers logiciels ont expiré
● Moeife ees sémarphores ou l'étart ees tâches selon● Ré-oreonnarnce si ees charngement ont eu lieu
● L'OS rene lar marin
Implémentation d'un RTOSgestion du temps
![Page 80: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/80.jpg)
Introduction aux Systèmes et Logiciels Embarqués 87
Contenu du cours
● Qu'est-ce qu'un OS temps réel (RTOS)● RTOS vs GPOS
● Différents RTOS...
● Les objets communs e'un RTOS
● Implémentartion e'un RTOS
● Programmation avec un OS temps réel
● Mise en Oeuvre
![Page 81: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/81.jpg)
Introduction aux Systèmes et Logiciels Embarqués 90
Programmation avec un RTOSles tâches
Principe :
Une tâche par préoccupation, exemple : Lecture des capteurs : 1 (ou plusieurs) tâche Calcul : 1 (ou plusieurs) tâches Écriture sur actionneurs : 1 (ou plusieurs) tâche
Chaque tâche a son propre rythme Périodique (déclenchée par timer) Déclenchée par des handlers d'interruptions externes
Éviter la création de tâche dynamique
![Page 82: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/82.jpg)
Introduction aux Systèmes et Logiciels Embarqués 91
Programmation avec un RTOSles tâches (2)
Principe :
![Page 83: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/83.jpg)
Introduction aux Systèmes et Logiciels Embarqués 92
● Rôle● entité logique ou physique● peut être parrtargée parr plusieurs tâches
● Objet non présent en tarnt que tel earns un OS
● Type ee ressource● structure ee eonnées / zone mémoire● fchier● eispositif physique ● résearu
Programmation avec un RTOSles ressources
![Page 84: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/84.jpg)
Introduction aux Systèmes et Logiciels Embarqués 93
Programmation avec un RTOSles ressources
●Sémarphore e'exclusion mutuelle
●Parssarge en moee non préemptif ou super-priorité
●Marsquarge / eémarsquarge ees interruptions● Pars trop longtemps !
●Opérartion artomique● Difficile à arssurer si on réutilise un OS existarnt
![Page 85: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/85.jpg)
Introduction aux Systèmes et Logiciels Embarqués 97
● Normes● SCEPTRE (1982)● POSIX (Unix)● OSEK/VDX (Automobile)● Profl MARTE ee l’OMG ?● Autosarr ?
● Domarine● Ferroviarire : l’OS préconisé est QNX● Avionique: Arinc
● Supports● Martériel : processeurs supportés, carrtes, mémoire (4 Go sous CE)● Drivers (série, LCD, CAN), piles ee protocole● Fournisseurs et suivi ees versions
Choix d’un RTOS critères
● Coûts● Environnement ee eéveloppement
● (Tornareo 15 000 € sarns fonctionnarlités)● Royarlties (royarlty free)● Développement supplémentarires
● Drivers, protocole
![Page 86: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/86.jpg)
Introduction aux Systèmes et Logiciels Embarqués 98
● Optimisartion ees ressources● Critères ee tarille et/ou ee performarnce
● Le comportement ee l’arpplicartif est connu / estimé
● Le comportement eu support est confgurarble parr l’arpplicartion
● Réutilisartion earns plusieurs contextes arpplicartifs● Services varriés, services ee harut nivearu
● Utilisartion ee librariries
● Aearptarbilité pour les systèmes ouverts ● Gestion eynarmique ee composarnts ou ee services
● Instarllartion, arjout/retrarit, …
Choix d’un RTOS critères
Maintenabilité Accès au code traçabilité des appels
Portabilité Respect de normes
![Page 87: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/87.jpg)
Introduction aux Systèmes et Logiciels Embarqués 99
Contenu du cours
● Qu'est-ce qu'un OS temps réel (RTOS)● RTOS vs GPOS
● Différents RTOS...
● Les objets communs e'un RTOS
● Implémentartion e'un RTOS
● Prograrmmartion arvec un OS temps réel
● Mise en Oeuvre● FreeRtos: http://freertos.org
![Page 88: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/88.jpg)
Introduction aux Systèmes et Logiciels Embarqués 101
Conclusion micro-contrôleur avec un RTOS
● Des concepts génériques...● Tâches, sémarphores, etc
● … maris mises en œuvre spécifques
● Implémentartion● Liée arux spécifcités eu martériel (mémoire, IT)
➔ Une couche de portage spécifique par cible● Simple et préeictible en temps
➔ Allocations statiques
● Choix selon l’utilisartion● Critères : coût (environnement et royarlties, formartion ees équipes ee
eéveloppement), arccès aru coee, eéveloppements spécifques, tarille, préeictibilité, eurée ee vie eu proeuit, quarlité ees fournisseurs
Bien lire les spécifications
Maitrise du HW, prédiction a priori
Phase à ne pas négliger
![Page 89: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/89.jpg)
19.04.18 Julien DeAntoni 102
● AVR-GCC and co
– Cross compilateur basé sur gcc– Linker (avrudude) , librairies pour architecture
spécifiques (avr-libc)– Windows / Linux➔ http://www.avrfreaks.net/wiki/index.php/Documentation:AVR_GCC
● ICCAVR
– Cross compilateur propriétaire Atmel– Windows
➔ CD fourni
Mise en oeuvre: La chaîne de compilation
![Page 90: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/90.jpg)
19.04.18 Julien DeAntoni 103
● Définition des handlers différentes selon le compilateurs / linkers
– AVR-gcc
– ICCAVR
//handler de l'interruption nommées INT_COMPAISR(INT_COMPA_vect){ // traiter l'interruption}
//handler de l'interruption numéro NUM #pragma nom_fonction_handler ISR:NUM[...]nom_fonction_handler{ // traiter l'interruption }
Mise en oeuvre: La chaîne de compilation
![Page 91: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/91.jpg)
19.04.18 Julien DeAntoni 104
● Code C classique
– Arrêt des interruptions– Configuration des registres– Démarrage des interruptions– Boucle sans fin
● Forte utilisation des nombres hexadécimaux / binaire
1 1 0 1 0 0 1 1binaire
Dhexa 3
Décimal 211
Mise en oeuvre: Le code
![Page 92: Introduction à la programmation micro-contrôleurdeantoni/teaching_resources/ISLE/... · Systèmes embarqués Introduction à la programmation micro-contrôleur avec un OS temps](https://reader031.vdocuments.pub/reader031/viewer/2022020303/5b974b5d09d3f25a5a8c96ec/html5/thumbnails/92.jpg)
19.04.18 Julien DeAntoni 105
● Utilisation de types de données simples
– Unsigned char = 8bits– Unsigned int = 16 bits➔ Les multiplications et divisions par des puissances
de 2 se font par un simple décalage à gauche ou à droite
● Des pages avec quelques rappels basiques :– http://wiki.jelectronique.com/doku.php?id=codage
– http://wiki.jelectronique.com/doku.php?id=fonctions_logiques
Mise en oeuvre: Le code