Vous êtes sur la page 1sur 5

ÉCOLE SUPERIEURE D’INGENIERIE AUTOMOBILE ET AERONAUTIQUE

FILIERES MECATRONIQUES
2ème Année Cycle Ingenieur

P O L Y C O P I E D E C O U R S

ELEMENT DE MODULE
LES NOYAUX TEMPS REEL
Chapitre N°1 : Introduction et Définitions

SOMMAIRE :

Im p or t anc e d' un s yst ème d'e x pl oit a tio n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1


S yst è mes te m ps r é e l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
S yst è mes e mb ar q ué . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
B us de c o m m unic at io n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Les tâc he s ............................................................................ 4
Un pr oc e ssu s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Ahmed Hanafi
ahmed.hanafi@u smba.ac.ma

Année Universitaire

2023 – 2024
CHAPITRE N°1 : SYSTEMES TEMPS REEL – INTRODUCTION & DEFINITIONS

Développement des connaissances

1. IMPORTANCE D'UN SYSTEME D'EXPLOITATION :


Un système d'exploitation (OS pour Operating System), est un APPLICATION 1 APPLICATION 2 APPLICATION3
ensemble de programmes chargés d'assurer la liaison entre les
ressources matérielles et les applications logicielles. Ainsi,
lorsqu'un programme désire d'accéder à une ressource

Système d’exploitation
Gestion des ressources
matérielle, il lui suffit d'envoyer les informations au système (Mémoire)
d'exploitation, qui se charge de les transmettre au périphérique
concerné via son pilote. Gestion des entrées/sorties
Sans OS, il faudrait que chaque programme reconnaisse et prenne (Pilotes – Interruptions)
en compte la communication avec chaque type de périphérique.
Donc, la création de logiciels applicatifs à l'aide d'un OS permet un NOYAU ou KERNEL
gain de temps important puisque la programmation se fera (Gestion des tâches)
uniquement au niveau de la couche Application, tout en exploitant
les fonctions toutes faites de l'OS au niveau de la gestion et
l'exécution des tâches, l'accès aux entrées/sorties, la manipulation
des fichiers et des ressources, la gestion des droits et la détection MATERIEL
des erreurs.
Cette définition générale concerne les systèmes d'exploitation comme Windows ou Linux. Cependant les noyaux temps réel comme
FreeRTOS ou µOSII qui sont le sujet de ce module, sont principalement dédiés à la gestion et la synchronisation des tâches d'un système
embarqué et n'offre pas un écosystème intégrant par exemple les pilotes pour la gestion du matériel ou pour la communication réseau.
En revanche, les noyaux temps réel nous donnent les outils pour implémenter la gestion des ressources matériels.

2. SYSTEME TEMPS REEL :


Un système temps réel (STR) est un système qui doit répondre à un ensemble de stimuli provenant de son environnement, dans un
intervalle de temps dicté par ce même environnement :

Environnement

Acquisition Traitement Restitution et commande

Système « temps réel »

Un tel système est donc caractérisé par :


 Une exactitude logique : Les résultats des traitements (sorties) doivent être corrects en termes de valeur et déterminées
en fonction des entrées et de l'état interne ;
 Une exactitude temporelle : les sorties doivent être corrects en termes de temps d’arrivées. Le système doit garantir que les
tâches se terminent avant des échéances bien définies.
Exemples de contraintes de temps :

Échéance de terminaison au plus tôt ou au plus tard


(deadline)
Exemple : déclenchement de l'airbag d'une
voiture

Cohérence entre instants de production des


résultats
Exemple : synchronisation son–image

Cadence de production des sorties


Exemple : régularité de présentation des
Images dans une vidéo (24 à 60 images/s)

On distingue deux principales classes de systèmes temps réel :


 Temps réel strict/dur/critique (hard real time) : un retard dans l'obtention du résultat (non-respect d'une contrainte
temporelle) le rend inutile, compromet le fonctionnement du système et/ou l’intégrité des personnes (détection de missile, pilote
automatique des avions). Le coût financier d'une défaillance de cette classe de systèmes est d'ordre supérieur ou égal
à celui du système.

ESI2A - HANAFI AHMED 2


CHAPITRE N°1 : SYSTEMES TEMPS REEL – INTRODUCTION & DEFINITIONS

Développement des connaissances

 Temps réel souple/mou (soft real-time) : un retard dans l'obtention du résultat (non-respect d'une contrainte temporelle)
n'entraine pas des conséquences dramatiques (distributeur de billets, téléphone portable, jeux vidéo).
Conclusions :
 La plupart des systèmes temps-réel sont hybrides et doivent en plus respecter des contraintes de coût, d’espace, de
consommation d’énergie et de matériel.
 Un système temps réel ne veut pas dire toujours système rapide mais c'est un système fiable qui fournit les résultats exacts
dans un temps bien spécifique, mais celui-ci peut être long.

3. SYSTEME EMBARQUE :
Un système embarqué (SE) est défini comme un système électronique et informatique autonome, souvent temps réel, spécialisé dans
une tâche bien précise. Le terme "système embarqué" désigne la combinaison de logiciel et de matériel, avec des capacités fixes ou
programmables :
 Composants hardware :
• Processeurs RISC (Reduced Instruction-Set Computer) comme les processeurs ARM, PowerPC, PIC, etc. ;
• DSP (Digital Signal Processing) ;
• FPGA (Field-Programmable Gate Array) ;
• Périphériques de communication, afficheurs et interfaces
 Composants software :
• Système d’exploitation embarqué en général temps réel ;
• Logiciels spécifique, compilateur et interpréteurs.
Les SE sont étudiés pour effectuer des tâches précises et prédéfinies avec un cahier des charges contraignant et caractérisés par :
 Un fonctionnement en temps réel pour des raisons de fiabilité et de rentabilité [Interruptions matérielles, deadlines et système
multirate (traitement à différentes fréquences)] ;
 Des ressources généralement limitées. Cette limitation est d'ordre spatial (encombrement réduit et taille mémoire limitée) et
énergétique (consommation restreinte) ;
 Un environnement de fonctionnement sévère (Température, vibrations, interférences RF, radiations, eau, feu, etc.).

Exemple de système temps réel : l'automobile


L'architecture matèrielle des systèmes électroniques embarqués dans l'automobile est composée de calculateurs appelés
Electronic Control Units (ECUs), interconnectés par des réseaux de communication [entre 40 et 80 ECUs dans les modèles de
voiture Audi A8] :

Illustration du système électrique/électronique embarqué dans un véhicule

Chaque ECU est réalisé autour d'un microcontrôleur exécutant un logiciel pour la supervision et le contrôle des capteurs et des
actionneurs. Sur chaque ECU, un ensemble de tâches de niveau applicatif exécutent des algorithmes de contrôle :
 Système d'injection électronique du carburant ;
 Système de contrôle des freins (BCM : Brake Control Module) ou Système de freinage antiblocage (ABS : Antiblockiersystem) ;
 Système de contrôle de l’airbag (ACU : Airbag control unit) ;
 Système de contrôle de l’habitacle (BCU : Body control module) : fermeture des portes, vitres électriques, etc.
Le système électrique/électronique embarqué dans l'automobile peut être considéré comme un système réparti ou distribué,
c’est-à-dire :
 Composé de plusieurs systèmes calculatoires autonomes ;
 Sans mémoire physique commune ;
 Qui communiquent par l'intermédiaire d'un réseau.

ESI2A - HANAFI AHMED 3


CHAPITRE N°1 : SYSTEMES TEMPS REEL – INTRODUCTION & DEFINITIONS

Développement des connaissances

L'industrie automobile divise traditionnellement le véhicule en 4 domaines :


1. Le domaine "contrôle moteur" qui englobe le contrôle du moteur et de la transmission en fonction des demandes du
conducteur et de l'état du véhicule et de son environnement. C'est un système temps réel critique avec des lois de
contrôle complexes en fonction de rotation du moteur et des contraintes temporelles (l'ordre de quelques ms).
2. Le domaine "châssis" qui est le domaine par excellence de la sécurité. Il s'occupe du contrôle de la suspension, de la
direction et du freinage. C'est aussi un système temps réel critique avec des contraintes de temps strictes (Allumer les
feux arrière rouges en moins de 50ms en cas de freinage).
3. Le domaine "habitacle ou "body", qui implémente les fonctions liées au confort du conducteur (Affichage tableau de
bord, contrôle des essuie-glaces, climatisation, etc.). C'est un système temps réel souple et moins critique.
4. Le domaine "télématique/multimédia", qui prend en charge la radio, la communication sans-fil, les systèmes de
surveillance, l'aide à la navigation, les jeux, etc. C'est un système temps réel souple ou le problème ne se pose pas en
termes de temps réel, mais en termes de qualité de service réalisable à un coût raisonnable.

4. BUS DE COMMUNICATION :
On distingue deux types de Bus de communication :
 Les bus "inter circuits" comme les bus I2C ou SPI et qui permettent la communication entre les différents composants
matérielles d'un système embarqué ou un microcontrôleur et ses périphériques ;
 Les bus "inter systèmes" comme le bus CAN et qui permettent la communication entre systèmes embarqués ou entre un
système embarqué et son environnement (Actionneurs et capteurs).

5. LES TACHES :
Un système temps réel est toujours décomposé en tâches, chacune ayant des fonctionnalités, des temps d’exécution et des échéances
différentes. On distingue alors deux architectures de systèmes temps réel :
 Architecture mono-tâche : système temps-réel simple à définir. Il suffit de répéter indéfiniment la suite de tâches :
 Attendre un stimulus
 Agir en fonction du stimulus
Le dimensionnement du processeur dépend du temps de réponse souhaité.

 Architecture multitâche : système supportant l’exécution pseudo-parallèle de plusieurs tâches avec les problèmes qui se
posent au niveau de :
 Accès au processeur
 Accès concurrent à la mémoire
 Accès aux périphériques
Il faut alors prévoir un ordonnancement permettant au système de remplir son rôle.
Il est intéressant de noter que le concept de programmation multi-tâches est autant valable sur un processeur simple cœur que
sur un multi-cœur. Sur un simple cœur, les parties de tâches s’exécutent tour à tour de manière transparente, et sur un multi-cœur,
un réel parallélisme peut être observé, chaque cœur pouvant exécuter un ensemble de tâches.

Pour un noyau temps réel, une tâche ("Thread" ou "Task") peut être définie comme suit :
 C'est une fonction C avec une boucle infinie contenant le code d'exécution de la tâche
void TaskName( void *pvParameters ) void TaskName( void *pvParameters )
{ {
for( ;; ) // faire toujours While(1) // faire toujours
{ {
-- code de la tâche -- -- code de la tâche --
} }
} }
 Chaque tâche doit posséder une priorité et sa propre zone mémoire pile (Stack). La pile aura pour rôle de sauvegarder les
variables locales de la tâche ainsi qu'une structure de donnée TCB " Task-Control Block " contenant :
 Un identifiant ou code d'identification ;
 Une référence vers le code contenant les instructions du programme ;
 Une priorité ou niveau de priorité ;
 Un état : Prête – Bloquée – En cours – Suspendue.
 Un contexte contenant des informations liées à l’exécution de la tâche comme :
• Compteur de programme PC qui pointe l'instruction en cours d'exécution ou prochainement exécutée.
• Pointeur de pile SP contenant les variables locales de la tâche ainsi que diverses informations temporaires.

ESI2A - HANAFI AHMED 4


CHAPITRE N°1 : SYSTEMES TEMPS REEL – INTRODUCTION & DEFINITIONS

Développement des connaissances

Note :
Sous un RTOS, le noyau utilise une zone mémoire RAM de taille configurable nommée "Heap" qui contient la pile et le
TCB correspondant à chaque tâche gérée par le noyau.
Mémoire RAM
0x1FFFF
(pour le RTOS)
Heap ou Tas

Task A Stack
Task A
Task A TCB
Task B

Main Stack

0x00000

6. UN PROCESSUS :
Un processus comprend une ou plusieurs tâches. Il possède un espace mémoire d'adressage qu'on peut décomposer en trois parties :
 Le code contenant les instructions du programme (text segment en anglais).
 Les variables globales et les variables allouées dynamiquement (data segment en anglais).
 La zone mémoire Heap, où les zones mémoires pile (Stack) et les TCB des tâches gérées par le noyau sont stockés.

Espace d’adressage du processus

Heap Segment Text Segment ou Code


Task 1 Stack void Task1( void *pvParameters );
pvParameter void Task2( void *pvParameters );
i = 100 int x, y;
Task 1 TCB
void Task1( void *pvParameters )
Task 1 ID Attributs Registres { int i;
212 Priorité = 2 SP for( ;; ) { Code Task 1 }
Taille = …. PC
}
void Task2( void *pvParameters )
Task 2 Stack { int j ;
pvParameter for( ;; ) { Code Task 2 }
j = 10 }
Task 2 TCB
void main(void)
Task 2 ID Attributs Registres {
214 Priorité = 1 SP
// Initialisation plateforme
Taille = …. PC
Init();
// Création de 2 tâches
Data Segment xTaskCreate( Task1, "Task 1", Stack_size, Prio_1);
xTaskCreate( Task2, "Task 2", Stack_size, Prio_2);
Task1 // Démarrage ordonnanceur
Task2 vTaskStartScheduler();
x while(1);
y }

MÉMOIRE DE DONNEES (RAM) MÉMOIRE PROGRAMME (Flash)

7. LES RESSOURCES PARTAGEES :


Une ressource est définie comme une entité utilisée par une tâche : mémoire, variable, entrées/sorties, périphérique, énergie, etc.
Dans le cas où une ressource est utilisée par plusieurs tâches, on parle de Ressource partagée "shared resource".
Généralement, l’accès à une ressource partagée doit être contrôlé afin d’éviter les conflits. Ex. : 2 tâches écrivant dans une variable en
même temps.

ESI2A - HANAFI AHMED 5

Vous aimerez peut-être aussi