UKOnline

Définition

Un système embarqué est un système électronique et informatique qui se trouve au sein d'un produit plus large. Son but premier consiste à traiter de l'information reçue depuis son environnement pour en faire profiter le produit hôte qui l'héberge. Par exemple, les voitures modernes peuvent être équipées d'un système de climatisation de l'air complètement contrôlé par un système embarqué. Ce dernier collecte de l'information sur la température et sur l'humidité de l'air au sein de la voiture et, sur base de cette dernière, active ou non le climatiseur, l'humidificateur, le déshumidificateur, etc.

Contrairement à un ordinateur « traditionnel », un système embarqué n'a pas de raison d'être seul. Il s'agit toujours d'un composant faisant partie d'un système plus large. On ne le voit donc pas forcément même si ce dernier est de plus en plus présent. Alors que l'on comptait environ 150 millions d'ordinateurs « traditionnels » dans les années 2000, plus de huit milliards de microprocesseurs se trouvaient déployés dans des systèmes embarqués ! (Proactive Computing, par David Tennenhouse, dans Communications of the ACM, Vol. 43 No. 5 (mai 2000), pages 43–50). Enfin, comme client, on n'acquiert généralement pas un système embarqué seul pour traiter de l'information. Ce que l'on achète, c'est un produit qui comporte un ou des systèmes embarqués, ceux-ci collectant de l'information à destination du produit, permettant ainsi de rendre un meilleur service à son ou ses utilisateurs.

La figure 1 résume les éléments qui ont déjà été mis en avant. Le système embarqué se retrouve comme composant d'un système plus large, interagissant avec des processus externes en récupérant de l'information via des senseurs et en agissant dessus via des actuateurs. Il peut également être en liaison directe avec l'utilisateur.

Vue globale système embarqué
Un système embarqué traite de l'information sur des processus externes provenant de senseurs et d'informations directes provenant de l'utilisateur pour ensuite agir sur les processus externes via des actuateurs ou directement informer l'utilisateur.

Un senseur, ou capteur, joue le rôle d'entrée pour le système embarqué, lui permettant de recevoir une information provenant de l'extérieur. Il en existe de nombreux tels que des senseurs de température, d'humidité, de proximité, de contact, des accéléromètres, des compte-tours, etc. Un actuateur, ou actionneur, joue le rôle de sortie pour le système embarqué, lui permettant de produire une action sur l'environnement extérieur. Il en existe également de nombreux tels que des moteurs, des vérins, des baffles, des LEDs, des écrans d'affichage, etc.

De manière générale, on ne se limite pas à des senseurs et actuateurs comme éléments d'entrée/sortie entre le système embarqué et son environnement. Outre cet aspect plus physique, des entrées peuvent provenir, par exemple, d'une configuration externe ou d'une communication avec un réseau externe qui se fera, évidemment, à travers un module de communication que l'on peut identifier à un senseur. Concernant les sorties, on ne se limite de nouveau pas à des actions physiques sur un système, mais on considère également l'impression de valeurs via un écran ou des LEDs, par exemple, qui se fera aussi grâce à des éléments identifiables à des actuateurs.

La figure 2 montre une découpeuse laser commandée par au moins un système embarqué. Ce dernier reçoit une configuration de départ et une séquence d'instructions à exécuter pour effectuer une découpe. Une série de senseurs permet au système embarqué de connaitre la position du laser, sa hauteur, sa température, etc. Grâce à ces informations, il contrôle une série d'actuateurs pour placer la tête de découpe au bon endroit, ajuster la puissance du laser, etc.

Découpeuse laser
Une découpeuse laser est commandée par un système embarqué qui possède une batterie de senseurs lui permettant, par exemple, de connaitre la position de son laser et d'actuateurs lui permettant d'effectuer la découpe demandée, par exemple, en contrôlant la puissance du laser.

La figure 3 présente une vue orientée-produit d'un système embarqué. On peut le voir comme implémentant un processus qui produit des sorties sur base d'entrées collectées. Une solution complexe est composée de plusieurs systèmes embarqués, typiquement coopératifs, dont les processus interagissent entre eux, les sorties des uns pouvant être les entrées des autres, afin de rendre un service global au niveau du système.

Vue orientée-produit système embarqué
Un système embarqué est un processus qui produit des sorties à partir d'entrées qu'il collecte depuis son environnement.

La définition proposée par l'Institution of Electrical Engineers (IEE) est assez bien en accord avec la figure 1 et résume les différents points déjà présentés. Elle définit les systèmes embarqués comme étant :

“the devices used to control, monitor or assist the operation of equipment, machinery or plant. `Embedded' reflects the fact that they are an integral part of the system. In many cases their embeddedness may be such that their presence is far from obvious to the casual observer [...]”

Un système embarqué est conçu pour exécuter une tâche spécifique bien définie, contrairement à un ordinateur « traditionnel » dont on dit qu'ils sont à usage général. L'une des raisons est qu'ils possèdent généralement moins de ressources et sont moins performants que les ordinateurs « traditionnels ». Par conséquent, le software des systèmes embarqués est généralement aussi plus spécifique.

Enfin, les systèmes embarqués sont très souvent destinés à fonctionner en autonomie, c'est-à-dire qu'ils ne devront que peu interagir directement avec l'utilisateur, en général. Du coup, ils ne sont souvent pas équipés de clavier physique comme dispositif d'entrée et l'écran d'affichage est souvent absent ou très réduit.

Exemple

On retrouve des systèmes embarqués dans de nombreux appareils et dispositifs. Ils peuvent être seuls ou à plusieurs, isolés du reste du monde et cloisonnés dans le système hôte ou collaborant avec d'autres systèmes.

Ils se retrouvent vraiment partout, en commençant par les appareils électroménagers tels que les machines à laver, fours à micro-ondes, toasters, etc. Dans ces appareils, on retrouve typiquement un seul système embarqué, peu évolué, dont le but est de gérer leurs différents états de fonctionnement. On retrouve également des systèmes embarqués dans tout ce qui est électronique grand public tels que les appareils photos et caméras numériques, consoles de jeu, téléviseurs, smartwatches, etc. On en retrouve également dans les systèmes d'information et de communication, à commencer par les téléphones portables et smartphones. Ils sont aussi présents dans d'autres dispositifs de communication tels que les modems-routeur, fax, mais également tout le long de la chaine de communication, notamment dans les antennes-relais et les satellites.

Exemples de systèmes embarqués
De nombreux appareils ou dispositifs que nous côtoyons tous les jours sont équipés de un ou plusieurs systèmes embarqués.

Les systèmes embarqués ne sont donc pas présents que chez le grand public, mais sont largement utilisés dans le monde industriel. On les retrouve aussi dans les chaines de production, dans des stations de contrôle ou comme senseurs (centrale nucléaire, trafic aérien, activité volcanique, balises d'alerte tsunami, etc.). Il s'agit souvent de systèmes embarqués devant être beaucoup plus robustes afin de supporter des conditions bien plus strictes que celles des applications destinées au grand public.

Enfin, terminons avec la voiture comme dernier exemple. Il s'agit, tout comme d'autres moyens de transport tels que les avions, d'un système constitué de nombreux systèmes embarqués, certains remplaçant par ailleurs des dispositifs qui relevaient auparavant de l'électromécanique. Dans une voiture moderne d'aujourd'hui, près de $40\%$ de sa valeur concerne les systèmes embarqués qui la peuplent. Sans être exhaustif, on en retrouve pour contrôler l'ABS, la boite de vitesse, le moteur, la climatisation, les systèmes de divertissement, etc.

Pour résumer, ce n'est pas bien compliqué de trouver un système embarqué de nos jours. Levez-vous, faites un tour complet sur vous-même en regardant autour de vous et, à moins que vous ne soyez dans un désert perdu au milieu de nulle part, vous ferez face à plusieurs systèmes embarqués visibles ou invisibles !

Type

On peut distinguer quatre principaux types de systèmes embarqués en fonction du type d'application visé :

  • Les systèmes embarqués à usage général exécutent des applications similaires à celles exécutées sur des ordinateurs « traditionnels », mais ils sont embarqués dans des packages de petite taille. On a, par exemple, les assistants personnels (PDA) et les guichets automatiques bancaires (ATM).
  • Les systèmes embarqués de contrôle sont utilisés pour effectuer un contrôle en boucle rétroactive fermée de systèmes temps réel. On les retrouve notamment dans les moteurs de voiture, les centrales nucléaires et pour le contrôle aérien.
  • On peut également utiliser des systèmes embarqués pour traiter des signaux, c'est-à-dire réaliser des calculs sur des gros flux de données. Ces derniers se retrouvent typiquement dans le traitement audio et vidéo et dans les radars et sonars.
  • Enfin, des systèmes embarqués sont également utilisés dans le domaine des communications et réseaux, pour effectuer de la transmission de données et réaliser des communications. Ils sont notamment utilisés dans la téléphonie et pour l'internet.

Ce premier classement caractérise les systèmes embarqués en fonction du type d'application pour lequel ils sont conçus et utilisés. Certains appareils peuvent, de prime abord, se retrouver dans plusieurs catégories. Par exemple, une console portable de jeu est à la fois un système embarqué à usage général puisqu'elle peut exécuter des jeux comme un ordinateur « traditionnel », mais elle peut également être spécialisée dans l'audio et la vidéo. Il faut aussi garder à l'esprit qu'un appareil peut contenir plusieurs systèmes embarqués, comme l'exemple de la voiture précédemment évoqué.

On peut également classer les systèmes embarqués en fonction du type de fonction qu'ils calculent :

  • Un système embarqué peut avoir pour but de s'assurer qu'une loi de contrôle soit respectée. Par exemple, un drone est normalement équipé d'un contrôleur PID (un contrôleur PID, Proportional-Integral-Derivative, calcule une valeur d'erreur entre un objectif et une valeur mesurée et produit des commandes à exécuter sur le système afin que celui-ci se rapproche de l'objectif) qui permet d'assurer sa stabilité en vol stationnaire.
  • Une autre fonction possible, par exemple présente dans une machine à laver, consiste à représenter une logique séquentielle, alternant entre différents modes de fonctionnement.
  • On retrouve également le traitement de signaux comme une fonction possible. Des systèmes embarqués sont spécialisés dans la compression et décompression de contenu multimédia, l'application de filtres pour des sons, etc.
  • Des systèmes embarqués sont également utilisés pour jouer le rôle d'interface pour des applications spécifiques. Ils vont ainsi gérer des boutons, lampes ou alarmes sonores ou être utilisés pour gérer des entrées-sorties rapides comme dans des contrôleurs de disques durs ou SSD, par exemple.
  • Enfin, il existe des systèmes embarqués dont le but est de réagir à des fautes. Leur fonction est simple tant que tout va bien, ils ne font juste rien. Mais lorsqu'un comportement anormal est détecté, ils réalisent un diagnostic et tentent de corriger la faute.

Ces deux classements montrent qu'il existe une très grande variété de systèmes embarqués. Malgré cela, ils jouissent évidemment tous d'un grand nombre de caractéristiques communes, les faisant appartenir au monde des systèmes embarqués.

Si on se penche plutôt sur des considérations plus techniques, on peut également classer les systèmes embarqués selon leur taille et complexité :

  • Un système embarqué de petite échelle comporte typiquement un simple microcontrôleur sur 8 ou 16 bits, avec du hardware et software très simple. Le design de ces systèmes se retrouve au niveau d'une carte et les ressources, notamment en terme de mémoire, sont très limitées pour limiter la dissipation de puissance.
  • Un système embarqué de moyenne échelle comporte un ou quelques microcontrôleurs sur 16 ou 32 bits, un Digital Signal Processor (processeur de signal numérique) (DSP) ou un processeur avec un jeu d'instructions réduit (RISC). Le hardware et software de ces systèmes sont plus complexes. Côté hardware, on retrouve des Application Specific Standard Product (produit standard spécifique à une application, par exemple pour smartphones) (ASSP) ou Instruction Processor (IP) et ils peuvent être contrôlés par des Real-Time Operating Systems (systèmes d'exploitation temps réel) (RTOS).
  • Enfin, on peut aussi concevoir des systèmes embarqués sophistiqués qui ont une complexité hardware et software très grande. Ils sont construits à partie de processeurs évolutifs et configurables ou de Programmable Logic Array (PLA). Pour ces systèmes, un co-design et une intégration hardware/software sont importants.

On reviendra sur ce classement après avoir détaillé les aspects hardware et software des systèmes embarqués, plus loin dans ce chapitre.

Caractéristique

Voyons une série de caractéristiques communes à la majorité des systèmes embarqués, peu importe leur type. Tout d'abord, un système embarqué doit être fiable, notamment car il doit généralement pouvoir fonctionner en autonomie. En particulier, on peut mesurer :

  • sa robustesse, c'est-à-dire la probabilité qu'il fonctionne correctement à un certain temps $t$, sachant qu'il fonctionnait en $t = 0$ ;
  • sa maintenabilité, c'est-à-dire la probabilité qu'il fonctionne correctement un certain temps $d$ après qu'une erreur se soit produite ;
  • sa disponibilité, c'est-à-dire la probabilité qu'il fonctionne correctement à un temps $t$ ;
  • sa sûreté, c'est-à-dire qu'il ne cause pas de nuisances ;
  • et enfin sa sécurité, c'est-à-dire que ses communications sont confidentielles et authentifiées.

Il faut bien entendu maximiser tous ces critères. De plus, il est important de directement penser à ces aspects lors de la conception du système embarqué car il n'est pas forcément évident d'en modifier un existant après coup pour mieux les satisfaire. En effet, étant donné les contraintes du système embarqué, notamment en terme de puissance de calcul, il ne sera pas forcément possible de tous les maximiser. Un choix devra donc être posé selon l'application visée.

Un système embarqué doit également être efficace. Étant donné qu'il est conçu dans un but spécifique et précis, il faut qu'il soit plus efficace qu'un ordinateur « traditionnel », sans quoi son développement n'est pas justifié. Les aspects suivants doivent être pris en compte :

  • la consommation énergétique ;
  • la taille du code, en particulier pour des systèmes embarqués de bas niveau déployés sur une petite puce ;
  • l'exécution du programme tant au niveau du temps que de la mémoire consommé ;
  • le poids et la taille ;
  • et enfin le cout de fabrication, mais aussi de conception et design.

La figure 5 reprend ces différents aspects et propose une ou plusieurs mesures permettant de les évaluer. Ainsi, on peut mesurer la taille d'un code directement en octets, plutôt pour les petits systèmes embarqués de très bas niveau, ou en lignes de code pour ceux de haut niveau. Pour les performances de l'exécution du programme, on peut mesurer le nombre de millions d'instructions exécutées par seconde (MIPS) pour évaluer la vitesse de calcul « pure » ou le nombre d'opérations de lecture/écriture par seconde dans la mémoire, si le système embarqué doit manipuler beaucoup d'entrées/sorties.

Critère Mesure
Consommation énergétique Watt
Taille du code Octets
Lignes de code
Exécution du programme MIPS
Nombre de read/write par seconde
Poids et taille Kilogramme, centimètre
Cout de fabrication $, €
Les critères d'efficacité d'un système embarqué peuvent être mesurés à l'aide de différentes métriques que l'on peut combiner entre elles.

Toutes ces caractéristiques, de fiabilité et d'efficacité, doivent évidemment être considérées en lien avec l'application pour laquelle le système embarqué est développé. En effet, certains critères ont sans doute moins de sens ou sont moins importants pour une application donnée. Par exemple, les considérations énergétiques sont sans doute moins cruciales pour le système embarqué qui gère votre machine à laver que pour celui qui est installé dans un volcan pour monitorer le niveau des émanations de dioxide de soufre (SO$_2$).

Contrainte

Terminons de définir ce qu'est un système embarqué en parcourant différentes contraintes auxquelles ils sont soumis, se rappelant qu'il s'agit de systèmes spécifiques et dédiés à une tâche bien déterminée. Lorsque l'on va vouloir concevoir un système embarqué, il est dès lors très important de prendre en compte les connaissances par rapport aux conditions et à l'environnement dans lesquels il sera utilisé. Cela va notamment permettre de décider quels sont les critères de fiabilité et d'efficacité qui sont pertinents pour l'application visée. On gardera donc à l'esprit qu'un système embarqué est dédié à une application spécifique.

Un autre aspect important et très présent dans les systèmes embarqués concerne les contraintes de temps réel qu'ils doivent satisfaire. En effet, ces derniers doivent pouvoir réagir aux stimuli provenant du système contrôlé dans un laps de temps raisonnable. Dans un système temps réel strict, si ce dernier n'a pas répondu à un stimuli endéans un laps de temps fixé, une réaction même correcte sera considérée comme incorrecte. Le système embarqué en charge de contrôler une centrale nucléaire doit, par exemple, activer une série de mécanismes très rapidement en cas d'incident ou d'accident sans quoi les mesures déclenchées pourraient ne pas avoir l'effet escompté. Comme le résume Kopetz (Real-Time Systems: Design Principles for Distributed Embedded Applications, par Hermann Kopetz, chez Springer (avril 2011), ISBN 978-1-4419-8237-7) :

“A real-time constraint is called hard, if not meeting that constraint could result in a catastrophe.”

Les contraintes temporelles ne doivent pas toujours être fortes et peuvent parfois être assouplies, en fonction de l'application visée. Une contrainte temps réel souple doit être satisfaite au mieux dans un certain laps de temps. Le système embarqué doit faire de son mieux, mais il n'y aura pas de catastrophes s'il ne sait pas toujours respecter le délai de réponse attendu. On peut prendre comme exemple une borne interactive qui vous affiche en temps réel les résultats d'un match de foot. Ce n'est pas grave si vous êtes averti d'un but deux ou trois secondes en retard et on peut se contenter de temps réel souple.

Une autre contrainte critique, dont on a déjà discuté, est l'énergie. En effet, la plupart des systèmes embarqués sont alimentés par des batteries, et les technologies utilisées pour ces dernières n'évoluent pas très vite. Cependant, les besoins en puissance de calcul augmentent très vite, notamment pour tout ce qui touche aux applications multimédia, et les clients ont des exigences de plus en plus grandes niveau autonomie.

L'énergie électrique disponible doit dès lors être utilisée très efficacement, devenant une contrainte pour les applications qu'il sera possible de réaliser avec un système embarqué donné.

Système connecté

Aujourd'hui, les systèmes embarqués ont largement dépassé, en nombre, les ordinateurs « traditionnels », PC ou portable. Cette croissance a démarré avec l'apparition de l'information ambiente (on dira plutôt informatique ambiente en Europe, ubiquitaire aux USA et omniprésente au Japon), troisième ère de l'informatique dans laquelle une très large gamme de petits appareils informatiques « intelligents » a été mise à disposition de l'utilisateur.

De plus, les systèmes embarqués ont également été dotés de moyens de communication, leur permettant d'échanger de l'information entre eux, au sein d'un réseau de senseurs, par exemple, ou leur permettant de communiquer avec des applications via internet. Cette tendance, consistant à connecter, très souvent sans fil, une multitude d'appareils à internet a conduit à l'internet des objets (ou IoT, pour Internet of Things, en anglais).

De nombreuses applications exploitent largement ces systèmes connectés sous la forme d'applications distribuées. Le logiciel ne s'exécute plus sur une seule machine cloisonnée, mais ses opérations sont largement réparties entre un grand nombre de systèmes embarqués, chacun étant responsable d'un processus contribuant à la mission du système distribué complet. Autant les données que les calculs sont ainsi distribués.

Ainsi, l'information est disponible partout et à tout moment, et cette omniprésence permettant à tous les objets qui nous entourent de travailler de concert crée une « intelligence ambiente » permanente.