# Système embarqué

Un système embarqué est un système électronique et informatique autonome, souvent temps réel, spécialisé dans une tâche précise. Le terme désigne aussi bien le matériel informatique que le logiciel utilisé. Ses ressources sont généralement limitées spatialement (encombrement réduit) et énergétiquement (consommation restreinte).

## Histoire

L'un des premiers systèmes modernes embarqués reconnaissables a été le Apollo Guidance Computer en 1967, le système de guidage de la mission lunaire Apollo, développé par Charles Stark Draper du Massachusetts Institute of Technology. Chaque mission lunaire était équipée de deux systèmes (AGC), un chargé du guidage inertiel et un pour le module lunaire. Au commencement du projet, l'ordinateur AGC d'Apollo était considéré comme l'élément le moins fiable du projet. En revanche, grâce à l'utilisation de nouveaux composants qu'étaient à l'époque les circuits intégrés, des gains substantiels sur la place utile et la charge utile ont été réalisés, avec une diminution supposée des risques déjà nombreux des missions.
L'informatique embarquée a été au coeur de l'affaire Volkswagen (ou « dieselgate »), un scandale industriel et sanitaire lié à l'utilisation par le groupe Volkswagen, de 2009 à 2015, de différentes techniques visant à réduire frauduleusement les émissions polluantes (de NOx et de CO$_2$) de certains de ses moteurs diesel et essence quand le véhicule était placé sur un banc de tests, dont pour l'homologation (plus de 11 millions de véhicules de ses marques Volkswagen, Audi, Seat, Škoda et Porsche étaient ainsi "truquées" par l'informatique embarquée.
Depuis les années 2010, on parle aussi d'« intelligence artificielle embarquée » pour divers types de véhicules que l'on souhaite rendre de plus actifs voire autonomes. Ainsi, l'un des grands objectifs (à horizon 2025) de la SNIA (stratégie nationale pour l'intelligence artificielle) est de développer l' IA embarquée, frugale et de confiance, avec 3 sous-objectifs, qui sont :
* Capter de 10 à 15% des parts du marché mondial de l’IA embarquée à horizon 2025 et faire de la France un leader mondial dans le domaine.
* Soutenir 10 projets d’IA de démonstrateurs ou de développement technologique d’IA frugale.
* Livrer 3 à 4 plateformes de développement, test et expérimentation d’envergure européenne, dans les domaines de l’IA embarquée ou décentralisée et de l’IA de confiance.

## Contraintes

Les systèmes embarqués exécutent des tâches prédéfinies et ont un cahier des charges contraignant à remplir, qui peut être d'ordre :
* d'espace compté : l'espace mémoire peut être de limité de l'ordre de quelques Go maximum (bien que la taille vienne à être de moins en moins limitée grâce à la miniaturisation des éléments). Il convient de concevoir des systèmes embarqués qui répondent aux besoins au plus juste pour éviter un surcoût ;
* de puissance de calcul : il convient d'avoir la puissance de calcul juste nécessaire pour répondre aux besoins et aux contraintes temporelles de la tâche prédéfinie. Ceci en vue d'éviter un surcoût de l'appareil et une consommation excédentaire d'énergie (courant électrique) ;
* d'autonomie : la consommation énergétique doit être la plus faible possible, due à l'utilisation de batteries et/ou, de panneaux solaires voire de pile à combustible pour certains prototypes ;
* temporel : les temps d'exécution et l'échéance temporelle d’une tâche sont déterminés (les délais sont connus ou bornés a priori). Cette dernière contrainte fait que généralement de tels systèmes ont des propriétés temps réel ;
* de sûreté de fonctionnement : car s'il arrive que certains de ces systèmes embarqués subissent une défaillance, ils mettent des vies humaines en danger ou mettent en péril des investissements importants. Ils sont alors dits « critiques » et ne doivent jamais faillir. Par « jamais faillir », il faut comprendre toujours donner des résultats justes, pertinents et ce dans les délais attendus par les utilisateurs (machines et/ou humains) des dits résultats.

## Architecture

Les systèmes embarqués utilisent généralement des microprocesseurs à basse consommation d'énergie ou des microcontrôleurs, dont la partie logicielle est en partie ou entièrement programmée dans le matériel, généralement en mémoire dans une mémoire morte (ROM), EPROM, EEPROM, FLASH, etc. (on parle alors de firmware).

## Caractéristiques

* Plutôt que des systèmes universels effectuant plusieurs tâches, les systèmes embarqués sont étudiés pour effectuer des tâches précises. Certains doivent répondre à des contraintes de temps réel pour des raisons de fiabilité et de rentabilité. D'autres ayant peu de contraintes au niveau performances permettent de simplifier le système et de réduire les couts de fabrication.
* Les systèmes embarqués ne sont pas toujours des modules indépendants. Le plus souvent ils sont intégrés dans le dispositif qu'ils contrôlent.
* Le logiciel créé pour les systèmes embarqués est appelé firmware. Il est stocké dans de la mémoire en lecture seule ou de la mémoire flash plutôt que dans un disque dur. Il fonctionne le plus souvent avec des ressources matérielles limitées : écran et clavier de tailles réduites, voire absents, peu de mémoire, capacités de calcul relativement faibles.

### Interface utilisateur

Certains systèmes embarqués peuvent ne pas avoir d'interface utilisateur (ils sont alors spécialisés dans une seule tâche). Mais cette interface peut également être similaire à celle d'un système d'exploitation d'ordinateur (par exemple un PDA).
* Les systèmes les plus simples comportent uniquement des boutons, des LED.
* Les systèmes les plus complexes peuvent avoir un écran tactile ou encore un écran comportant des boutons de façon à minimiser l'espace. La signification des boutons change selon l'écran et la sélection se fait naturellement en pointant la fonction désirée.
* Les ordinateurs de poche possèdent en général un bouton au style de « joystick » pour la navigation.
* Avec l'explosion du Web, les fabricants de systèmes embarqués ont proposé une nouvelle option : une interface au style d'une page web sur une connexion au réseau. Cela permet d'éviter le coût d'un système sophistiqué tout en conservant une interface complète sur un autre ordinateur, quand cela est nécessaire. Interface couronnée de succès pour les installations permanentes à distance, les routeurs en particulier.
* Certains systèmes embarqués disposent d'une interface vocale avec reconnaissance automatique de la parole.

### Fiabilité

Les systèmes embarqués sont la plupart du temps dans des machines qui doivent fonctionner en continu pendant de nombreuses années, sans erreurs et, dans certains cas, réparer eux-mêmes les erreurs quand elles arrivent. C'est pourquoi les logiciels sont toujours développés et testés avec plus d'attention que ceux pour les PC. Les pièces mobiles non fiables (par exemple les lecteurs de disques, boutons ou commutateurs) sont proscrites.
La question de la fiabilité peut inclure :
* le système ne peut pas être éteint pour des réparations ou ce sont des réparations inaccessibles.
La solution peut être des pièces détachées supplémentaires ou un « mode mou » du logiciel qui fournit un fonctionnement partiel.
Par exemple : les câbles sous-marins, les balises de navigation, les puits de forage…
* Le système doit rester en marche pour des raisons de sécurité. Souvent, les sauvegardes sont effectuées par un opérateur.
Dans ce cas, le « mode mou » est toléré.
Par exemple : les systèmes de contrôle des réacteurs, les usines chimiques, les signaux de train…
* Un arrêt du système peut provoquer des pertes monétaires énormes s'il s'éteint.
Par exemple : les systèmes de ponts ou d'ascenseurs, les transferts de fonds, les salles de bourse, les ventes ou services automatiques…

## Domaines d'applications

Les domaines dans lesquels on trouve des systèmes embarqués sont de plus en plus nombreux :
* Astronautique : fusée, satellite artificiel, sonde spatiale, etc.
* Automate programmable industriel, contrôle-commande
* Électroménager : télévision, four à micro-ondes
* Environnement
* Équipement médical
* Guichet automatique bancaire (GAB)
* impression : imprimante multifonctions, photocopieur, etc.
* Informatique : disque dur, Lecteur de disquette, etc.
* Métrologie
* Militaire : missile, radar
* Multimédia : console de jeux vidéo, assistant personnel
* Télécommunication : Set-top box, téléphonie, routeur, pare-feu, serveur de temps, Téléphone portable.
* Transport : Automobile, Aéronautique (avionique), Ferroviaire, etc.

## Développement de systèmes embarqués

Le développement de systèmes embarqués nécessite des connaissances à la fois en électronique et en informatique. Parmi le matériel nécessaire pour réaliser un système embarqué on trouve :
* la documentation (datasheet) sur les composants utilisés. C'est la première source d'informations pour le développement ;
* l'outillage de base de l'électronicien (fer à souder, insoleuse…) ;
* les outils d'analyse temporelle : oscilloscope, analyseur logique… ;
* des composants de base (résistances, condensateurs…) ;
* un microprocesseur ou un microcontrôleur ;
* un compilateur croisé (dit aussi en anglais cross-compiler) ;
* un programmateur de microcontrôleur ou un programmateur in-situ ;
* un émulateur in-circuit ou ICE (In Circuit Emulator). Cet équipement permet le débogage matériel et logiciel (possibilité de déverminer au niveau du source du logiciel), cependant il reste coûteux ;
* une sonde JTAG. Peu coûteuse et très répandue, la sonde JTAG permet non seulement le débogage du logiciel in situ (lecture/modification de registres, mémoires, périphériques...) mais aussi la programmation de la mémoire FLASH des microcontrôleurs, que celle-ci soit interne ou externe comme dans le cas de certaines puces du fabricant NXP ;
* ingénierie des systèmes : approche multidisciplinaire pour définir, développer et déployer des systèmes embarquant des technologies numériques.

## Marché et emploi

Transverses aux différents secteurs économiques, en 2013, les systèmes embarqués représentent en France un marché évalué à 73 milliards d’euros, soit 3,7 % du PIB. En matière d'emploi, la filière regroupe 1,3 % des actifs, soit 387 500 personnes.