Cours SE IMI
Cours SE IMI
Réalisé par :
Un système embarqué est un système complexe qui intègre du logiciel et du matériel conçus
ensemble afin de fournir des fonctionnalités données. Il contient généralement un ou plusieurs
microprocesseurs destinés à exécuter un ensemble de programmes définis lors de la conception
et stockés dans des mémoires. Le système matériel et l’application (logiciel) sont intimement
liés et immergés dans le matériel et ne sont pas aussi facilement discernables comme dans un
environnement de travail classique de type ordinateur de bureau PC (Personal Computer). Un
système embarqué est autonome et ne possède pas des entrées/sorties standards tels qu’un
clavier ou un écran d'ordinateur. Contrairement à un PC, l’interface IHM (Interface Homme
machine) d’un système embarqué peut être aussi simple qu’une diode électroluminescente LED
(Light Emitter Diode) qui clignote ou aussi complexe qu’un système de vision de nuit en temps
réel ; les afficheurs à cristaux liquides LCD (Liquid Crystal Display) de structure généralement
simple sont couramment utilisés. Afin d’optimiser les performances et la fiabilité de ces
systèmes, des circuits numériques programmables FPGA (Fild Programmable GateArray), des
circuits dédiés à des applications spécifiques ASIC (Application SpecificIntegrated Circuits) ou
des modules analogiques sont en plus utilisés. Le logiciel a une fonctionnalité fixe à exécuter qui
est spécifique à une application. L'utilisateur n'a pas la possibilité de modifier les programmes.
Bien souvent, il n'a pas conscience d'utiliser un système à base des microprocesseurs. Les
systèmes embarqués sont désormais utilisés dans des applications diverses tels que le transport
(avionique, espace, automobile, ferroviaire), dans les appareils électriques et électroniques
(appareils photo, jouets, postes de télévision, électroménager, systèmes audio, téléphones
portables), dans la distribution d’énergie, dans l’automatisation, …, etc.
2. Domaine d’application
− Temps réel : Les systèmes embarqués fonctionnent généralement en Temps Réel (TR) : les
opérations de calcul sont alors faites en réponse à un événement extérieur (interruption
matérielle). La validité et la pertinence d’un résultat dépendent du moment où il est délivré.
Une échéance manquée induit une erreur de fonctionnement qui peut entraîner soit une panne
du système (plantage), soit une dégradation non dramatique de ses performances.
− Coût : Lorsque les systèmes embarqués sont utilisés dans les produits de grande
consommation, ils sont fabriqués en grande série. Les exigences de coût se traduisent alors en
contraintes sur les différentes composantes du système : utilisation de faibles capacités
mémoires et de petits processeurs (4 bits ou 8 bits), mais en grand nombre. Ainsi, les systèmes
embarqués sont particulièrement sensibles au coût de production. Il existe des applications dans
lesquelles les contraintes de coût de production et de maintenance ont une importance de
même niveau que les performances envisagées.
− Poids et volume
− Mobilité
− Autonomie
− Sécurité
− Fiabilité
Les systèmes embarqués requièrent souvent un faible encombrement (faible poids) PDA
(Personal Digital Assistant), Internet et téléphone mobiles, …). Leur technologie fait alors appel à
une électronique et à des applications portables où l’on doit minimiser aussi bien
l’encombrement que la consommation électrique. Par conséquent, la réalisation du packaging
afin de faire cohabiter sur une faible surface de l’électronique analogique, de l’électronique
numérique, des composantes RF (Radiofréquence) sans interférences est une tâche difficile. En
effet, les performances des systèmes sur carte deviennent obsolètes dans le contexte des
• le système contrôlé
• le système de contrôle
> Le système contrôlé = environnement (procédé) équipé d'une instrumentation qui réalise
l'interface avec le système de contrôle
Du fait de leur portabilité et de la mobilité des produits dans lesquels ils sont incorporés, les
systèmes embarqués évoluent généralement dans de conditions environnementales non
déterministes et souvent non maîtrisées. Ils sont exposés à des variations et autres contraintes
environnementales susceptibles d’induire des défaillances : vibrations, chocs, variation de
température, variations d’alimentation, interférences RF, corrosion, humidité, radiations, …
D’où la nécessité de prendre en compte des évolutions des caractéristiques des composants en
fonction des conditions environnementales. En même temps que s’accroît leur sophistication,
les systèmes embarqués sont utilisés dans des applications de plus en plus critiques dans
lesquels leur dysfonctionnement peut générer des nuisances, des pertes économiques ou des
conséquences inacceptables pouvant aller jusqu’à la perte de vies humaines. C'est le cas, par
exemple, des applications médicales ou celles de transports pour lesquelles une défaillance peut
avoir un impact direct sur la vie d'êtres humains. C’est aussi le cas des applications spatiales,
souterraines ou sous-marines où la défaillance peut entraîner des conséquences redoutables
aussi bien en termes de sécurité qu’au niveau économique. Ce type de systèmes doit garantir
une très haute fiabilité et doit pouvoir réagir en cas de panne de l'un de ses composants.
7. Sécurité des SE
L’aspect sécurité d’un système embarqué doit être maintenant pris en compte lors de sa
conception. La sécurité des systèmes embarqués concerne essentiellement les points suivants :
– Le matériel.
– Le logiciel embarqué.
– Les communications avec le monde extérieur.
− Les attaques logicielles : virus, cheval de Troie, deny of service, modification d’adresse IP,
modification d’horloge, fermer un port socket.
Informatique Embarqué
a. Système Transformationnel : Activité de calcul, qui lit ses données et ses entrées lors de son
démarrage, qui fournit ses sorties, puis meurt.
b. Système Interactif : Système en interaction quasi permanente avec son environnement, y compris
après l'initialisation du système ; la réaction du système est déterminée par les événements reçus et par
l'état courant (fonction des événements et des réactions passés) ; le rythme de l'interaction est
déterminé par le système et non par l'environnement.
c. Système Réactif ou Temps Réel : Système en interaction permanente avec son environnement, y
compris après l'initialisation du système ; la réaction du système est déterminée par les événements
reçus et par l'état courant (fonction des événements et des réactions passées) ; mais le rythme de
l'interaction est déterminé par l'environnement et non par le système.
Cours Systèmes Embarqués 7
9. Systèmes embarqués temps réel
Système
Informatique
Ce sont des systèmes liés au contrôle de procédés l'exécution de programmes dans ces systèmes doit
terminer avant une date appelée échéance au-delà de laquelle les résultats ne sont plus valides.
On distingue deux type de systèmes embarqués temps-réel :
Exemple critique : le contrôleur de frein d'une voiture
• Système temps-réel dur/stricte (hard real-time)
Le non-respect des échéances peut avoir des conséquences graves sur le fonctionnement du système ou
sur son environnement (autopilotage, freinage, assistance médicalisée…). Les échéances ne doivent
jamais être dépassées.
• Système temps-réel mou (soft real-time)
Le non-respect des échéances ralentit le système sans conséquences graves (billetterie automatique…).
Le système doit répondre au mieux, le plus rapidement possible.
La plupart des systèmes embarqués sont dit mutlirate ou multi-période
L’architecture des systèmes embarqués peut varier selon les systèmes: on peut par exemple, ne pas
trouver de systèmes auxiliaires dans de nombreux systèmes embarqués autonome et indépendants. En
revanche, l'architecture de base est la plupart du temps composée d'une unité centrale de traitement
(CPU), d'un système d'exploitation qui réside parfois uniquement en un logiciel spécifique (ex: routeur),
ou une boucle d'exécution (ex: ABS). De même l'interface IHM n'est pas souvent existante, mais est
souvent utile pour reconfigurer le système ou vérifier son comportement.
Le fonctionnement du système se résume ainsi:
Il reçoit des informations de l'environnement extérieur qu'il converti en signal numérique
L'unité de traitement composée du CPU, de la mémoire, du logiciel, de l'ASIC et éventuellement
de système externes traite l'information
Le traitement génère éventuellement une sortie qui est envoyée vers la sortie, les systèmes
auxiliaire, les ports de monitoring ou l'IHM
ASIC/FPGA
Actuateurs
Mais ce type de système est peu "réactif" si l'environnement produit des informations à des fréquences
différentes ce qui oblige à prévoir toutes les réactions du système dans la même boucle donc il y a
un problème de performance et en est obligé à imbriquer des boucles de fréquences multiples ce qui
implique des difficultés de réalisation, de lisibilité du code et d'évolution
=> Un système temps réel est souvent un système multitâche incluant un gestionnaire de tâches
(Ordonnanceur)
a. l’informatique embarquée
Les domaines d'utilisation de l'informatique embarqués sont très variés. Les systèmes embarqués sont
donc soumis à des contraintes physiques, de fonctionnement, logicielles, ou matérielles différentes.
On peut classer les acteurs de l'informatique embarquée suivant les critères suivants:
Les contraintes de développements sur un système embarqué sont nombreuses et se rapprochent assez
de celles rencontrées en informatique en général:
La complexité des algorithmes utilisés doit être relativement faible d'autant plus que les
performances et la puissance des systèmes est moindre.
L'absence de MMU limite la taille des applications.
Cours Systèmes Embarqués 11
L’absence de media de stockage permanent..
De nombreuses applications des systèmes embarquées sont des applications temps réels: On
doit souvent ajouter une contrainte temps-réel.
L'utilisation d'outils de Génie Logiciel est fortement conseillée
La conception orientée objet est préconisée dès que cela est possible
Absence de MMU
L'absence de MMU rend impossible la gestion de la mémoire virtuelle. Les processus se retrouvent donc
très vite limités en mémoire car ils doivent tous partager le même espace mémoire, y compris la pile.
Le temps réel
Un système fonctionne en temps réel lorsqu'il est capable d'absorber toutes les informations d'entrée
sans qu'elles soient trop vieilles pour l'intérêt qu'elles présentent, et par ailleurs, de réagir à celles-ci
suffisamment vite pour que cette réaction ait un sens. Les systèmes embarqués temps réels requièrent
la présence d'un automate d'ordonnancement adapté au temps réels (le plus connu: EDF (Earlest
Deadline First). Il arrive parfois que ce soient uniquement des systèmes dédiés à une tache, dans ce cas,
il n'y a pas d'automate d'ordonnancement, le système exécute indéfiniment une seule et même boucle.
C'est le cas de l'ABS.
Le génie logiciel
Aucune méthode de génie logiciel n'y est spécialement préconisé pour le développement de systèmes
embarqués mais le choix d'une méthode est fortement conseillé: Un logiciel pour l'embarqué est en
général produit de manière industrielle et les mises à jours coûtent chers. Les erreurs de conception
sont plus que jamais très coûteuses. Enfin, on pourra citer UML (Unified Modeling Language) et SDL
(Specification and Description Language) qui sont deux notations très utilisées pour la modélisation des
systèmes informatiques.
Ces nombreuses contraintes introduisent un coût important dans le développement d'un système
embarqué.
Application
Système d’Application
Pilotes
Matériel
Le système d'exploitation permet ainsi de "dissocier" les programmes et le matériel, afin notamment de
simplifier la gestion des ressources et offrir à l'utilisateur une interface homme-machine (IHM) simplifiée
afin de lui permettre de s'affranchir de la complexité de la machine physique.
Les systèmes d’exploitation embarqués sont des systèmes d'exploitation prévus pour fonctionner sur
des machines de petite taille, telles que des PDA (personal digital assistants ou en français assistants
numériques personnels débutez en 1996 ) ou des appareils électroniques autonomes (sondes spatiales,
robot, ordinateur de bord de véhicule, etc.), possédant une autonomie réduite. Ainsi, une
caractéristique essentielle des systèmes embarqués est leur gestion avancée de l'énergie et leur
capacité à fonctionner avec des ressources limitées. Les principaux systèmes embarqués «grand public»
pour assistants numériques personnels sont : Windows CE / Windows Mobile / Window Smartphone /
Android /Bada/BlackBerry OS/Firefox OS/KaiOS/ Ubuntu Touch/ UBports …etc
Les systèmes d’exploitation temps réel ( RTOS) sont des systèmes pour lesquels l'exécution des
programmes est soumise à des contraintes temporelles. Les résultats de l'exécution d'un programme
n'est plus valide au delà d'un certain temps connu et déterminé à l'avance. Généralement on trouve ces
systèmes TR dans les systèmes embarqués Exemples de systèmes d'exploitation temps réel : OS-9 ;
RTLinux (RealTime Linux) ; QNX ; VxWorks; eCos; FreeRTOS; Linux embarqué; LynxOS ; PikeOS ;
RTEMS ;µC/OS-II.. etc.
L'architecture matérielle d'un système embarqué liste les composants le constituant ainsi que la
manière avec laquelle ils sont agencés entre eux. Il existe plusieurs types de représentations possibles
pour décrire une architecture matérielle, la plus courante et pratique étant un diagramme blocs. Ce type
de diagramme comporte généralement :
Des blocs qui représentent les différents composants, unités ou sous-systèmes composant le
système embarqué, selon le niveau d'abstraction désiré pour la description de l'architecture
matérielle.
Des liens entres blocs qui représentent un contrôle, une commande, un échange d'information,
avec éventuellement le type de communication utilisé, de nouveau selon le niveau d'abstraction
désiré.
L’ architecture type d'un système embarqué. On y voit les principaux composants que l'on retrouve
dans la plupart des systèmes embarqués.
Deux ouvertures vers le monde extérieur sont présentes : le bus de périphériques et un port utilisé pour
le debug des programmes. Pour le reste, outre le processeur, on peut voir qu'il y a des horloges, des
mémoires, des dispositifs généraux, spécifiques et de communication. Ces composants sont reliés au
processeur à l'aide de bus système pouvant être de différents types. Cette architecture type se retrouve,
par exemple, sur des cartes telles que l'Arduino, la Raspberry Pi ou la BeagleBone Black.
Un système embarqué étant destiné à une application spécifique, son hardware est spécialement conçu pour
ce dernier. On élimine, par exemple, tout circuit superflu afin de réduire les couts engendrés par des
ressources inutiles. De plus, plusieurs choix sont possibles pour l'unité de calcul à prendre. Voyons ici une
série de composants ou sous-systèmes de l'architecture type d'un système embarqué.
1. Unité de calcul
Après l'apparition de l'Intel 4004 et du MOS-LSI, de nombreux autres types d'unités de calcul ont vu le
jour, chacun ayant ses propres spécificités. Dans le monde des systèmes embarqués, il y a une pléthore
de choix possibles pour déterminer l'unité de calcul qui sera utilisée.
Il y a tout d'abord le processeur, notamment caractérisé par son jeu d'instructions, c'est-à-dire
l'ensemble des instructions qu'il est capable d'exécuter, par sa fréquence d'horloge (Hz) et au nombre
d'instructions exécutables par secondes (MIPS). Ces deux dernières caractéristiques permettent d'établir
ses capacités et sa puissance de calcul.
On retrouve également des circuits spécifiques qui implémentent des fonctions directement câblées en
hardware. Ce deuxième type d'unité de calcul est moins générique, mais plus rapide, performant et
généralement plus compact que les processeurs.
Plusieurs types d'implémentations sont possibles pour les unités de calcul, allant de systèmes plus
génériques comme l'Intel 4004 vers des solutions beaucoup plus spécifiques. On distingue
essentiellement quatre grandes catégories :
Le General Purpose Processor (processeur à usage général) (GPP) propose un jeu d'instructions
assez large et varié permettant de réaliser beaucoup de choses. C'est le genre de processeur
que l'on retrouve notamment dans les ordinateurs « traditionnels ».
L'Application-Specific Instruction set Processor (processeur dont le jeu d'instructions est
spécifique à l'application) (ASIP) possède un jeu d'instructions qui est spécifiquement conçu
pour un certain ensemble d'opérations.
Vient ensuite le hardware reprogrammable dont la fonction peut être modifiée après sa
fabrication, une fois sorti d'usine donc. Pour être précis, il s'agit plus d'une reconfiguration que
d'une reprogrammation étant donné que ce type d'unité de calcul n'exécute pas d'instructions.
Enfin, l'unité de calcul la plus spécifique est l'Application-Specific Integrated Circuit (circuit
intégré propre à une application et spécialisé pour cette dernière) (ASIC) qui est un circuit
intégré réalisant les fonctions nécessaires pour une application donnée.
2. Horloge
L'horloge est le second composant essentiel, avec l'alimentation en énergie. En effet, elle est utilisée
pour cadencer le fonctionnement du processeur et donc l'exécution des instructions. C'est à son rythme
que le processeur répète inlassablement le cycle fetch-decode-execute, récupérant les instructions
depuis la mémoire, les décodant et les exécutant.
Un système embarqué contient également des Real-Time Clocks (RTC), c'est-à-dire des circuits de timer.
Elles sont utilisées par divers composants, notamment l'ordonnanceur de tâches dans le cadre d'un
microprocesseur ou pour des systèmes temps réel.
3. Mémoire
Un autre type de composant que l'on retrouve dans tous les systèmes embarqués est la mémoire. Il
existe de nombreux types de mémoire pouvant être permanentes ou volatiles, internes ou externes.
Concernant les systèmes embarqués, on retrouve notamment les trois types suivants :
La Read-Only Memory (mémoire morte, ou mémoire à lecture seule) (ROM) est une mémoire
permanente et en lecture seule utilisée pour stocker le programme exécuté par le système
embarqué. Le processeur y récupère les instructions à exécuter. On y retrouve également
d'autres données comme le code de démarrage et d'initialisation du système, des pointeurs vers
une série de routines, etc.
La Random-Access Memory (mémoire vive, ou mémoire à accès aléatoire) (RAM) est une
mémoire volatile utilisée comme mémoire de travail. Elle stocke les variables créées par le
programme et est utilisée comme mémoire tampon d'entrée/sortie pour le traitement de son
ou d'images, par exemple.
Enfin, l'Electrically Erasable Programmable ROM (mémoire ROM effaçable électriquement)
(EEPROM) est une mémoire permanente, mais dont le contenu peut être modifié en flashant la
mémoire à l'aide d'un procédé électrique. On l'utilise notamment comme mémoire cache, pour
stocker une copie des instructions et données chargées à l'avance depuis une mémoire externe
ou des résultats temporaires de calculs pour du traitement rapide.
4. Alimentation
Afin de pouvoir fonctionner, un système embarqué a besoin d’être alimenté en énergie électrique. Il
doit dispenser d’une source d’énergie qui peut être :
− Le courant du secteur : par exemple machine à laver, récepteur, poste de télévision, système
d’alarme…
− Générateur de courant électrique : alternateur de voiture pour le cas du GPS, de l’ABS, de l’ESP −
Energie renouvelable : énergie solaire
Dans le cas des systèmes critiques, une alimentation redondante doit être utilisée. Par exemple un
système d’alarme doit fonctionner correctement en cas de coupure du courant de secteur. Un système
embarqué doit être équipé d’un système de gestion de l’alimentation. Par exemple les systèmes
alimentés par une batterie comme les téléphones.
5 . Conversion Numérique-Analogique
5.1 Définition
Un Convertisseur Numérique Analogique (CNA) reçoit une information numérique ( mot de n bits ) et le
transforme en un niveau analogique ( tension ou courant ).
Schéma :
Il est nécessaire de connaître la plage de tension utilisée par le CNA; cette plage est définie par les deux
tensions V ref+ et Vref- :
Remarque : le nombre maximal en entrée est Nmax = 2n – 1 on ne pourra donc pas avoir Vmax = Vref+ .
Avec :
Soit = + −
3- Définitions
Temps de conversion: le temps de conversion est limité par la vitesse de commutation des
interrupteurs électroniques. Ce temps limite la fréquence d'échantillonnage.
pour n = 4 :
Relation US = f ( N(10) )
Remarques :
- La relation générale des CNA est vérifiée avec Uref- = 0 ; Uref+ = Uref et Q < 0.
- L'inconvénient de ce type de convertisseur est la difficulté à fabriquer des résistances
pondérées précises.
Schéma pour n = 4 :
Relation US = f ( N(10) )
On montre que:
Donc:
Remarques :
- La relation générale des CNA est vérifiée avec Uref- = 0 ; Uref+ = Uref et Q > 0.
- L'inconvénient de ce type de convertisseur est l'existence de régimes transitoires de durées
non négligeables ( commutation de tension pour les interrupteurs )
Relation US = f ( N(10) )
6. Conversion Analogique-Numérique
6.1- Définition
Un Convertisseur Analogique Numérique ( CAN ) reçoit une information analogique ( tension ou courant
) et la transforme en un code de sortie numérique ( mot de n bits ).
Il est nécessaire de connaître la plage de tension convertie en entrée du CAN; cette plage est définie par
les deux tensions Vref+ et Vref- :
6.3- Définitions
Le temps de conversion d'un CAN est généralement plus long que pour un CNA car la
conversion utilise des opérations de comptage.
Les défauts d'un CAN réel sont de même types que ceux d'un CNA :
- Erreur de décalage
- Erreur de linéarité
- Erreur de gain.
Schéma :
Schéma :
Principe de fonctionnement :
La tension ue à convertir est comparée à une rampe "numérique" tension uCNA(t) ( tension de sortie du
Dès que ue = uCNA , le compteur s'arrête et son contenu est : N(10) = k. ue avec k = 1/qCNA (qCNA =
quantum du CNA ).
Limitations :
Comme pour le CAN à rampe, le temps de conversion est long. La précision dépend de celle du
CNA utilisé pour produire uCNA.
Le montage comporte un ensemble de comparateurs. Les entrées "+" sont reliées entre elles et on leur
applique la tension ue à convertir. Une tension de référence Uref est divisée par un réseau de résistances
R et les fractions de Uref sont appliquées aux entrées "-" des comparateurs. Enfin, un circuit de logique
combinatoire délivre le nombre N(2) à partir des sorties des comparateurs.
7. Actionneurs
Dans une machine ou un système de commande à distance, semi automatique ou automatique,
un actionneur est l'organe de la partie opérative qui, recevant un ordre de la partie commande
via un éventuel pré-actionneur, convertit l'énergie qui lui est fournie en un travail utile à
l'exécution de tâches, éventuellement programmées, d'un système automatisé. En d'autres
termes, un actionneur est l'organe fournissant la force nécessaire à l'exécution d'un travail
ordonné par une unité de commande distante. Les Actionneurs permettent de transformer
l’énergie reçue en un phénomène physique (déplacement, dégagement de chaleur, émission de
lumière ...)
Exemples d’actionneurs :
- Les vérins : Les vérins permettent d’obtenir un mouvement rectiligne avec plus ou moins de
force. Ils peuvent fonctionner soit avec de l’air comprimé (vérin pneumatique), soit avec de
l’huile hydraulique (vérin hydraulique).
- Afficheur ou voyant: Permet de créer un échange visuel, soit par un voyant, soit par un
message textuel ou numérique.