Un système embarqué est un système informatique embarqué dans un système mécanique ou électrique avec des fonctions dédiées et des performances de calcul temps réel.

Le système embarqué () est un système informatique embarqué dans un système mécanique ou électrique avec des fonctions spécifiques et des performances de calcul en temps réel . Les systèmes embarqués sont souvent utilisés pour contrôler efficacement de nombreux appareils courants. Le système embarqué est généralement un appareil complet comprenant du matériel numérique et des composants mécaniques, comme un système de freinage antiblocage dans une voiture . Au contraire, un ordinateur à usage général tel qu'un ordinateur personnel est de conception flexible et peut gérer intelligemment une variété de situations informatiques pour répondre aux différents besoins d'un grand nombre d'utilisateurs finaux.

Soekris  net4801, adapté aux applications Web

Les systèmes embarqués modernes sont généralement basés sur des microcontrôleurs (tels que des unités centrales avec mémoire intégrée et / ou interfaces périphériques ), mais dans des systèmes plus complexes, des microprocesseurs ordinaires (utilisant des puces de mémoire externes et des circuits d'interface périphériques) également très courants. Les processeurs à usage général, les processeurs spécialisés dans certains types de calculs et les processeurs conçus sur mesure pour les applications portables, etc., peuvent tous être appliqués aux systèmes embarqués. Un processeur à usage spécial commun est un processeur de signal numérique .

La principale caractéristique d'un système embarqué est de gérer une tâche spécifique, afin que les ingénieurs puissent l'optimiser pour réduire la taille et le coût du produit, améliorer la fiabilité et les performances.

Les formes physiques des systèmes embarqués comprennent les appareils portables tels que les podomètres, les montres électroniques et les lecteurs MP3 , les grandes installations fixes telles que les feux de circulation, les contrôleurs d'usine, les grands systèmes complexes tels que les véhicules hybrides, les équipements d'imagerie par résonance magnétique , l'avionique, etc. Leur complexité varie d' une seule puce à un grand châssis ou boîtier avec plusieurs composants, périphériques et réseaux.

Exemple de système embarqué

Les systèmes embarqués sont couramment utilisés dans les applications grand public, culinaires, industrielles, d'automatisation, médicales, commerciales et militaires.

  • système de télécommunication

Un grand nombre de systèmes embarqués sont déployés depuis les centraux téléphoniques au niveau du réseau jusqu'aux terminaux mobiles.

  • électronique grand public

Ceux-ci incluent les PDA , les lecteurs MP3 , les téléphones mobiles, les consoles de jeux, les appareils photo numériques, les lecteurs de DVD , les récepteurs GPS et les imprimantes.

  • demande à domicile

Les systèmes intégrés sont utilisés dans les fours à micro-ondes, les machines à laver et les lave-vaisselle pour apporter flexibilité, efficacité et fonctionnalité ; les systèmes CVC avancés utilisent des thermostats en réseau pour contrôler la température plus précisément et efficacement par jour ou par saison ; les maisons intelligentes utilisent des capteurs intégrés L'appareil détecte et contrôle, et contrôle l'éclairage, la température et l'humidité, la sécurité, l'audio et la vidéo, la surveillance, etc. via des réseaux filaires et sans fil.

  • système de circulation

L'avionique avancée telle que les systèmes de navigation inertielle, les récepteurs de positionnement global par satellite sont utilisés dans les aéronefs avec des exigences de sécurité considérables ; les contrôleurs de moteurs électriques / électroniques sont utilisés dans divers moteurs - moteurs sans balais à courant continu , moteurs asynchrones et moteurs à courant continu ; automobiles, véhicules électriques et véhicules hybrides utilisent de plus en plus des systèmes embarqués pour économiser l'énergie et réduire les émissions ; d'autres systèmes de sécurité automobile, notamment les systèmes de freinage antiblocage , les systèmes de contrôle électronique de la stabilité , les systèmes de contrôle de la traction et les systèmes automatiques à quatre roues motrices .

  • équipement médical

Utilisation d'appareils embarqués pour la surveillance des signes vitaux , de stéthoscopes électroniques pour l'amplification du son et de divers systèmes d'imagerie médicale ( tomographie par émission de positrons , tomographie par émission de photons uniques, tomodensitométrie , imagerie par résonance magnétique ) pour l'inspection interne non invasive ; systèmes embarqués dans les équipements médicaux utilisent généralement des ordinateurs industriels.


Les systèmes embarqués sont utilisés dans les systèmes de transport, de protection contre les incendies, de sécurité, médicaux et vitaux, qui sont plus fiables car ils peuvent être isolés des pirates informatiques et autres. En sécurité incendie, le système est conçu pour fonctionner en continu dans des environnements à haute température. Les systèmes embarqués sont autonomes et capables de gérer des situations où les systèmes électriques et de communication sont coupés pour des raisons de sécurité.

Le développement du domaine WSN a entraîné la vulgarisation rapide d'un nouveau type de dispositif sans fil miniature, le smart mote. Les gens peuvent percevoir et agir sur d'innombrables choses dans le monde physique grâce à des systèmes de surveillance et de contrôle de l'information. Mote utilise la technologie de micro-fabrication et combine des sous-systèmes sans fil avec des capteurs de pointe grâce à une technologie de conception de circuits intégrés avancée ; afin que les gens puissent percevoir et agir sur d'innombrables choses dans le monde physique grâce à des systèmes de surveillance et de contrôle des informations. Ces motes sont complètement autonomes et peuvent généralement fonctionner pendant des années avant de nécessiter un remplacement ou une recharge de la batterie.

Avec le module Wi-Fi intégré , les appareils qui communiquaient à l'origine via des ports série peuvent facilement activer la communication sans fil.

histoire

L'ordinateur de guidage Apollo développé par Charles Stark Draper du laboratoire d'instrumentation du MIT était l'un des prototypes des systèmes embarqués modernes . Au début du projet, il était considéré comme la partie la plus risquée car il utilisait le dernier développement de circuits intégrés monolithiques afin de réduire la taille et le poids.

Le premier système embarqué produit en série était l' ordinateur de guidage automatique D-17 à l'intérieur du missile Minuteman I sorti en 1961 . Lorsque la production de missiles Minuteman II a commencé en 1966 , le D-17 a été mis à niveau vers un nouveau type d'ordinateur qui a fait un usage intensif des circuits intégrés pour la première fois. Ce projet à lui seul a permis de réduire le prix unitaire du module anti-gate de 1 000 $ à 3 $ , suffisamment bas pour être utilisé dans un produit commercial.

À la suite de ces premières applications dans les années 1960, non seulement le prix des systèmes embarqués a diminué, mais la puissance de traitement et les fonctionnalités ont également augmenté de façon spectaculaire. Prenons l' exemple de l'Intel 4004 , le premier micro-ordinateur monopuce , conçu pour les calculatrices et autres petits systèmes, mais qui nécessitait toujours une mémoire externe et des puces périphériques. En 1978 , la National Association of Engineering Manufacturers a publié une « norme » pour les microcontrôleurs programmables , couvrant presque tous les contrôleurs informatisés, tels que les ordinateurs à carte unique, les dispositifs de commande numérique et les contrôleurs basés sur les événements.

À mesure que les prix des microcontrôleurs et des microprocesseurs baissent, les produits de consommation peuvent également remplacer les dispositifs analogiques

Au début des années 1980, la mémoire, les composants d'entrée et de sortie ont été intégrés au processeur, ce qui a donné un micro-ordinateur à puce unique. Dans les applications où le coût des ordinateurs à usage général est trop élevé, des microcontrôleurs sont utilisés à la place.

Des microcontrôleurs à moindre coût peuvent être programmés pour remplacer de nombreux composants individuels.Ces systèmes embarqués sont souvent plus complexes que les solutions traditionnelles, mais une grande partie de cette complexité réside dans le microcontrôleur lui-même. Les systèmes embarqués nécessitent peu de composants périphériques, et la plupart des travaux de conception sont axés sur les logiciels, et la mise en place et les tests de prototypes logiciels sont plus rapides que la mise en place de nouveaux circuits qui n'utilisent pas de processeurs embarqués.

caractéristique

Contrairement aux ordinateurs à usage général qui peuvent effectuer plusieurs tâches, les systèmes embarqués sont conçus pour des tâches spécifiques. Certains systèmes doivent répondre à des exigences en temps réel pour garantir la sécurité et la disponibilité ; d'autres systèmes ont peu ou pas d'exigences de performances pour simplifier le matériel et 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 petits composants informatiques intégrés dans des appareils plus grands pour fournir des fonctionnalités plus générales. Par exemple, le robot guitare utilise un système embarqué pour accorder les cordes, mais en général son but n'est pas d'accorder les cordes mais de jouer de la musique ; l'ordinateur de bord existe en tant que sous-système de la voiture, assurant la navigation, le contrôle, rétroaction sur l'état du véhicule et autres fonctions.

Les programmes écrits pour les systèmes embarqués, appelés micrologiciels , sont stockés dans des mémoires mortes ou des puces de mémoire flash et s'exécutent sur des ressources matérielles limitées : une petite quantité de mémoire, un clavier ou même pas d'écran.

Interface utilisateur

Les interfaces utilisateur des systèmes embarqués vont de l'absence d'interface utilisateur axée sur une seule tâche à des interfaces utilisateur graphiques complexes similaires aux systèmes d'exploitation de bureau modernes .

Les appareils embarqués simples utilisent des boutons, des LED , un écran LCD graphique ou numérique et un système de menu simple.

Les systèmes embarqués haut de gamme utilisent un affichage graphique, associé à des boutons tactiles ou sur le bord de l'écran, pour minimiser l'encombrement et offrir de la flexibilité : la signification du bouton change avec ce qui est affiché à l'écran et pointe vers l'option souhaitée pour action Le choix sera réalisé. Les systèmes portables utilisent généralement un écran et des boutons de manette comme dispositif tactile.

Certains systèmes fournissent l'interface utilisateur à distance via un port série (tel que RS-232 , USB , I2C, etc.) ou une connexion réseau. L'avantage de cette méthode est qu'elle étend les performances du système, réduit le coût de l'écran d'affichage, simplifie le BSP et peut créer une interface utilisateur riche sur le PC . Par exemple, un serveur Web intégré s'exécutant sur une plate-forme d'appareil intégrée (telle qu'une caméra IP ou un routeur ) n'a pas besoin d'installer de logiciel personnalisé, mais affiche à la place une interface utilisateur dans un navigateur Web sur un PC connecté à l'appareil .

Processeurs pour systèmes embarqués

Les processeurs embarqués peuvent être grossièrement divisés en deux catégories. Un type est celui des microprocesseurs ordinaires : utilisez une mémoire et des périphériques à circuit intégré indépendants. L'autre catégorie est celle des microcontrôleurs : avec des périphériques intégrés qui réduisent la consommation d'énergie, la taille et le coût. Le logiciel d'un système embarqué est conçu sur mesure pour une application, plutôt qu'un produit installé par l'utilisateur final comme un ordinateur personnel, de sorte qu'une variété d'architectures CPU de base différentes peut être utilisée : à la fois des architectures de type Van Neumann et divers degrés de Architectures Harvard ; Il existe à la fois des processeurs RISC et des processeurs à jeu d'instructions non réduit ; la longueur des mots varie de 4 bits à 64 bits ou même plus, et bien sûr le plus typique est toujours 8/16 bits. La plupart des schémas sont produits par plusieurs sociétés différentes, utilisant un grand nombre de variantes et de types différents.

Les systèmes embarqués utilisent également des microprocesseurs à usage général, mais nécessitent plus de circuits périphériques que les microcontrôleurs.

Carte mère intégrée

PC/104 et PC/104+ sont l'une des normes pour les petits systèmes embarqués robustes à faible volume, principalement basés sur l' architecture x86 ; généralement plus petits qu'un PC standard , mais plus grands que la plupart des systèmes embarqués 8/16 bits simples ; utilisant MSDOS , Linux , NetBSD ou des systèmes d'exploitation embarqués en temps réel tels que MicroC/OS-II , QNX , VxWorks . Parfois, ces cartes mères utilisent également des processeurs non x86 .

Dans certaines applications, la petite taille et le rendement élevé ne sont pas les principales préoccupations, de sorte que des pièces compatibles avec les cartes mères PC de type x86 peuvent être utilisées. Les cartes de la série VIA EPIA peuvent combler cette lacune.Elles sont compatibles avec les PC mais hautement intégrées, de plus petite taille, ou offrent d'autres fonctionnalités très attrayantes pour les ingénieurs embarqués. L'avantage de cette approche est que les outils de développement de logiciels courants peuvent également être utilisés pour les produits à faible coût. Un système construit de cette manière est toujours un système embarqué car il est intégré dans un appareil plus grand dans un seul but. Les exemples incluent les guichets automatiques et les machines de jeux vidéo, qui contiennent tous deux du code pour leurs applications respectives.

La plupart des cartes mères embarquées ne sont pas conçues autour d'un PC et n'utilisent pas les bus ISA ou PCI . Si un processeur SoC est utilisé, ce n'est pas la meilleure politique de connecter des composants discrets avec un bus standard.De plus, les environnements de développement logiciel et matériel peuvent être très différents.

Un modèle de conception courant consiste à utiliser un petit système sur module - peut-être de la taille d'une carte de visite - pour héberger des puces BGA haute densité telles qu'un processeur ARM et des périphériques, un flash externe pour le stockage et une DRAM pour la mémoire . Les fournisseurs de modules fournissent généralement des logiciels de démarrage et des options de système d'exploitation, y compris généralement Linux et certains systèmes d'exploitation en temps réel. Ces modules sont produits en grands volumes par des organisations familiarisées avec les méthodes de test spécialisées et utilisés en plus petits volumes sur des cartes personnalisées avec des périphériques spécifiques à l'application.

Solutions ASIC et FPGA

SoC est une baie configurable commune conçue pour les systèmes embarqués à très haut volume. Il comprend plusieurs processeurs, multiplicateurs, caches et interfaces dans une seule puce pour former un système complet ; mis en œuvre via des ASIC ou des matrices de portes programmables sur le terrain .

équipement périphérique

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

  • Port série : RS-232 , RS-422 , RS-485 , etc.
  • Ports série synchrones : I2C , SPI , ESSI, etc.
  • USB
  • Carte multimédia : carte SD , carte CF , etc.
  • Réseau : Ethernet , LonWorks, etc.
  • Bus de terrain : bus CAN , bus LIN , PROFIBUS , etc.
  • Minuterie : PLL , module de comparaison de capture et unité de traitement du temps
  • E /S discrètes : GPIO
  • Conversion analogique-numérique/numérique-analogique ( ADC / DAC )
  • Interface de débogage : JTAG , FAI, ICSP, port BDM, BITP, port DP9, etc.

outil

Comme les programmeurs informatiques typiques, les concepteurs de systèmes embarqués utilisent des compilateurs , des éditeurs de liens et des débogueurs pour développer des logiciels système embarqués. Cependant, ils utilisent également des outils qui ne sont pas familiers à la plupart des programmeurs.

Les sources d'outils logiciels comprennent les éléments suivants :

  • Un éditeur de logiciels axé sur le marché des systèmes embarqués
  • Porté à partir des outils de développement logiciel GNU (voir compilation multiplateforme )
  • Dans certains cas, il est également possible d'utiliser des outils de développement PC si le processeur embarqué ressemble étroitement à un processeur PC commun

Les concepteurs de systèmes embarqués utilisent également certains outils logiciels qui ne sont pas familiers au programmeur informatique moyen :

  • Un outil courant est un «émulateur en circuit» (ICE ou émulateur en circuit) ou, dans les conceptions plus récentes, un débogueur intégré. Cet outil de débogage est une technique de base pour développer des programmes embarqués. Il remplace le microprocesseur ou l'intègre à l'intérieur du microprocesseur et fournit un outil pratique pour appeler et déboguer rapidement les codes de test dans le système. Un pad est généralement un circuit spécial qui se branche sur le système, en utilisant généralement un PC connecté à ces pads comme interface de débogage.
  • Les connecteurs sont généralement de différents types. Pour la plupart des programmes commerciaux, les éditeurs de liens sont presque une réflexion après coup et les paramètres par défaut ne changent jamais. En revanche, il est courant que les éditeurs de liens intégrés aient des langages de ligne de commande complets et sophistiqués. Il existe souvent différents types de mémoire, chacune contenant un code et des données spéciaux. Les structures de données individuelles peuvent être placées à des adresses spéciales afin que le logiciel puisse facilement accéder aux registres de contrôle mappés en mémoire. Les éditeurs de liens intégrés disposent souvent d'outils d'optimisation externes pour réduire la taille et la durée d'exécution du code. Par exemple, ils peuvent déplacer l'emplacement des sous-programmes pour utiliser des instructions d'appel et de saut plus petites. Ils sont souvent livrés avec des fonctionnalités qui gèrent l'empilement des données et les techniques de commutation de bande, qui sont souvent utilisées dans les logiciels embarqués comme moyen de faire évoluer les processeurs peu coûteux.
  • Un autre outil couramment utilisé est un programme d'outils (souvent écrit par vous-même) qui ajoute du code et/ou du CRC au programme . Grâce à cet outil, le système embarqué peut vérifier les données du programme avant d'exécuter le programme.
  • Les programmeurs embarqués qui développent des logiciels pour le traitement numérique du signal utilisent souvent des outils mathématiques tels que MathCad ou Mathematica pour les simulations mathématiques.
  • Certains des outils les moins utilisés sont des outils qui convertissent les fichiers de données en code, ce qui vous permet d'inclure des types arbitraires de données dans vos programmes.
  • Quelques projets utilisent des langages de programmation synchrones pour des exigences particulières de fiabilité ou de traitement numérique du signal .

Certains langages de programmation fournissent un support spécial pour la programmation du système embarqué.

  • Pour le langage C , ISO/IEC TR 18037:2005 définit
    • espace d'adressage spécifié
    • classe de stockage spécifiée
    • Adressage matériel des entrées et sorties de base

débogage

Le débogage est généralement effectué à l'aide d'un émulateur en circuit ou d'un autre débogueur capable de générer des interruptions à l'intérieur du microcode du microcontrôleur ( microcode ) . Les interruptions de microcode permettent aux débogueurs de fonctionner dans du matériel où seul le processeur fonctionne, et les débogueurs basés sur le processeur peuvent tester et déboguer les circuits de l'ordinateur du point de vue du processeur . Le PDP-11 a été le pionnier de cette fonctionnalité.

Les développeurs peuvent toujours utiliser les points d'arrêt , le pas à pas et le débogage de langage de haut niveau, qui est disponible sur de nombreux outils de débogage. De plus, les développeurs doivent enregistrer et utiliser des outils d'enregistrement simples lors du débogage de séquences d'événements en temps réel.

Les programmeurs PC et mainframe qui rencontrent ce problème en premier sont souvent confus lorsqu'il s'agit des priorités de conception et des approches possibles. Le mentorat, les révisions de code et la programmation sans ego sont recommandés.

À mesure que les systèmes embarqués deviennent plus complexes, des outils et des systèmes d'exploitation de niveau supérieur sont progressivement portés sur des appareils viables. Par exemple, les téléphones cellulaires , les assistants numériques personnels et d'autres ordinateurs grand public nécessitent certains logiciels importants qui sont achetés ou fournis par des particuliers ou des entreprises autres que les fabricants de ces appareils électroniques. Dans ces systèmes, un environnement de programmation ouvert tel que Linux , OSGi ou Java est requis pour que les fournisseurs de logiciels tiers puissent vendre des logiciels sur un marché à grande échelle.

La plupart de ces environnements de développement ont une conception de référence qui s'exécute sur un PC , et la grande majorité de ces logiciels peuvent être développés sur des PC conventionnels. Cependant, le portage d'un environnement ouvert vers un appareil électronique dédié et le développement de pilotes pour un appareil électronique restent généralement le travail d'un ingénieur logiciel de système embarqué traditionnel. Dans certains cas, l'ingénieur travaille pour le fabricant de circuits intégrés, mais il existe toujours une telle personne quelque part.

système opérateur

Téléphone public Internet sous Windows XP

Les systèmes embarqués n'ont souvent pas de système d'exploitation , un système d'exploitation embarqué dédié (souvent un système d'exploitation en temps réel ) ou un programmeur désigné à porter sur ces nouveaux systèmes.

Commencez

Les systèmes embarqués sont livrés avec un code de démarrage qui désactive généralement les interruptions, configure les paramètres électroniques, teste l'ordinateur ( RAM , CPU et logiciel) et démarre l'exécution de l'application. De nombreux systèmes embarqués récupèrent après une brève coupure de courant, redémarrant souvent sans effectuer l'autotest le plus récent. Les redémarrages au dixième de seconde sont courants.

De nombreux concepteurs trouvent les LED très utiles pour indiquer les conditions d'erreur et peuvent aider au dépannage. Un mécanisme couramment utilisé consiste à allumer toutes les LED de l'appareil électronique au moment de la réinitialisation pour indiquer l'alimentation et le fonctionnement normal des LED ; puis l'état des LED est modifié par le logiciel pendant le POST ; par la suite, le logiciel utilise ces LED pour indiquer l'état normal ou défectueux du processus de fonctionnement. Cela tient les techniciens, les ingénieurs et les utilisateurs informés de l'état du système. Une exception intéressante concerne les compteurs d'électricité et certains autres articles de grande rue qui ont une lumière clignotante pour attirer l'attention ou indiquer une condition cassée.

autotest interne

De nombreux systèmes embarqués disposent d'un certain degré ou d'un certain nombre d' autotests internes à la mise sous tension . Il existe plusieurs types d'autotests :

  1. Vérification de l'ordinateur : vérifie le processeur, la RAM et la mémoire du programme. Ces vérifications commencent généralement à la mise sous tension et, dans certains systèmes critiques pour la sécurité, elles sont généralement effectuées périodiquement à des intervalles sûrs ou sur une période de temps.
  2. Vérification des périphériques : simulez l'entrée et lisez les données ou mesurez les données de sortie. Il existe des tonnes de systèmes de communication, de simulation et de contrôle qui ont ces vérifications très bon marché.
  3. Vérification de l'alimentation : teste généralement chaque circuit d'alimentation et peut également vérifier la batterie ou l'entrée d'alimentation secteur. Habituellement, la charge de la partie alimentation est très lourde et il y a peu de marge, donc cette vérification est très significative.
  4. Vérification de la communication : vérifiez les messages simples reçus des unités connectées, par exemple en utilisant le message ICMP "ping" sur Internet.
  5. Inspection du câble : connectez le fil au câble à inspecter pour indiquer l'aiguille à inspecter. Les systèmes de communication synchrone tels que les téléphones utilisent souvent des tests « synchrones ». L'inspection des câbles est peu coûteuse et est particulièrement importante lorsque la section de l'unité comporte des prises.
  6. Vérification de l'équipement : Un système doit souvent être ajusté pendant l'installation, et cette vérification donne une indication de l'état à l'installateur.
  7. Vérification de la consommation : Vérifie ce que le système consomme et avertit si le quota est trop bas. L'exemple le plus courant est la jauge de carburant d'une voiture, et peut-être l'exemple le plus complexe est un système d'analyse médicale automatisé qui maintient un état détaillé des réactifs chimiques.
  8. Vérification en cours : vérifiez l'état de fonctionnement du système qui intéresse l'utilisateur. Évidemment, cette vérification doit être effectuée pendant que le système est en marche.Cette vérification comprend les instruments de navigation de l'avion, le compteur de vitesse de la voiture et le voyant du disque.
  9. Contrôles de sécurité : des contrôles sont effectués dans les « périodes de sécurité » pour s'assurer que le système reste fiable. La limite de temps de sécurité est généralement inférieure au temps minimum pendant lequel des dommages peuvent survenir.

système de fiabilité

Selon les besoins des gens, la fiabilité a des définitions différentes. Il est intéressant de noter qu'il existe relativement peu de types de fiabilité. Les systèmes ayant des types de fiabilité similaires utilisent des types de vérifications internes et des méthodes de récupération similaires :

  1. Le système est très dangereux ou irréparable. Cela inclut les systèmes spatiaux, les câbles sous-marins, les balises de navigation, les systèmes de forage et, très curieusement, les automobiles et les produits fabriqués en série. En général, les systèmes embarqués surveillent des sous-systèmes individuels, basculent vers des composants redondants en ligne ou fonctionnent en « mode mou » pour fournir une fonctionnalité partielle. Les produits de consommation fabriqués en série tels que les automobiles, les ordinateurs personnels ou les imprimantes entrent également dans cette catégorie en raison du coût élevé de la réparation par rapport au coût d'achat et des longues distances requises pour les réparateurs.
  2. Le système ne peut pas être arrêté en toute sécurité. Cela inclut la navigation aérienne, les systèmes de contrôle de réaction, les contrôles de sécurité critiques des usines chimiques, la signalisation ferroviaire, les moteurs pour les avions monomoteurs, comme mentionné ci-dessus, mais le "mode mou" est moins toléré et oblige souvent l'opérateur à sélectionner un système de secours.
  3. Beaucoup d'argent sera perdu lorsque le système tombera en panne. Ceux-ci incluent les centraux téléphoniques, les contrôles d'usine, les contrôles de pont et d'ascenseur, les transferts d'argent, le développement du marché, les ventes et services automatisés, etc. et les processus manuels Le mode souple.
  4. Ne pas utiliser lorsque le système n'est pas sûr. Semblable à la situation ci-dessus, le fonctionnement du système entraînera une grande perte d'argent. Équipements médicaux, avions avec sauvegarde à chaud tels que moteurs, commandes d'usines chimiques, opérations automatisées sur actions, systèmes de jeux, etc. Les tests peuvent être toutes sortes de choses, mais ce que vous pouvez faire en cas de problème, c'est arrêter tout le système.

Types d'architectures logicielles embarquées

Il existe plusieurs types de base d'architectures logicielles embarquées couramment utilisées.

boucle de contrôle

Dans cette conception, le logiciel a une boucle simple qui appelle des sous-programmes , chaque sous-programme gérant une partie du matériel ou du logiciel. Les interruptions sont souvent utilisées pour définir des indicateurs ou mettre à jour des blocs-notes que d'autres parties du logiciel peuvent lire .

Le système utilise une API simple pour activer et désactiver les paramètres d'interruption. S'il est géré correctement, il peut gérer les appels imbriqués dans des sous-programmes imbriqués, et l'interruption la plus externe permet au nid de restaurer l'état d'interruption précédent. Cette méthode est l'un des moyens les plus simples d'implémenter Exokernel .

Habituellement, il y a des sous-programmes dans la boucle pour contrôler un ensemble de temporisateurs logiciels à l'aide d'interruptions immédiates périodiques . Lorsqu'un temporisateur expire, les sous-programmes correspondants seront exécutés ou les drapeaux correspondants seront définis.

Tout événement matériel susceptible de se produire doit être soutenu par une minuterie logicielle. Les événements matériels se produisent environ une fois tous les billions d'erreurs, soit environ une fois par an pour le matériel moderne, et pour des millions d'appareils produits en série. L'omission d'une minuterie logicielle pourrait être commercialement désastreuse pour la plupart des appareils.

Parfois, le logiciel de test exécute un ensemble de temporisateurs de sécurité logiciels qui réinitialisent périodiquement le temporisateur de chien de garde dans le matériel . Si le logiciel manque un événement, le logiciel de minuterie de sécurité le captera. Si la minuterie de sécurité tombe en panne, le matériel de surveillance réinitialisera le système.

La machine d'état peut être implémentée à l'aide de pointeurs vers chaque fonction de machine d'état , et les fonctions peuvent être implémentées en C++ , C ou en langage d'assemblage . L'état changeant met différentes fonctions dans l'indicateur, et l'indicateur de fonction est exécuté à chaque fois que la boucle s'exécute .

De nombreux concepteurs recommandent de lire les périphériques d'E/S à chaque boucle et d'enregistrer les résultats, afin que la logique s'exécute sur des paramètres cohérents.

De nombreux concepteurs aiment concevoir des machines à états de sorte que chaque état ne vérifie qu'une ou deux choses, généralement des événements matériels et des temporisateurs logiciels.

Les concepteurs suggèrent qu'une machine d'état à plusieurs niveaux devrait avoir des machines d'état de niveau inférieur exécutées plus tôt que les machines d'état de niveau supérieur afin que les niveaux supérieurs puissent fonctionner avec les informations correctes.

Les fonctions complexes telles que le contrôle de la combustion interne sont généralement traitées selon des tables multidimensionnelles. Le code effectue généralement un traitement de recherche de table sans calculs complexes. Le logiciel peut effectuer des calculs delta entre les entrées pour réduire la taille et le coût de la table.

Dans les plus petits microcontrôleurs, en particulier le 8051 qui n'a qu'une pile de 128 octets , la boucle de contrôle permet à un bon éditeur de liens d'écraser les variables locales avec des données allouées statiquement . Dans ce mécanisme, les variables plus proches de la fin de l'arbre d'appel de procédure ionique obtiennent des adresses mémoire plus élevées. Lors du démarrage d'une nouvelle branche, ses variables peuvent être redistribuées dans l'espace laissé par la branche précédente.

Un inconvénient majeur d'une boucle de contrôle simple est qu'elle ne garantit pas un temps de réponse à un événement matériel particulier.

Une conception soignée peut facilement garantir que les interruptions ne sont pas désactivées pendant de longues périodes, de sorte que le code d'interruption puisse s'exécuter à des moments très précis.

Un autre inconvénient majeur des boucles de contrôle est la complexité de l'ajout de nouvelles fonctionnalités. Les algorithmes qui prennent beaucoup de temps doivent être soigneusement décomposés afin que seule une petite partie s'exécute dans la boucle principale à la fois.

L'avantage de ce système est sa simplicité, et sur de très petits morceaux de logiciel, la boucle s'exécute très rapidement et presque personne ne se soucie qu'elle soit imprévisible.

Son autre avantage est que ce type de système garantit la qualité du logiciel en cours d'exécution et ne peut pas attribuer de mauvais résultats d'exécution à d'autres systèmes d'exploitation.

tâches non préemptives

Le système de tâches non préemptif est très similaire au système ci-dessus, sauf que cette boucle est cachée dans l'API . Nous définissons une séquence de tâches, chacune ayant sa propre pile de sous-programmes ; puis, lorsqu'une tâche devient inactive, elle appelle un sous-programme inactif (appelant généralement " pause " , " attendre " , " rendement " etc.).

Les architectures avec des propriétés similaires ont une file d'attente d'événements avec une boucle pour déterminer quand supprimer et appeler des sous-programmes en fonction d'un champ dans la liste de file d'attente.

Les avantages et les inconvénients de cette architecture sont très similaires aux boucles de contrôle, sauf qu'il est plus facile d'ajouter de nouveaux logiciels de cette façon, il suffit simplement d'écrire une nouvelle tâche ou de l'ajouter à l'interpréteur de file d'attente.

temporisateur préemptif

Utilisez l'un des systèmes ci-dessus, mais ajoutez un système de minuterie qui exécute des sous-programmes sur les interruptions de minuterie, ajoutant ainsi une toute nouvelle capacité au système, de sorte que pour la première fois, les sous-programmes de minuterie puissent s'exécuter dans un délai garanti.

De plus, pour la première fois, le code peut accéder à ses propres structures de données à des moments inattendus. Les sous-programmes de minuterie doivent être traités comme des sous-programmes d'interruption.

tâche préventive

Exécutez à partir d'un temporisateur préemptif ou d'une autre interruption à l'aide du système de tâches non préemptif ci-dessus.

Puis le système devient soudainement très différent. Le code d'une tâche peut endommager les données d'autres tâches , elles doivent donc être fragmentées. L'accès aux données partagées doit être contrôlé à l'aide d'une stratégie de synchronisation, telle que des files d'attente de messages, des sémaphores ou des mécanismes de synchronisation non bloquants.

Souvent, une organisation de développement achète un système d'exploitation en temps réel à cette étape . Cela peut être un choix judicieux si une organisation manque de talents capables d'écrire un système d'exploitation ou si le système d'exploitation va être au-dessus de plusieurs produits. Cela ajoute généralement six à huit semaines au calendrier de développement, et pour toujours, les programmeurs peuvent blâmer les retards.

micro-noyau et ex-noyau

Cette approche tente d'organiser le système pour qu'il soit plus configurable que le mononoyau, tout en offrant des fonctionnalités similaires.

Un micro-noyau est un développement logique d'un système d'exploitation en temps réel, généralement organisé de telle manière que le noyau du système d'exploitation alloue de la mémoire et bascule le CPU entre différents threads. Les processus en mode utilisateur implémentent des fonctions majeures telles que le système de fichiers et l'interface utilisateur.

Les micro-noyaux ont été essayés pour la première fois dans les années 1950, mais comme les ordinateurs étaient si lents à basculer entre les tâches et à échanger des données entre elles, ils ont été abandonnés au profit des gros noyaux de style MULTICS et UNIX . De manière générale, le micro-noyau réussit relativement bien lorsque la commutation de tâches et la communication entre les tâches sont rapides, et échoue lorsqu'il est lent.

L'efficacité de la communication obtenue en utilisant des appels de sous-programmes ordinaires dans le noyau externe est très élevée, et le matériel et les logiciels du système peuvent être utilisés et étendus par les programmeurs. Un noyau de ressources (qui fait peut-être partie d'une bibliothèque) alloue du temps CPU , de la mémoire et d'autres ressources. Les grandes fonctionnalités du noyau telles que le multitâche, la mise en réseau et les systèmes de fichiers sont fournies via la base de code. Les bibliothèques peuvent être dynamiquement liées, étendues ou partagées. Différentes applications peuvent même utiliser différentes bibliothèques, mais toutes les ressources proviennent du noyau de ressources.

machine virtuelle

Certains systèmes avioniques utilisent plusieurs calculateurs commerciaux. Cela va encore plus loin, chaque ordinateur simulant plusieurs copies de lui-même, des programmes importants s'exécutant et votant sur plusieurs ordinateurs en même temps ().

L'avantage de l'environnement de simulation est que même si un ordinateur tombe en panne, différentes routines du logiciel peuvent être migrées vers la partition logicielle de travail normale, et le nombre de votes pour le vote ne sera pas affecté.

Les logiciels virtuels s'exécutent généralement en mode utilisateur de l'ordinateur, qui capture et simule l'accès au matériel et les instructions qui ne s'exécutent pas en mode utilisateur.

Calcul du point de contrôle

Un autre mécanisme couramment utilisé consiste pour deux ordinateurs à calculer un peu , puis à rapporter leurs résultats de calcul à ce point. Si les calculs d'un ordinateur sont nut , il est désactivé.

Système d'exploitation Office ( macro-noyau )

Ce type de système est généralement populaire dans les projets embarqués sans financement du système, mais d'après les multiples auteurs de cet article, ce n'est généralement pas vrai, leur logique est :

  • Un système d'exploitation est une bibliothèque spécialement emballée de code réutilisable. Si ces codes sont utiles, les concepteurs gagnent du temps et de l'argent, sinon ils sont inutiles.
  • Le système d'exploitation du système d'entreprise n'a pas d'interface avec le matériel embarqué. Par exemple, si vous souhaitez utiliser Linux pour écrire un contrôleur de moteur ou un standard téléphonique, la plupart des opérations de contrôle réelles sont des appels IOCTL, et en même temps, les interfaces normales de lecture, d'écriture et de requête sont inutiles. Le système d'exploitation est donc un gros obstacle au développement réel.
  • La plupart des systèmes embarqués ne font pas de travail de bureau, donc la majeure partie du code du système d'exploitation de bureau est gaspillée. Par exemple, la plupart des systèmes embarqués n'utilisent jamais le système de fichiers ou l'écran, de sorte que le système de fichiers et les parties de l'interface graphique sont gaspillés, et ces codes inutilisés n'affecteront que la fiabilité du système.
  • Les systèmes d'exploitation Office protègent le matériel des programmes utilisateur, ce qui entrave sérieusement les efforts de développement embarqué.
  • Le système d'exploitation doit être porté sur un système embarqué, c'est-à-dire que les pilotes matériels doivent être réécrits de toute façon, ce qui est également la partie la plus difficile du système d'exploitation, il est donc peu efficace d'utiliser un tel système d'exploitation.
  • Les fonctionnalités vraiment utiles et portables d'un système d'exploitation sont de petits morceaux de code. Par exemple, une interface TCP/IP de base est d'environ 3000 lignes de code, un autre exemple est un simple système de fichiers de la même taille. Si la conception nécessite ces codes, elle peut être complétée avec moins de 10% du coût de développement du système embarqué, sans payer de droits d'auteur, et n'a besoin que d'être simplement réécrite. Si le code système est suffisamment général, il existe généralement des entreprises qui vendent du code d'implémentation du langage C sans frais de droits d'auteur derrière la couverture des magazines de systèmes embarqués.

Bien que de nombreux ingénieurs ne soient pas d'accord avec cela, Linux embarqué devient de plus en plus populaire, en particulier dans les systèmes embarqués puissants tels que les routeurs sans fil et les systèmes de positionnement global . Il y a quelques raisons à cela :

  • Il existe des codes d'implémentation prêts à l'emploi transplantés sur des puces intégrées communes.
  • Ils permettent la réutilisation de pilotes de périphériques , de serveurs Web , de pare-feu ou d'autres codes accessibles au public .
  • Le système de développement peut démarrer avec une combinaison de nombreuses fonctionnalités, et les fonctions inutiles peuvent être éliminées au moment de la publication, économisant ainsi la mémoire consommée.
  • De nombreux ingénieurs pensent que l'exécution d'applications en mode utilisateur est plus fiable et plus facile à déboguer, donc le processus de développement est plus facile et le code est plus portable.
  • De nombreux systèmes embarqués n'ont pas d'exigences strictes en matière de performances en temps réel comme les systèmes de contrôle, et la vitesse de réponse de systèmes tels que Linux embarqué est suffisante pour de nombreuses applications.
  • Les fonctionnalités qui nécessitent une réactivité plus rapide, plutôt que la fiabilité, sont généralement placées dans le matériel .
  • De nombreux systèmes d'exploitation en temps réel facturent des frais par article, qui peuvent être importants lorsque le produit est un produit de consommation.

Système d'exploitation personnalisé exotique

Certains systèmes doivent être sûrs, opportuns, fiables ou efficaces, et l'architecture ci-dessus ne peut pas les atteindre. Il existe des techniques bien connues pour construire de tels systèmes :

  • Engagez un véritable programmeur système. Ils coûtent peu, mais peuvent économiser des années de mise en service et les pertes de revenus associées.
  • RMA (Rate Monotonic Analysis) peut être utilisé pour évaluer si un ensemble de tâches peut s'exécuter sur un système matériel spécifique. Dans la forme la plus simple, le concepteur s'assure que les tâches terminées les plus rapides ont la priorité la plus élevée. En moyenne, le CPU est au moins 30% de temps libre.
  • Les tâches harmonieuses sont capables d'optimiser efficacement le CPU. Fondamentalement, le concepteur garantit que chaque travail démarre à partir du minuteur de pulsation. Ceci est difficile à faire sur les systèmes d'exploitation en temps réel car ils changent généralement de tâche en attendant les périphériques d'E/S.
  • Un système avec exactement deux priorités (généralement en cours d'exécution et de désactivation des interruptions ) ne peut pas avoir de problèmes d'inversion de priorité où les tâches à haute priorité attendent que les tâches à faible priorité libèrent des sémaphores ou d'autres ressources .
  • Un système avec monitor() ne peut pas se bloquer. Le moniteur verrouille un morceau de code qui désactive les interruptions et autres tâches préventives. Si ce moniteur n'est utilisé que pour un petit morceau de code rapide, le système fonctionne probablement bien. S'il peut être prouvé que l'API de surveillance est entièrement fonctionnelle dans tous les cas, par exemple si seules les interruptions sont désactivées, il n'y aura pas de blocage du système.

Cela signifie que les systèmes utilisant deux priorités et moniteurs sont sûrs et fiables car ils sont exempts de blocages et d'inversions de priorité. Si le moniteur peut s'exécuter jusqu'à la fin, il ne se bloquera jamais. Cela peut également être très efficace si vous utilisez des tâches Harmony. Cependant, RMA ne peut pas décrire ces systèmes, et les priorités ne sont de préférence pas partout, y compris le système d'exploitation et le matériel.

lien externe

Systèmes d'exploitation embarqués courants

voir système d'exploitation embarqué

  • Android
  • Système d'exploitation Firefox
  • Système d'exploitation iPhone
  • UC/OS II
  • FreeRTOS
  • uCLinux
  • VxWorks
  • PSOS
  • Noyau
  • PalmOS
  • WindowsCE
  • Windows XP Embarqué
  • Windows Vista intégré
  • Linux embarqué
  • ÉCHOS
  • QNX
  • Lynx
  • Symbien
  • Filetage RT

Systèmes logiciels et matériels embarqués open source communs dans l'industrie

pas de système d'exploitation

Il y a un système d'exploitation + une interface graphique faible

Avec système d'exploitation + interface graphique

Processeur 8/16 bits

  • Carte de développement Arduino (ensemble complet de matériel et de logiciels, open source, actuellement populaire)
  • Diverses sociétés de microcontrôleurs proposent des conceptions de référence (comme Ateml, etc.)
  • Carte de développement Arduino (ensemble complet de matériel et de logiciels, open source, actuellement populaire)
  • Projet Ethernut/nutos (support matériel et logiciel, open source, mettant l'accent sur le réseau informatique)
  • Système d'exploitation UcosII (logiciel, open source mais la version commerciale nécessite des frais de licence)
  • Système d'exploitation FreeRTOS (logiciel, version open source fournie par des sociétés commerciales, vend également les versions commerciales correspondantes)
  • Keil RTX51 Real-Time Kernel (open source, le logiciel Keil est livré avec une licence requise)

/

Processeur 32 bits

/

  • Projet Ethernut/nutos (support matériel et logiciel, open source, mettant l'accent sur le réseau informatique)
  • Système d'exploitation eCos (logiciel, open source, l'avantage est que le RTOS peut être personnalisé)
  • Système d'exploitation uClinux (logiciel, open source, avec le projet uCsimm de la carte matérielle correspondante)
  • Système d'exploitation FreeRTOS (logiciel, version open source fournie par des sociétés commerciales, vend également les versions commerciales correspondantes)
  • Keil RTX Real-Time Kernel (open source, le logiciel Keil est livré avec une licence requise)
  • Système d'exploitation RT-thread (logiciel, open source, développement national, avec interface graphique simple)
  • Système d'exploitation Android
  • Projet de carte Beagle (appariement logiciel et matériel, open source)
  • Projet Raspberry Pi  (appariement logiciel et matériel, open source)

les références

    1. ↑   Michael Barr.. Neutrino Technical Library. Récupéré le 21/04/2007. ( Archivé de l'original le 25/06/2013 ) .
    2.  Bruyère, Steve. . Série EDN pour les ingénieurs de conception 2. Newnes. 2003 : 2 [2017-04-30]. ISBN 978-0-7506-5546-0. (原始内容存档2020-09-11 . Un système embarqué est un  système basé sur un microprocesseur  conçu pour contrôler une fonction ou une gamme de fonctions.

Cet article est issu de  Wikipédia . Le texte est sous licence  Creative Commons - Attribution - Sharealike . Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.

 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_40191861/article/details/132164966
conseillé
Classement