Système embarqué
Un système embarqué est un ordinateur qui a été construit pour résoudre seulement quelques problèmes très spécifiques et qui n'est pas facilement modifiable. Le mot "embarqué" signifie qu'il est intégré dans le système. C'est une partie permanente d'un système plus grand. Il ne ressemble généralement pas à un ordinateur, souvent sans clavier, écran ou souris. Mais comme tout ordinateur, il est doté d'un processeur et de logiciels, d'entrées et de sorties.
Par exemple, le contrôleur intégré dans un ascenseur indique au moteur de déplacer l'ascenseur vers différents étages, en fonction des boutons qui sont enfoncés. Un décodeur est intégré dans un décodeur de télévision par satellite (appelé STB) pour lire un signal de l'antenne parabolique et envoyer quelque chose qu'un téléviseur comprend. Souvent, ce type de système doit faire son travail dans un laps de temps déterminé. C'est ce qu'on appelle le calcul en temps réel. Si un décodeur était interrompu pour effectuer une autre tâche, vous verriez par exemple une mauvaise image sur le téléviseur. Un ordinateur polyvalent aura souvent de courtes pauses pendant qu'il fait autre chose, ce n'est pas du temps réel.
Les systèmes embarqués contrôlent de nombreux dispositifs courants utilisés aujourd'hui, tels que les lecteurs de cartes dans les serrures des hôtels ou plusieurs choses dans une voiture. Ils peuvent contrôler de petites choses comme un lecteur MP3 ou un appareil photo numérique, et de grandes choses comme les systèmes de feux de circulation, les avions ou les chaînes de montage dans une usine.
Photo de l'intérieur d'un modem/routeur ADSL. Un exemple moderne de système embarqué. Les parties étiquetées comprennent un microprocesseur (4), de la RAM (6) et de la mémoire flash (7)
Exemples de systèmes embarqués
Les systèmes embarqués sont utilisés dans de nombreux types d'appareils électriques, notamment :
- Les systèmes de télécommunications les utilisent pour les téléphones, les réseaux de téléphonie mobile et les routeurs wi-fi.
- L'électronique grand public comprend les récepteurs de radiodiffusion, les lecteurs MP3, les téléphones portables, les consoles de jeux vidéo, les appareils photo numériques, les lecteurs DVD, les récepteurs GPS, les systèmes de sécurité domestique et les imprimantes.
- Les appareils ménagers, comme les fours à micro-ondes, les machines à laver, les systèmes d'alarme anti-vol et les lave-vaisselle, sont équipés de systèmes intégrés.
- Les transports utilisent des systèmes embarqués pour tout, des locomotives pour les trains, les avions et les automobiles.
- L'industrie utilise des moteurs électriques avec des contrôleurs électroniques, des lecteurs de cartes et des machines CNC qui fabriquent automatiquement des pièces métalliques.
- Les appareils médicaux comme les défibrillateurs, les lecteurs de pression sanguine automatisés et les pompes à insuline automatisées.
- Les dispositifs militaires, comme les talkie-walkies, les satellites et les systèmes de guidage des missiles.
Caractéristiques communes
- Les systèmes embarqués sont conçus pour accomplir une tâche spécifique, contrairement aux ordinateurs à usage général.
- Il ne ressemble pas à un ordinateur - il n'y a peut-être pas de moniteur complet ou de clavier.
- De nombreux systèmes embarqués doivent être capables de faire des choses en temps réel - dans un court laps de temps (presque instantanément du point de vue humain).
- De nombreux systèmes embarqués doivent être très sûrs et fiables, en particulier pour les dispositifs médicaux ou l'avionique contrôlant les avions.
- Commence très rapidement. Les gens ne veulent pas attendre une minute ou deux pour que leur voiture démarre ou que les équipements d'urgence démarrent.
- Il peut utiliser un système d'exploitation spécial (ou parfois un très petit système d'exploitation fait maison) qui permet de répondre à ces exigences, appelé système d'exploitation en temps réel, ou RTOS.
- Les instructions de programme écrites pour les systèmes embarqués sont appelées "firmware" et sont stockées dans une mémoire morte ou des puces de mémoire flash. Elles fonctionnent avec des ressources matérielles informatiques limitées : peu de mémoire, clavier et/ou écran petits ou inexistants.
Les systèmes embarqués ne sont pas toujours des dispositifs autonomes. Ils sont parfois construits comme un ensemble, comme les différentes parties d'une voiture - la radio, la commande des gaz, la lutte contre la pollution, etc. Parfois, ils peuvent communiquer avec l'internet ou un réseau de téléphonie mobile et ils peuvent être équipés d'un lecteur USB ou d'autres connexions.
Interfaces utilisateur
Les systèmes embarqués vont de l'absence totale d'interface utilisateur - seulement l'envoi et la réception de signaux électriques - à une interface utilisateur graphique complète comme sur un ordinateur moderne. Ils sont souvent dotés de quelques boutons poussoirs, d'un petit écran et de quelques LED. Un système plus complexe peut être doté d'un écran tactile, ce qui permet de changer la signification des boutons à chaque écran, comme dans les téléphones intelligents.
Un exemple d'interface utilisateur avec des boutons et un simple écran LCD.
Matériel
Le matériel comprend les puces, les fils, les circuits imprimés, les boutons et les écrans.
CPU
La puce la plus importante est l'unité centrale de traitement ou CPU. Celle-ci exécute les instructions du logiciel. Il peut s'agir d'un microprocesseur standard ou d'un microcontrôleur. Les microcontrôleurs comprennent le microprocesseur ainsi qu'un équipement périphérique simple, de sorte que le système peut être plus petit et moins cher. Ils ont moins de flexibilité car ces pièces ne peuvent pas être changées. En général, ces pièces comprennent une mémoire Flash et un support pour les ports série, USB, etc.
Contrairement à un microprocesseur pour un ordinateur à usage général, plus gros et plus rapide n'est pas toujours mieux. De nombreux processeurs intégrés sont très petits. Parfois, c'est pour utiliser moins d'espace ou moins de puissance, parfois pour être moins cher. Les ordinateurs polyvalents utilisent des microprocesseurs qui lisent des mots de 32 ou 64 bits et fonctionnent à des vitesses mesurées en GHz, mais les processeurs embarqués sont généralement de 4 à 32 bits et fonctionnent à des vitesses habituellement mesurées en dizaines de MHz (cent fois plus lentement). (Mais les programmes sont également plus petits et ne vérifient pas les choses qui ne sont pas utilisées).
Tableaux informatiques prêts à l'emploi
Il existe des cartes informatiques "prêtes à l'emploi" qui peuvent être utilisées dans certains systèmes embarqués. Ces derniers utilisent souvent Windows CE, Linux, NetBSD ou un système d'exploitation temps réel intégré.
Il est parfois plus facile d'utiliser une carte de circuit imprimé déjà fabriquée. Celles-ci partagent généralement de nombreux composants avec les ordinateurs à usage général, mais sont plus petites qu'un seul composant dans un ordinateur à usage général. Des cartes comme la VIA EPIA peuvent faire fonctionner Microsoft Windows. L'avantage est qu'elles permettent de gagner un peu de temps en électrotechnique et qu'elles peuvent utiliser les mêmes outils de développement de logiciels que ceux utilisés pour le développement de logiciels de type PC. Les guichets automatiques ou les écrans des casinos sont des exemples de tels dispositifs intégrés. Cela fonctionne bien si les exigences en matière de temps réel ne sont pas très strictes (peu importe si une tâche prend huit secondes au lieu de cinq, par exemple).
Solutions ASIC et FPGA
Si l'appareil doit être très petit ou sera vendu en très grand nombre ("grand volume"), il est logique de fabriquer une puce personnalisée ou spécialisée qui fait exactement ce qu'il faut. Il s'agit d'un système sur puce (SoC) qui contient un système complet - processeur, unité en virgule flottante, mémoire cache et interfaces sur un seul circuit intégré. Les SoC peuvent être réalisés sous la forme d'un circuit intégré spécifique à une application (ASIC) ou en utilisant un réseau de portes programmables (FPGA) qui est programmé par les personnes qui construisent le système intégré.
Périphériques
Les systèmes embarqués parlent avec le monde extérieur ou d'autres composants en utilisant des périphériques tels que :
- Ports en série : RS-232, RS-422, RS-485. C'était autrefois assez courant, avec les connecteurs à 9 broches (ou plus).
- Interface de communication série synchrone : I²C Inter-Integrated Circuit, I²S Inter-Integrated Sound, SPI, MIcrowire, ...
- Universal Serial Bus (USB).
- Réseaux : Ethernet, Controller Area Network, LonWorks, ...
- Entrée/sortie discrète : Entrée/sortie à usage général (GPIO). Il peut s'agir d'un fil unique avec un signal de marche/arrêt. Il peut être utilisé pour un petit clavier ou pour allumer une LED.
- Convertisseurs analogique-numérique-analogique (ADC/DAC). Il mesure quelque chose qui change de force, comme un capteur de lumière ou une commande de moteur.
- Débogage : JTAG, port ICSP, pour les ingénieurs logiciels.
Soekris net4801, un système intégré destiné aux applications de réseau.
Logiciels
Systèmes d'exploitation
Les systèmes embarqués n'ont souvent pas besoin d'un système d'exploitation complet. Certains utilisent de petits systèmes d'exploitation simples spécialement conçus qui démarrent très rapidement, d'autres n'en ont pas du tout besoin. Les systèmes embarqués ne s'adaptent pas aussi facilement, mais ils sont construits pour accomplir leurs tâches de manière beaucoup plus fiable. Comme le matériel est plus simple, il est aussi souvent moins cher à construire et fonctionne plus rapidement.
En revanche, un ordinateur polyvalent doit être prêt à recevoir de nouveaux pilotes et logiciels pour faire fonctionner du matériel dont il n'a pas encore connaissance, comme de nouvelles imprimantes ou de nouveaux disques durs. Il doit exécuter différents programmes d'application.
À mesure que les systèmes embarqués deviennent plus grands, des choses qui n'étaient auparavant que des ordinateurs à usage général ou même des ordinateurs centraux deviennent maintenant courantes sur les systèmes embarqués. Cela comprend un espace mémoire protégé et un environnement de programmation ouvert, notamment Linux, NetBSD, etc.
Quelques exemples de systèmes d'exploitation, du plus simple au plus complexe :
- Boucle de contrôle simple - Une minuterie et une boucle sont utilisées pour appeler différents sous-programmes de manière répétée. Cette opération est souvent effectuée par une seule personne pour les petits systèmes.
- Interruption contrôlée - Les tâches sont lancées par différents types d'événements. L'événement peut être chronométré (toutes les dix secondes, par exemple) ou résulter de la pression d'un bouton ou de la réception de données.
- multitâche non préventif - Chaque tâche est exécutée à son tour, et lorsqu'elle est terminée, elle appelle un planificateur dans le système d'exploitation pour exécuter la tâche suivante.
- multitâche préventif ou multithreading - Une tâche peut être arrêtée après un certain temps pour laisser une autre tâche se dérouler pendant un certain temps. Aucune tâche ne peut accaparer le système. À ce niveau, le système est considéré comme ayant un noyau de "système d'exploitation" et peut exécuter des tâches en parallèle. Ce type de système d'exploitation est généralement acheté à une société qui ne travaille que sur des systèmes d'exploitation embarqués.
Les systèmes d'exploitation en temps réel comprennent des produits comme MicroC/OS-II, Green Hills INTEGRITY, QNX ou VxWorks. Contrairement à MacOS ou Windows 7, ces systèmes d'exploitation ne sont pas très bien connus de la plupart des gens. Mais ils sont utilisés dans de nombreux endroits où le temps et la sécurité sont très importants. Les gens les utilisent tous les jours et ne s'en rendent pas compte.
Les exemples les plus courants de noyaux de plus grande taille sont Linux embarqué et Windows CE. Bien qu'ils n'aient pas les limites de temps étroites nécessaires à un système temps réel strict, ils sont de plus en plus courants, en particulier pour les appareils plus puissants tels que les routeurs sans fil et les GPS. Ils permettent la réutilisation du code dans le domaine public pour les pilotes de périphériques, les serveurs Web, les pare-feu et d'autres codes. Les développeurs de logiciels qui sont plus à l'aise pour écrire des applications pour PC trouveront cela plus familier aussi. Si nécessaire, un FPGA ou un autre matériel spécial peut être utilisé pour les choses qui nécessitent des délais serrés.
Outils
Comme pour les autres logiciels, les concepteurs de systèmes embarqués utilisent des compilateurs, des assembleurs et des débogueurs pour développer des logiciels de systèmes embarqués. Toutefois, ils peuvent également utiliser des outils plus spécifiques :
- Pour les systèmes utilisant le traitement numérique des signaux, les développeurs peuvent utiliser un outil mathématique tel que MATLAB, MathCad ou Mathematica.
- Des compilateurs et des éditeurs de liens personnalisés peuvent être utilisés pour améliorer l'optimisation d'un matériel particulier.
- Un système intégré peut avoir son propre langage ou outil de conception spécial, ou ajouter des améliorations à un langage existant comme celui utilisé par Basic Stamp.
Outils de débogage :
- Un débogueur en circuit (ICD), un dispositif matériel qui se connecte au microprocesseur via une interface JTAG. Ce dispositif démarre et arrête le microprocesseur de l'extérieur lorsqu'il exécute le logiciel. Il permet également de lire la mémoire et les registres, et de stocker le programme logiciel en mémoire.
- Débogage externe par journalisation ou sortie de port série pour retracer le fonctionnement à l'aide d'un moniteur clignotant (printfs).
- Débogage résident interactif - si le système d'exploitation le prend en charge, il s'agit d'un shell sur le processeur intégré qui exécute les commandes tapées par le développeur (Linux, par exemple).
- Un émulateur en circuit remplace le microprocesseur sur la carte, permettant un contrôle total sur tout ce que le microprocesseur pourrait faire.
- Un émulateur complet simule toutes les caractéristiques du matériel, ce qui permet de le contrôler et de le modifier. Le matériel n'existe pas vraiment, mais une version fictive de celui-ci (une machine "virtuelle") se trouve sur un PC normal.
- Vérification des lignes externes avec un analyseur logique ou un multimètre.
À moins qu'il ne soit limité au débogage externe, le programmeur peut généralement charger et exécuter un logiciel à l'aide des outils, visualiser le code exécuté dans le processeur, et démarrer ou arrêter son fonctionnement. La visualisation du code peut se faire sous forme de code assembleur ou de code source. Certains systèmes intégrés (comme VxWorks ou Green Hills) ont des caractéristiques spéciales, comme le suivi de l'espace occupé par le logiciel pendant son exécution, des tâches en cours d'exécution et du moment où les choses se passent.
Le type de système embarqué qui sera fabriqué aura une incidence sur la manière dont il pourra être débogué. Par exemple, le débogage d'un système à microprocesseur unique est différent du débogage d'un système où le traitement est également effectué sur un périphérique (DSP, FPGA, co-processeur).
Sécurité et fiabilité
Les systèmes embarqués se trouvent souvent dans des machines qui sont censées fonctionner pendant des années sans erreur et, dans certains cas, se rétablissent d'elles-mêmes si une erreur se produit. Cela signifie que le logiciel est généralement développé et testé avec plus de soin que celui des ordinateurs personnels, et que les pièces mécaniques mobiles peu fiables telles que les lecteurs de disque et les ventilateurs sont évitées.
Des lieux où la sécurité et la fiabilité sont importantes :
- Certains systèmes ne peuvent pas être arrêtés en toute sécurité pour être réparés, ou sont trop difficiles à réparer. Il s'agit par exemple des systèmes spatiaux (satellites, rovers), des câbles sous-marins et des commandes de centrales nucléaires.
- Le système pourrait tuer des gens s'il tombe en panne, comme les commandes des avions, les commandes des usines chimiques, les signaux des trains et les défibrillateurs cardiaques.
- Le système perdra de grosses sommes d'argent s'il est fermé ou si une erreur est commise : Commutateurs téléphoniques, contrôles d'usine, caisses enregistreuses, guichets automatiques.
Les moyens de se remettre des erreurs - tant les bogues logiciels tels que les fuites de mémoire, que les erreurs logicielles dans le matériel :
- Minuterie de surveillance qui redémarre le système embarqué si quelque chose cesse de fonctionner.
- Les pièces en double, où un système peut prendre le relais si un autre cesse de fonctionner.
- Les logiciels "boiteux" qui assurent un fonctionnement partiel.
- Programmation tenant compte de l'immunité
Pages connexes
- Microprocesseur
- Langages de programmation
- Firmware
- Système d'exploitation en temps réel
Questions et réponses
Q : Qu'est-ce qu'un système embarqué ?
R : Un système embarqué est un ordinateur conçu pour résoudre des problèmes spécifiques et qui n'est pas facile à modifier.
Q : En quoi un système embarqué diffère-t-il d'un ordinateur à usage général ?
R : Un système embarqué n'a généralement pas de clavier, d'écran ou de souris et a des fonctions spécialisées. Un ordinateur à usage général peut exécuter un large éventail de tâches.
Q : Quels sont des exemples de systèmes intégrés ?
R : Les contrôleurs d'ascenseurs, les décodeurs, les lecteurs de cartes dans les serrures des hôtels, les systèmes de feux de circulation, les avions et les chaînes de montage dans les usines sont autant d'exemples de systèmes intégrés.
Q : Qu'est-ce que l'informatique en temps réel ?
R : On parle d'informatique en temps réel lorsqu'un système embarqué doit effectuer son travail dans un délai précis. S'il est interrompu, il peut causer des problèmes tels qu'une mauvaise qualité d'image sur un téléviseur.
Q : Quels sont les composants d'un système embarqué ?
R : Comme tout ordinateur, un système embarqué possède un processeur, un logiciel, une entrée et une sortie.
Q : Quelles sont les tâches qu'un système embarqué peut contrôler ?
R : Un système embarqué peut contrôler de petits appareils tels que des lecteurs MP3 ou des appareils photo numériques, ou des systèmes plus importants tels que des feux de circulation ou des avions.
Q : Que signifie le terme "embarqué" en relation avec les systèmes embarqués ?
R : Le terme "embarqué" signifie que l'ordinateur est intégré dans un système plus vaste et qu'il n'est pas facile à modifier.