introduction à la programmation micro-contrôleurdeantoni/teaching_resources/isle/... · systèmes...

92
Systèmes embarqués Systèmes embarqués Introduction à la programmation Introduction à la programmation micro-contrôleur micro-contrôleur avec un OS temps réel avec 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

Upload: vophuc

Post on 11-Sep-2018

217 views

Category:

Documents


0 download

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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