Système embarqué - Embedded system

Un système embarqué sur une carte enfichable avec processeur, mémoire, alimentation et interfaces externes

Un système embarqué est un système informatique ( une combinaison d'un processeur d'ordinateur , d' une mémoire d'ordinateur et de périphériques d'entrée/sortie) qui a une fonction dédiée au sein d'un système mécanique ou électronique plus vaste . Il est intégré dans un dispositif complet comprenant souvent du matériel électrique ou électronique et des pièces mécaniques. Parce qu'un système embarqué contrôle généralement les opérations physiques de la machine dans laquelle il est embarqué, il dispose souvent d' un calcul en temps réelcontraintes. Les systèmes embarqués contrôlent de nombreux appareils couramment utilisés aujourd'hui. En 2009, on estimait que quatre-vingt-dix-huit pour cent de tous les microprocesseurs fabriqués étaient utilisés dans des systèmes embarqués.

Les systèmes embarqués modernes sont souvent basés sur des microcontrôleurs (c'est-à-dire des microprocesseurs avec mémoire intégrée et interfaces périphériques), mais les microprocesseurs ordinaires (utilisant des puces externes pour la mémoire et les circuits d'interface périphériques) sont également courants, en particulier dans les systèmes plus complexes. Dans les deux cas, le ou les processeurs utilisés peuvent être des types allant de l'usage général à ceux spécialisés dans une certaine classe de calculs, ou même conçus sur mesure pour l'application en question. Une classe standard commune de processeurs dédiés est le processeur de signal numérique (DSP).

Étant donné que le système embarqué est dédié à des tâches spécifiques, les ingénieurs de conception peuvent l'optimiser pour réduire la taille et le coût du produit et augmenter la fiabilité et les performances. Certains systèmes embarqués sont fabriqués en série, bénéficiant d' économies d'échelle .

La taille des systèmes embarqués va des appareils personnels portables tels que les montres numériques et les lecteurs MP3 aux plus grosses machines telles que les appareils ménagers , les chaînes de montage industrielles , les robots, les véhicules de transport, les contrôleurs de feux de circulation et les systèmes d' imagerie médicale . Souvent, ils constituent des sous-systèmes d'autres machines comme l' avionique dans les avions. Les grandes installations telles que les usines , les pipelines et les réseaux électriques reposent sur plusieurs systèmes embarqués mis en réseau. Généralisés par la personnalisation logicielle, les systèmes embarqués tels que les automates programmables comprennent fréquemment leurs unités fonctionnelles.

Les systèmes embarqués vont de ceux de faible complexité, avec une seule puce de microcontrôleur, à très élevés avec plusieurs unités, périphériques et réseaux, qui peuvent résider dans des racks d'équipement ou à travers de vastes zones géographiques connectées via des lignes de communication longue distance.

Histoire

Fond

Les origines du microprocesseur et du microcontrôleur remontent au circuit intégré MOS , qui est une puce de circuit intégré fabriquée à partir de MOSFET ( transistors à effet de champ métal-oxyde-semiconducteur ) et a été développé au début des années 1960. En 1964, les puces MOS avaient atteint une densité de transistors plus élevée et des coûts de fabrication inférieurs à ceux des puces bipolaires . Les puces MOS ont encore augmenté en complexité à un rythme prédit par la loi de Moore , conduisant à une intégration à grande échelle (LSI) avec des centaines de transistors sur une seule puce MOS à la fin des années 1960. L'application des puces MOS LSI à l' informatique a été à la base des premiers microprocesseurs, lorsque les ingénieurs ont commencé à reconnaître qu'un système de processeur informatique complet pouvait être contenu sur plusieurs puces MOS LSI.

Les premiers microprocesseurs multi-puces, les Four-Phase Systems AL1 en 1969 et le Garrett AiResearch MP944 en 1970, ont été développés avec plusieurs puces MOS LSI. Le premier microprocesseur monopuce était l' Intel 4004 , sorti en 1971. Il a été développé par Federico Faggin , en utilisant sa technologie MOS à grille de silicium , avec les ingénieurs Intel Marcian Hoff et Stan Mazor , et l' ingénieur Busicom Masatoshi Shima .

Développement

L'un des premiers systèmes embarqués modernes reconnaissables était l' ordinateur de guidage Apollo , développé ca. 1965 par Charles Stark Draper au laboratoire d'instrumentation du MIT . Au début du projet, l'ordinateur de guidage Apollo était considéré comme l'élément le plus risqué du projet Apollo, car il utilisait les circuits intégrés monolithiques nouvellement développés pour réduire la taille et le poids de l'ordinateur.

L'un des premiers systèmes embarqués produits en série était l' ordinateur de guidage Autonetics D-17 pour le missile Minuteman , sorti en 1961. Lorsque le Minuteman II est entré en production en 1966, le D-17 a été remplacé par un nouvel ordinateur qui a représenté le premier haut- volume d'utilisation des circuits intégrés.

Depuis ces premières applications dans les années 1960, les prix des systèmes embarqués ont baissé et il y a eu une augmentation spectaculaire de la puissance de traitement et des fonctionnalités. Un des premiers microprocesseurs , l' Intel 4004 (sorti en 1971), était conçu pour les calculatrices et autres petits systèmes, mais nécessitait toujours une mémoire externe et des puces de support. Au début des années 1980, les composants du système de mémoire, d'entrée et de sortie avaient été intégrés dans la même puce que le processeur formant un microcontrôleur . Les microcontrôleurs trouvent des applications où un ordinateur polyvalent serait trop coûteux. À mesure que le coût des microprocesseurs et des microcontrôleurs diminuait, la prévalence des systèmes embarqués augmentait.

Aujourd'hui, un microcontrôleur relativement peu coûteux peut être programmé pour remplir le même rôle qu'un grand nombre de composants séparés. Avec les microcontrôleurs, il est devenu possible de remplacer, même dans les produits de consommation, des composants analogiques à boutons coûteux tels que des potentiomètres et des condensateurs variables avec des boutons haut/bas ou des boutons lus par un microprocesseur. Bien que dans ce contexte, un système embarqué soit généralement plus complexe qu'une solution traditionnelle, la majeure partie de la complexité est contenue dans le microcontrôleur lui-même. Très peu de composants supplémentaires peuvent être nécessaires et la majeure partie de l'effort de conception est dans le logiciel. Le prototype et le test du logiciel peuvent être plus rapides que la conception et la construction d'un nouveau circuit n'utilisant pas de processeur intégré.

Applications

Sous-ensemble informatique embarqué pour machine de vote électronique Accupoll

Les systèmes embarqués sont couramment utilisés dans les applications grand public, industrielles, automobiles , électroménagers , médicales, de télécommunication, commerciales et militaires.

Les systèmes de télécommunications utilisent de nombreux systèmes embarqués, des commutateurs téléphoniques pour le réseau aux téléphones portables de l' utilisateur final . Les réseaux informatiques utilisent des routeurs et des ponts réseau dédiés pour acheminer les données.

L'électronique grand public comprend les lecteurs MP3 , les téléviseurs , les téléphones portables , les consoles de jeux vidéo , les appareils photo numériques , les récepteurs GPS et les imprimantes . Les appareils électroménagers, tels que les fours à micro-ondes , les machines à laver et les lave - vaisselle , comprennent des systèmes intégrés pour offrir flexibilité, efficacité et fonctionnalités. Les systèmes CVC avancés utilisent des thermostats en réseau pour contrôler plus précisément et efficacement la température qui peut changer selon l'heure de la journée et la saison . La domotique utilise des réseaux filaires et sans fil qui peuvent être utilisés pour contrôler les lumières, le climat, la sécurité, l'audio/visuel, la surveillance, etc., qui utilisent tous des dispositifs intégrés pour la détection et le contrôle.

Les systèmes de transport, de l'avion à l'automobile, utilisent de plus en plus des systèmes embarqués. Les nouveaux avions contiennent une avionique avancée telle que des systèmes de guidage inertiel et des récepteurs GPS qui ont également des exigences de sécurité considérables. Divers moteurs électriques (moteurs à courant continu sans balais , moteurs à induction et moteurs à courant continu ) utilisent des contrôleurs de moteur électroniques . Les automobiles , les véhicules électriques et les véhicules hybrides utilisent de plus en plus des systèmes embarqués pour maximiser l'efficacité et réduire la pollution. D'autres systèmes de sécurité automobile utilisant des systèmes intégrés incluent le système de freinage antiblocage (ABS), le contrôle électronique de la stabilité (ESC/ESP), le contrôle de traction (TCS) et la transmission intégrale automatique .

L'équipement médical utilise des systèmes intégrés pour la surveillance et diverses imageries médicales ( TEP , SPECT , CT et IRM ) pour les inspections internes non invasives. Les systèmes embarqués dans les équipements médicaux sont souvent alimentés par des ordinateurs industriels.

Les systèmes embarqués sont utilisés pour les systèmes critiques pour la sécurité . À moins qu'ils ne soient connectés à des réseaux filaires ou sans fil via des méthodes cellulaires 3G sur puce ou d'autres méthodes à des fins de surveillance et de contrôle de l'IoT, ces systèmes peuvent être isolés du piratage et donc plus sécurisés. Pour la sécurité incendie, les systèmes peuvent être conçus pour avoir une plus grande capacité à gérer des températures plus élevées et continuer à fonctionner. En matière de sécurité, les systèmes embarqués peuvent être autonomes et être capables de faire face à des systèmes électriques et de communication coupés.

Les dispositifs sans fil miniatures appelés motes sont des capteurs sans fil en réseau. Les réseaux de capteurs sans fil utilisent la miniaturisation rendue possible par la conception avancée des circuits intégrés pour coupler des sous-systèmes sans fil complets à des capteurs sophistiqués, permettant aux personnes et aux entreprises de mesurer une myriade de choses dans le monde physique et d'agir sur ces informations via des systèmes de surveillance et de contrôle. Ces motes sont complètement autonomes et fonctionneront généralement sur une source de batterie pendant des années avant que les batteries ne doivent être changées ou chargées.

Caractéristiques

Les systèmes embarqués sont conçus pour effectuer une tâche spécifique, plutôt que d'être un ordinateur polyvalent pour plusieurs tâches. Certains ont également des contraintes de performances en temps réel qui doivent être respectées, pour des raisons telles que la sécurité et la convivialité ; d'autres peuvent avoir des exigences de performances faibles ou nulles, ce qui permet de simplifier le matériel du système pour réduire les coûts.

Les systèmes embarqués ne sont pas toujours des appareils autonomes. De nombreux systèmes embarqués sont constitués de petites pièces au sein d'un appareil plus grand qui sert un objectif plus général. Par exemple, la Gibson Robot Guitar dispose d'un système intégré pour accorder les cordes, mais le but général de la Robot Guitar est, bien sûr, de jouer de la musique. De même, un système embarqué dans une automobile assure une fonction spécifique en tant que sous-système de la voiture elle-même.

Ordinateurs e-con Systems eSOM270 et eSOM300 sur modules

Les instructions de programme écrites pour les systèmes embarqués sont appelées micrologiciels et sont stockées dans une mémoire en lecture seule ou des puces de mémoire flash . Ils fonctionnent avec des ressources matérielles informatiques limitées : peu de mémoire, clavier ou écran petit ou inexistant.

Les interfaces des utilisateurs

Interface utilisateur texte du système intégré utilisant MicroVGA

Les systèmes embarqués vont de l' absence d'interface utilisateur , dans des systèmes dédiés à une seule tâche, à des interfaces utilisateur graphiques complexes qui ressemblent aux systèmes d'exploitation de bureau informatiques modernes. Les appareils embarqués simples utilisent des boutons , des LED , des écrans LCD graphiques ou à caractères ( LCD HD44780 par exemple) avec un système de menu simple . Les appareils plus sophistiqués qui utilisent un écran graphique avec détection tactile ou des touches programmables sur le bord de l'écran offrent une flexibilité tout en minimisant l'espace utilisé : la signification des boutons peut changer avec l'écran et la sélection implique le comportement naturel de pointer vers ce qui est souhaité.

Certains systèmes fournissent une interface utilisateur à distance à l'aide d'une connexion série (par exemple RS-232 ) ou réseau (par exemple Ethernet ). Cette approche étend les capacités du système embarqué, évite le coût d'un affichage, simplifie le BSP et permet aux concepteurs de créer une interface utilisateur riche sur le PC. Un bon exemple de ceci est la combinaison d'un serveur HTTP intégré s'exécutant sur un périphérique intégré (tel qu'une caméra IP ou un routeur réseau ). L'interface utilisateur s'affiche dans un navigateur Web sur un PC connecté à l'appareil.

Processeurs dans les systèmes embarqués

Des exemples de propriétés d'ordinateurs embarqués typiques, par rapport à leurs homologues à usage général, sont une faible consommation d'énergie, une petite taille, des plages de fonctionnement robustes et un faible coût unitaire. Cela se fait au prix de ressources de traitement limitées.

De nombreux microcontrôleurs ont été développés pour l'utilisation de systèmes embarqués. Les microprocesseurs à usage général sont également utilisés dans les systèmes embarqués, mais nécessitent généralement plus de circuits de support que les microcontrôleurs.

Cartes informatiques prêtes à l'emploi

PC/104 et PC/104+ sont des exemples de normes pour les cartes informatiques prêtes à l' emploi destinées aux petits systèmes embarqués et durcis à faible volume. Ceux-ci sont pour la plupart basés sur x86 et souvent physiquement petits par rapport à un PC standard, bien qu'ils restent assez volumineux par rapport à la plupart des systèmes embarqués simples (8/16 bits). Ils peuvent utiliser DOS , Linux , NetBSD ou un système d'exploitation temps réel intégré tel que MicroC/OS-II , QNX ou VxWorks .

Dans certaines applications, où la petite taille ou l'efficacité énergétique ne sont pas des préoccupations principales, les composants utilisés peuvent être compatibles avec ceux utilisés dans les ordinateurs personnels x86 à usage général. Les cartes telles que la gamme VIA EPIA aident à combler le fossé en étant compatibles PC mais hautement intégrées, physiquement plus petites ou ont d'autres attributs les rendant attrayantes pour les ingénieurs embarqués. L'avantage de cette approche est que des composants de base à faible coût peuvent être utilisés avec les mêmes outils de développement logiciel que ceux utilisés pour le développement logiciel général. Les systèmes construits de cette manière sont toujours considérés comme embarqués car ils sont intégrés dans des appareils plus grands et remplissent un rôle unique. Des exemples d'appareils pouvant adopter cette approche sont les guichets automatiques et les bornes d'arcade , qui contiennent du code spécifique à l'application.

Cependant, la plupart des cartes système embarquées prêtes à l'emploi ne sont pas centrées sur le PC et n'utilisent pas les bus ISA ou PCI. Lorsqu'un processeur de système sur puce est impliqué, il peut y avoir peu d'avantages à avoir un bus standardisé connectant des composants discrets, et l'environnement pour les outils matériels et logiciels peut être très différent.

Un style de conception courant utilise un petit module système, peut-être de la taille d'une carte de visite, contenant des puces BGA haute densité telles qu'un processeur et des périphériques système sur puce basés sur ARM , une mémoire flash externe pour le stockage et une DRAM pour l'exécution Mémoire. Le fournisseur du module fournira généralement un logiciel de démarrage et s'assurera qu'il existe une sélection de systèmes d'exploitation, comprenant généralement Linux et certains choix en temps réel. Ces modules peuvent être fabriqués en grand volume, par des organisations familières avec leurs problèmes de test spécialisés, et combinés avec des cartes mères personnalisées de volume beaucoup plus faible avec des périphériques externes spécifiques à l'application. Des exemples marquants de cette approche incluent Arduino et Raspberry Pi .

Solutions SoC ASIC et FPGA

Un ensemble commun pour les systèmes embarqués à très haut volume comme les téléphones mobiles et les smartphones , mais aussi pour les systèmes embarqués (pas si haut volume) avec des besoins particuliers en termes de performances de traitement du signal, d'interfaces et de fiabilité, comme dans l'avionique, est le système sur une puce (SoC). Un SoC contient un système complet - composé de plusieurs processeurs, multiplicateurs, caches, même différents types de mémoire et généralement divers périphériques tels que des interfaces pour la communication filaire ou sans fil sur une seule puce. Souvent, des unités de traitement graphique (GPU) et des processeurs de signaux numériques (DSP) sont inclus dans de telles puces. Les SoC peuvent être implémentés en tant que circuit intégré spécifique à l'application (ASIC) ou en utilisant un réseau de portes programmable sur site (FPGA) qui peut généralement être reconfiguré.

Périphériques

Un gros plan de la puce SMSC LAN91C110 (SMSC 91x), une puce Ethernet intégrée

Les systèmes embarqués communiquent avec le monde extérieur via des périphériques , tels que :

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. Cependant, ils peuvent également utiliser des outils plus spécifiques :

  • Dans les débogueurs de circuits ou les émulateurs (voir la section suivante).
  • Utilitaires pour ajouter une somme de contrôle ou un CRC à un programme, afin que le système embarqué puisse vérifier si le programme est valide.
  • Pour les systèmes utilisant le traitement du signal numérique , les développeurs peuvent utiliser un atelier mathématique pour simuler les mathématiques.
  • Les outils de modélisation et de simulation au niveau du système aident les concepteurs à construire des modèles de simulation d'un système avec des composants matériels tels que des processeurs , des mémoires , des DMA , des interfaces , des bus et un flux de comportement logiciel sous forme de diagramme d'état ou de diagramme de flux à l'aide de blocs de bibliothèque configurables. Une simulation est effectuée pour sélectionner les bons composants en effectuant un compromis puissance/performance, une analyse de fiabilité et une analyse des goulots d'étranglement. Les rapports typiques qui aident un concepteur à prendre des décisions en matière d'architecture incluent la latence des applications, le débit des périphériques, l'utilisation des périphériques, la consommation d'énergie du système complet ainsi que la consommation d'énergie au niveau des périphériques.
  • Un outil de développement basé sur un modèle crée et simule des flux de données graphiques et des diagrammes d'état UML de composants tels que des filtres numériques, des contrôleurs de moteur, un décodage de protocole de communication et des tâches à plusieurs débits.
  • Des compilateurs et des éditeurs de liens personnalisés peuvent être utilisés pour optimiser le matériel spécialisé.
  • Un système embarqué peut avoir son propre langage ou outil de conception spécial, ou ajouter des améliorations à un langage existant tel que Forth ou Basic .
  • Une autre alternative consiste à ajouter un système d'exploitation en temps réel ou un système d'exploitation embarqué
  • Outils de modélisation et de génération de code souvent basés sur des machines à états

Les outils logiciels peuvent provenir de plusieurs sources :

  • Sociétés de logiciels spécialisées sur le marché de l'embarqué
  • Porté à partir des outils de développement logiciel GNU
  • Parfois, des outils de développement pour un ordinateur personnel peuvent être utilisés si le processeur embarqué est un proche parent d'un processeur PC commun

À mesure que la complexité des systèmes embarqués augmente, les outils et systèmes d'exploitation de niveau supérieur migrent vers des machines où cela a du sens. Par exemple, les téléphones portables , les assistants numériques personnels et autres ordinateurs grand public nécessitent souvent un logiciel important qui est acheté ou fourni par une personne autre que le fabricant de l'électronique. Dans ces systèmes, un environnement de programmation ouvert tel que Linux , NetBSD , OSGi ou Java embarqué est requis pour que le fournisseur de logiciels tiers puisse vendre sur un grand marché.

Les systèmes embarqués sont couramment utilisés dans les applications grand public, culinaires, industrielles, automobiles et médicales. Quelques exemples de systèmes embarqués sont les lecteurs MP3, les téléphones portables, les consoles de jeux vidéo, les appareils photo numériques, les lecteurs DVD et le GPS. Les appareils électroménagers, tels que les fours à micro-ondes, les machines à laver et les lave-vaisselle, comprennent des systèmes intégrés pour offrir flexibilité et efficacité.

Débogage

Le débogage embarqué peut être effectué à différents niveaux, en fonction des installations disponibles. Les différentes métriques qui caractérisent les différentes formes de débogage embarqué sont : ralentit-il l'application principale, à quel point le système ou l'application débogué est-il proche du système ou de l'application réelle, à quel point les déclencheurs qui peuvent être définis pour le débogage sont-ils expressifs (par exemple, inspecter la mémoire lorsqu'une valeur de compteur de programme particulière est atteinte), et ce qui peut être inspecté dans le processus de débogage (par exemple, uniquement la mémoire, ou la mémoire et les registres, etc.).

Du plus simple au plus sophistiqué, ils peuvent être grossièrement regroupés dans les domaines suivants :

  • Débogage résident interactif, en utilisant le shell simple fourni par le système d'exploitation embarqué (par exemple Forth et Basic)
  • Débogage externe utilisant la journalisation ou la sortie du port série pour tracer l'opération à l'aide d'un moniteur en flash ou d'un serveur de débogage comme le débogueur Remedy qui fonctionne même pour les systèmes multicœurs hétérogènes .
  • Un débogueur en circuit (ICD), un périphérique matériel qui se connecte au microprocesseur via une interface JTAG ou Nexus . Cela permet au fonctionnement du microprocesseur d'être contrôlé de l'extérieur, mais est généralement limité à des capacités de débogage spécifiques dans le processeur.
  • Un émulateur en circuit (ICE) remplace le microprocesseur par un équivalent simulé, offrant un contrôle total sur tous les aspects du microprocesseur.
  • Un émulateur complet fournit une simulation de tous les aspects du matériel, permettant de le contrôler et de le modifier tous, et permettant le débogage sur un PC normal. Les inconvénients sont les dépenses et le fonctionnement lent, dans certains cas jusqu'à 100 fois plus lent que le système final.
  • Pour les conceptions de SoC, l'approche typique consiste à vérifier et à déboguer la conception sur une carte prototype FPGA. Des outils tels que Certus sont utilisés pour insérer des sondes dans le FPGA RTL qui rendent les signaux disponibles pour l'observation. Ceci est utilisé pour déboguer les interactions matérielles, micrologicielles et logicielles sur plusieurs FPGA avec des capacités similaires à celles d'un analyseur logique.
  • Les débogueurs uniquement logiciels ont l'avantage de ne nécessiter aucune modification matérielle, mais de contrôler soigneusement ce qu'ils enregistrent afin de conserver du temps et de l'espace de stockage.

À moins qu'il ne soit limité au débogage externe, le programmeur peut généralement charger et exécuter le logiciel via les outils, afficher le code exécuté dans le processeur et démarrer ou arrêter son fonctionnement. La vue du code peut être sous forme de code source HLL , de code assembleur ou d'un mélange des deux.

Parce qu'un système embarqué est souvent composé d'une grande variété d'éléments, la stratégie de débogage peut varier. Par exemple, le débogage d'un système embarqué centré sur le logiciel (et le microprocesseur) est différent du débogage d'un système embarqué où la plupart du traitement est effectué par des périphériques (DSP, FPGA et coprocesseur). Un nombre croissant de systèmes embarqués utilisent aujourd'hui plus d'un seul cœur de processeur. Un problème courant avec le développement multicœur est la bonne synchronisation de l'exécution du logiciel. Dans ce cas, la conception du système embarqué peut souhaiter vérifier le trafic de données sur les bus entre les cœurs du processeur, ce qui nécessite un débogage de très bas niveau, au niveau signal/bus, avec un analyseur logique par exemple.

Tracé

Les systèmes d'exploitation en temps réel ( RTOS ) prennent souvent en charge le traçage des événements du système d'exploitation. Une vue graphique est présentée par un outil PC hôte, basée sur un enregistrement du comportement du système. L'enregistrement de trace peut être effectué par logiciel, par le RTOS ou par un matériel de traçage spécial. Le traçage RTOS permet aux développeurs de comprendre les problèmes de synchronisation et de performances du système logiciel et donne une bonne compréhension des comportements du système de haut niveau.

Fiabilité

Les systèmes embarqués résident souvent dans des machines qui sont censées fonctionner en continu pendant des années sans erreur et, dans certains cas, récupérer d'elles-mêmes si une erreur se produit. Par conséquent, le logiciel est généralement développé et testé avec plus de soin que celui des ordinateurs personnels, et les pièces mécaniques mobiles non fiables telles que les lecteurs de disque, les commutateurs ou les boutons sont évitées.

Les problèmes de fiabilité spécifiques peuvent inclure :

  • Le système ne peut pas être arrêté en toute sécurité pour réparation, ou il est trop inaccessible pour être réparé. Les exemples incluent les systèmes spatiaux, les câbles sous-marins, les balises de navigation, les systèmes de forage et les automobiles.
  • Le système doit être maintenu en marche pour des raisons de sécurité. Les "modes boiteux" sont moins tolérables. Souvent, les sauvegardes sont sélectionnées par un opérateur. Les exemples incluent la navigation aérienne, les systèmes de contrôle des réacteurs, les contrôles des usines chimiques critiques pour la sécurité, les signaux des trains.
  • Le système perdra de grosses sommes d'argent lorsqu'il sera arrêté : commutateurs téléphoniques, commandes d'usine, commandes de ponts et d'ascenseurs, transfert de fonds et tenue de marché, ventes et services automatisés.

Diverses techniques sont utilisées, parfois en combinaison, pour récupérer des erreurs, à la fois des bogues logiciels tels que des fuites de mémoire , ainsi que des erreurs logicielles dans le matériel :

  • temporisateur de chien de garde qui réinitialise l'ordinateur à moins que le logiciel ne notifie périodiquement les sous-systèmes de chien de garde avec des pièces de rechange redondantes qui peuvent être commutées vers des "modes de ralentissement" logiciels qui fournissent une fonction partielle
  • La conception avec une architecture Trusted Computing Base (TCB) garantit un environnement système hautement sécurisé et fiable
  • Un hyperviseur conçu pour les systèmes embarqués est capable de fournir une encapsulation sécurisée pour tout composant de sous-système afin qu'un composant logiciel compromis ne puisse pas interférer avec d'autres sous-systèmes ou un logiciel système de niveau privilégié. Cette encapsulation empêche les défauts de se propager d'un sous-système à un autre, améliorant ainsi la fiabilité. Cela peut également permettre à un sous-système d'être automatiquement arrêté et redémarré en cas de détection de panne.
  • Programmation sensible à l'immunité

Volume élevé ou faible

Pour les systèmes à volume élevé tels que les lecteurs de musique portables ou les téléphones portables , la réduction des coûts est généralement la principale considération de conception. Les ingénieurs sélectionnent généralement du matériel qui est juste « assez bon » pour mettre en œuvre les fonctions nécessaires.

Pour les systèmes embarqués à faible volume ou prototypes, les ordinateurs à usage général peuvent être adaptés en limitant les programmes ou en remplaçant le système d'exploitation par un système d'exploitation temps réel .

Architectures logicielles embarquées

En 1978, la National Electrical Manufacturers Association a publié une norme pour les microcontrôleurs programmables, y compris presque tous les contrôleurs informatiques, tels que les ordinateurs à carte unique, les contrôleurs numériques et les contrôleurs basés sur les événements.

Il existe plusieurs types d'architectures logicielles couramment utilisées aujourd'hui.

Boucle de contrôle simple

Dans cette conception, le logiciel a simplement une boucle . La boucle appelle des sous - programmes , dont chacun gère une partie du matériel ou du logiciel. C'est pourquoi on l'appelle boucle de contrôle simple ou boucle de contrôle.

Système de contrôle d'interruption

Certains systèmes embarqués sont principalement contrôlés par des interruptions . Cela signifie que les tâches exécutées par le système sont déclenchées par différents types d'événements ; une interruption pourrait être générée, par exemple, par un temporisateur à une fréquence prédéfinie, ou par un contrôleur de port série recevant un octet.

Ces types de systèmes sont utilisés si les gestionnaires d'événements ont besoin d'une faible latence et que les gestionnaires d'événements sont courts et simples. Habituellement, ces types de systèmes exécutent également une tâche simple dans une boucle principale, mais cette tâche n'est pas très sensible aux retards inattendus.

Parfois, le gestionnaire d'interruption ajoute des tâches plus longues à une structure de file d'attente. Plus tard, une fois le gestionnaire d'interruption terminé, ces tâches sont exécutées par la boucle principale. Cette méthode rapproche le système d'un noyau multitâche avec des processus discrets.

Multitâche coopératif

Un système multitâche non préemptif est très similaire au schéma de boucle de contrôle simple, sauf que la boucle est cachée dans une API . Le programmeur définit une série de tâches, et chaque tâche obtient son propre environnement pour « exécuter ». (signifie aucune opération ), etc.

Les avantages et les inconvénients sont similaires à ceux de la boucle de contrôle, sauf que l'ajout de nouveau logiciel est plus facile, en écrivant simplement une nouvelle tâche ou en l'ajoutant à la file d'attente.

Multitâche préemptif ou multi-threading

Dans ce type de système, un morceau de code de bas niveau bascule entre les tâches ou les threads en fonction d'un temporisateur (connecté à une interruption). C'est le niveau auquel le système est généralement considéré comme ayant un noyau de "système d'exploitation". Selon la quantité de fonctionnalités requises, cela introduit plus ou moins la complexité de la gestion de plusieurs tâches s'exécutant conceptuellement en parallèle.

Comme tout code peut potentiellement endommager les données d'une autre tâche (sauf dans les systèmes plus importants utilisant une MMU ), les programmes doivent être soigneusement conçus et testés, et l'accès aux données partagées doit être contrôlé par une stratégie de synchronisation, telle que des files d'attente de messages , des sémaphores ou un non -blocage schéma de synchronisation .

En raison de ces complexités, il est courant que les organisations utilisent un système d'exploitation en temps réel (RTOS), permettant aux programmeurs d'applications de se concentrer sur les fonctionnalités de l'appareil plutôt que sur les services du système d'exploitation, au moins pour les grands systèmes ; les systèmes plus petits ne peuvent souvent pas se permettre la surcharge associée à un système temps réel générique , en raison des limitations concernant la taille de la mémoire, les performances ou la durée de vie de la batterie. Le choix qu'un RTOS est requis entraîne cependant ses propres problèmes, car la sélection doit être faite avant de commencer le processus de développement de l'application. Ce timing oblige les développeurs à choisir le système d'exploitation intégré pour leur appareil en fonction des exigences actuelles et restreint ainsi les options futures dans une large mesure. La restriction des options futures devient plus problématique à mesure que la durée de vie du produit diminue. De plus, le niveau de complexité ne cesse d'augmenter car les périphériques doivent gérer des variables telles que série, USB, TCP/IP, Bluetooth , réseau local sans fil , radio de ligne réseau , plusieurs canaux, données et voix, graphiques améliorés, plusieurs états, plusieurs threads, de nombreux états d'attente et ainsi de suite. Ces tendances conduisent à l'adoption d' intergiciels embarqués en plus d'un système d'exploitation en temps réel.

Micronoyaux et exokernels

Un micronoyau est une avancée logique par rapport à un système d'exploitation temps réel. L'arrangement habituel est que le noyau du système d'exploitation alloue de la mémoire et bascule le processeur vers différents threads d'exécution. Les processus en mode utilisateur implémentent des fonctions majeures telles que les systèmes de fichiers, les interfaces réseau, etc.

En général, les micronoyaux réussissent lorsque la commutation des tâches et la communication entre les tâches sont rapides et échouent lorsqu'ils sont lents.

Les exokernels communiquent efficacement par des appels de sous-programme normaux. Le matériel et tous les logiciels du système sont disponibles et extensibles par les programmeurs d'applications.

Noyaux monolithiques

Dans ce cas, un noyau relativement grand avec des capacités sophistiquées est adapté pour s'adapter à un environnement embarqué. Cela donne aux programmeurs un environnement similaire à un système d'exploitation de bureau comme Linux ou Microsoft Windows , et est donc très productif pour le développement ; en revanche, il nécessite considérablement plus de ressources matérielles, est souvent plus coûteux et, en raison de la complexité de ces noyaux, peut être moins prévisible et fiable.

Des exemples courants de noyaux monolithiques intégrés sont Linux , VXWorks et Windows CE intégrés .

Malgré l'augmentation du coût du matériel, ce type de système embarqué gagne en popularité, en particulier sur les appareils embarqués les plus puissants tels que les routeurs sans fil et les systèmes de navigation GPS . Voici quelques-unes des raisons :

  • Des ports vers des jeux de puces intégrés communs sont disponibles.
  • Ils permettent la réutilisation du code accessible au public pour les pilotes de périphériques , les serveurs Web , les pare - feu et d'autres codes.
  • Les systèmes de développement peuvent démarrer avec de larges ensembles de fonctionnalités, puis la distribution peut être configurée pour exclure les fonctionnalités inutiles et économiser la dépense de mémoire qu'elle consommerait.
  • De nombreux ingénieurs pensent que l'exécution du code de l'application en mode utilisateur est plus fiable et plus facile à déboguer, facilitant ainsi le processus de développement et le code plus portable.
  • Les fonctionnalités nécessitant une réponse plus rapide que ce qui peut être garanti peuvent souvent être placées dans le matériel .

Composants logiciels supplémentaires

En plus du système d'exploitation principal, de nombreux systèmes embarqués ont des composants logiciels de couche supérieure supplémentaires. Ces composants consistent en des piles de protocoles réseau telles que CAN , TCP/IP , FTP , HTTP et HTTPS , ainsi que des capacités de stockage telles que FAT et des systèmes de gestion de mémoire flash. Si le périphérique intégré possède des capacités audio et vidéo, les pilotes et codecs appropriés seront présents dans le système. Dans le cas des noyaux monolithiques, bon nombre de ces couches logicielles sont incluses. Dans la catégorie RTOS, la disponibilité des composants logiciels supplémentaires dépend de l'offre commerciale.

Architectures spécifiques au domaine

Dans le secteur automobile, AUTOSAR est une architecture standard pour les logiciels embarqués.

Voir également

Remarques

  1. ^ Pour plus de détails sur MicroVGA voir ce PDF .

Les références

Lectures complémentaires

  • John Catsoulis (mai 2005). Conception de matériel embarqué, 2e édition . O'Reilly. ISBN 0-596-00755-8.
  • James M. Conrad; Alexander G. Dean (septembre 2011). Systèmes embarqués, une introduction utilisant le microcontrôleur Renesas RX62N . Micron. ISBN 978-1935-7729-96.
  • Klaus Elk (août 2016). Développement de logiciels embarqués pour l'Internet des objets, les bases, les technologies et les meilleures pratiques . ISBN 978-1534602533.

Liens externes