départ es

N

niro

Guest
pouvez-vous dire comment ma tarte tos les systèmes embarqués voyage

livres
logiciel
hardware

 
essayez l'option de recherche et aussi voir les sujets ... u'll trouverez des tonnes de trucs
voici quelques mai que vous aider à:

http://www.edaboard.com/viewtopic.php?t=167440

ftopic173482.html

http://www.edaboard.com/viewtopic.php?t=152830

ftopic158568.html

ftopic148649.html

 
Un système embarqué est un système polyvalent dans lequel l'ordinateur est totalement encapsulé par l'appareil
qu'il contrôle.Contrairement à un ordinateur, comme un ordinateur personnel, un système intégré effectue les tâches pré-définies,
le plus souvent avec des besoins très spécifiques.Comme le système est dédié à une tâche spécifique, les ingénieurs peuvent optimiser, réduire la taille et le coût du produit.Les systèmes embarqués sont souvent produits en masse, de sorte que les économies de coûts mai être multipliée par des millions d'articles.

Le cœur de tout système embarqué est constitué par un ou plusieurs microprocesseurs ou microcontrôleurs, programmé pour effectuer un petit nombre de tâches.Contrairement à un ordinateur à usage général qui peut faire tourner
n'importe quelle application logicielle de l'utilisateur choisit le logiciel sur un système embarqué est semi-permanente, de sorte
qu'il est souvent appelé le «firmware».
Sommaire
[masquer]

* 1 Des exemples de systèmes embarqués
* 2 Histoire
* 3 Caractéristiques
* 4 La conception de systèmes embarqués
o 4.1 Les interfaces utilisateurs
o 4.2 Platform
o 4.3 Tools
o 4.4 Debugging
o 4.5 du système d'exploitation
o Start-up 4.6
4.6.1 Built-In Self-Test
o 4.7 Fiabilité des régimes
* 5 types d'architectures de logiciels embarqués
o 5.1 La boucle de contrôle
o 5,2 Nonpreemptive multitâche
o 5,3 Preemptive timers
o 5,4 Preemptive tâches
o 5,5 Microkernels et Exokernels
o 5.6 Les machines virtuelles
o 5,7 Checkpointed calculs
o 5.8 Bureau
de style (big-noyau) les systèmes d'exploitation
o 5,9 Exotic coutume des systèmes d'exploitation
* 6 Voir aussi
* 7 Liens externes

[modifier]

Exemples de systèmes embarqués

* Automatiques de billets (DAB)
* Avionique, tels que les systèmes de guidage inertiel, de vol de matériel / logiciels et autres systèmes intégrés dans des avions et des missiles
* Téléphones cellulaires et téléphoniques
* Matériel de réseau informatique,
y compris les routeurs, firewalls et timeservers
* Les imprimantes
* Copieurs
* Les disques durs (lecteurs de disquettes et lecteurs de disque dur)
* Les contrôleurs de moteur et des freins antiblocage aux contrôleurs pour les véhicules automobiles
* Domotique produits, comme les thermostats, les climatiseurs,
les gicleurs, les systèmes de surveillance et de sécurité
* Calculatrices de poche
* Les appareils ménagers, y compris les fours à micro-ondes, machines à laver, téléviseurs, lecteurs / graveurs de DVD
* Matériel médical
* Les équipements de mesure de stockage numérique, tels que des oscilloscopes, analyseurs logiques, analyseurs de spectre et
* Montres multifonctions
* Multimédia appareils récepteurs de radio Internet, TV set top boxes, récepteurs satellite numériques
* Imprimantes multifonctions (MFP)
* Les assistants numériques personnels (ANP), qui est,
de petits ordinateurs de poche avec les applications PIM et d'autres
* Les téléphones mobiles avec des fonctionnalités supplémentaires, par exemple, les assistants numériques mobiles avec portable et PDA et Java (MIDP)
* Contrôleurs logiques programmables (PLC) pour l'automatisation industrielle et de surveillance
* L'arrêt des consoles de jeux vidéo et consoles de jeux de poche
* Ordinateur portable

[modifier]

Histoire
L'Apollo Guidance Computer, le premier moderne embarqué reconnaissable system.source: The Computer History Museum
Agrandir
L'Apollo Guidance Computer, le premier système intégré moderne reconnue.
source: The Computer History Museum

La première reconnue par un système intégré moderne a été l'Apollo Guidance Computer, développée par Charles Stark Draper au MIT Instrumentation Laboratory.Chaque vol à destination de la lune a eu deux.Ils ont tenu de l'inertie des systèmes de guidage à la fois de la commande et le module LEM.

Au début
du projet, l'orientation Apollo ordinateur a été considérée comme la plus risquée du point dans le projet Apollo.L'utilisation de la nouvelle circuits intégrés monolithiques, de réduire la taille et le poids, l'augmentation de ce risque.La première production de masse de systèmes embarqués a été Autonetics la D-17 des orientations pour l'ordinateur missile Minuteman, sorti en 1961.Il a été construit à partir de la logique transistor discret et a un disque dur de la mémoire principale.Lorsque le Minuteman II a été mise en production en 1966, le D-17 a été remplacé par un nouvel ordinateur qui a été la première à haut volume utilisation de circuits intégrés.Ce programme à lui seul prix réduit sur quad nand gate circuits 1000/each de $ à $ 3/each, permettant leur utilisation dans des produits commerciaux.

L'essentiel des caractéristiques de conception ont été Minuteman ordinateur que son orientation algorithme pourrait être reprogrammée plus tard dans le programme, de faire des missiles plus précis, et l'ordinateur pourrait également tester le missile, le câble et le connecteur d'économie de poids.

Depuis ces premières applications dans les années 1960, où le coût est sans objet,
les systèmes embarqués ont baissé en prix.Il ya également eu une énorme augmentation de la puissance de traitement et de fonctionnalité.Cette évolution favorable
de la loi
de Moore.
L'Intel 4004, le premier microprocesseur
Agrandir
L'Intel 4004, le premier microprocesseur

Le premier a été le microprocesseur Intel 4004, qui a trouvé son chemin dans les calculatrices et autres petits systèmes.Toutefois, il reste nécessaire de puces mémoire externe et autres appuis extérieurs logique.Plus puissant microprocesseurs, comme le 8080 d'Intel ont été développées pour des projets militaires, mais aussi vendu à d'autres usages.

À la fin des années 1970, 8-bit microprocessors étaient la norme, mais le plus souvent besoin des puces de mémoire externe, et la logique de décodage et d'entrée / sortie.Toutefois,
les prix ont chuté rapidement et a adopté plus de demandes de petits systèmes embarqués à la place de (puis plus fréquent)
la logique de conception.Certaines de ces demandes ont été plus visibles dans les instruments et dispositifs coûteux.
Un microcontrôleur PIC
Agrandir
Un microcontrôleur PIC

Au milieu des années 1980, la plupart des composants du système externe précédemment avaient été intégrés dans la même puce que le processeur.Le résultat est une réduction de la taille et le coût des systèmes embarqués.Ces circuits intégrés ont été appelés micro plutôt que les microprocesseurs, et l'utilisation généralisée de systèmes embarqués est devenue réalisable.

Comme le coût d'un micro est tombé en dessous d'une heure
de salaire pour un ingénieur, il ya eu une explosion à la fois du nombre de systèmes embarqués, et le nombre de pièces fournies par différents fabricants pour l'utilisation dans les systèmes embarqués.Par exemple, beaucoup de nouveaux circuits de fonction spéciale a commencé à venir avec une interface de programmation de série plutôt que les traditionnels parallèles, à l'interfaçage avec un microcontrôleur avec moins d'interconnexions.Le bus I2C est apparu aussi à cette époque.

Comme le coût d'un microcontrôleur est tombée en dessous de 1 $, il est devenu possible de remplacer des composants analogiques coûteux tels que des potentiomètres et de condensateurs variables avec l'électronique numérique contrôlé par un microcontrôleur.

À la fin des années 80,
les systèmes embarqués sont la norme plutôt que l'exception pour presque tous les appareils électroniques grand public, une tendance qui
s'est poursuivie depuis.
[modifier]

Caractéristiques

Les systèmes embarqués sont des systèmes informatiques au sens le plus large.Ils comprennent tous les ordinateurs autres que ceux spécifiquement destinés à des fins générales d'ordinateurs.Exemples de systèmes embarqués gamme de lecteurs de musique portables en temps réel pour la sous-systèmes de la navette spatiale.

La plupart des systèmes embarqués sont conçus pour effectuer des tâches à faible coût.La plupart, mais pas tous en temps réel système de contraintes qui doivent être remplies.Ils mai besoin d'être très rapide pour certaines fonctions, alors que la plupart des autres fonctions
n'aura probablement pas les exigences temporelles strictes.Ces systèmes répondent à leurs contraintes temps-réel, avec une combinaison de matériel à des fins spéciales et des logiciels adaptés aux exigences du système.

Il est difficile de caractériser les systèmes embarqués par la vitesse ou le coût, mais pour un volume élevé de systèmes, de minimiser le coût est habituellement le premier examen de conception.Souvent, les systèmes embarqués ont de faibles exigences de performances.Cela permet au système de matériel informatique pour être simplifiées afin de réduire les coûts.Ingénieurs généralement choisir le matériel qui est juste assez bon pour mettre en œuvre les fonctions nécessaires.

Par exemple, un digital set-top box pour la télévision par satellite a procédé à des dizaines de mégabits continu de données par seconde, mais la plupart des traitements sont effectués par l'usage des circuits intégrés d'analyse, direct, et le décodage multi-canal de la vidéo numérique.Le processeur embarqué "met en place" de ce processus, et affiche le menu des graphiques,
etc pour les set-top
du look and feel.Comme les processeurs embarqués deviennent plus rapides et moins chers, ils peuvent prendre en charge plus de la grande vitesse de traitement des données.

Pour un faible volume de systèmes embarqués,
des ordinateurs personnels peuvent souvent être utilisés, en limitant les programmes ou en remplaçant le système d'exploitation avec un système d'exploitation temps réel.Dans ce cas, à des fins spéciales matériel mai être remplacé par un ou plusieurs processeurs haute performance.Cependant, certains systèmes embarqués mai à haute performance CPU, matériel, et de grands souvenirs pour accomplir une tâche requise.

Dans un volume élevé de systèmes embarqués tels que les lecteurs de musique portables ou les téléphones cellulaires,
la réduction des coûts devient une préoccupation majeure.Ces systèmes ont souvent quelques circuits intégrés, un processeur hautement intégré qui contrôle toutes les autres fonctions et d'une seule puce mémoire.Dans ces dessins de chaque composant est choisi et conçu pour minimiser le coût global du système.

Le logiciel écrit pour de nombreux systèmes embarqués,
en particulier ceux sans disque dur est parfois appelé firmware.Firmware est un logiciel qui est intégré dans des périphériques matériels,
par exemple, dans un ou plus de mémoire Flash ROM ou de circuits intégrés.

Programmes sur un système embarqué souvent courir avec peu de ressources matérielles: souvent il
n'ya pas de disque dur, système d'exploitation,
le clavier ou l'écran.Le logiciel de mai ne pas avoir quoi que ce soit à distance, comme un système de fichier, ou si l'un est présent, un flash disque avec un système de fichiers journalisé mai remplacer rotation médias.Si une interface utilisateur est présent, mai il être un petit clavier et l'affichage à cristaux liquides.

Les systèmes embarqués résident dans des machines qui sont censées fonctionner en continu pendant des années sans erreurs.Par conséquent, le logiciel est généralement développé et testé plus de soin que de logiciels pour ordinateurs personnels.De nombreux systèmes embarqués éviter les pièces mécaniques mobiles tels que lecteurs de disques,
des commutateurs ou des boutons ne sont pas fiables, parce que ces par rapport à l'état solide tels que la mémoire Flash.

En outre, le système embarqué mai être hors de portée de l'homme (par un trou de forage de puits de pétrole,
se sont lancés dans l'espace, etc), de sorte que le système intégré doit être en mesure de redémarrer, même si lui-même catastrophique de corruption de données a eu lieu.Ceci est habituellement fait avec une partie électronique appelé un timer chien de garde qui réinitialise l'ordinateur si le logiciel réinitialise périodiquement l'horloge.
[modifier]

Conception de systèmes embarqués

L'électronique utilise habituellement soit un microprocesseur ou un microcontrôleur.Certains grands ou anciens systèmes utilisent des fins générales ou des mini-ordinateurs.
[modifier]

Interfaces utilisateur

Les interfaces utilisateurs pour les systèmes embarqués sont très variables et,
par conséquent, méritent quelques commentaires.

Interface designers au PARC, Apple, Boeing, HP a découvert le principe
qu'il faut réduire le nombre de types d'actions de l'utilisateur.Dans les systèmes embarqués de ce principe est souvent combiné avec un lecteur de diminuer les coûts.

Une interface standard, largement utilisé dans les systèmes embarqués, l'utilisation de deux boutons pour contrôler un système de menu, avec un seul bouton permet à l'utilisateur de faire défiler les éléments dans le menu et l'autre pour sélectionner un élément.

Les menus sont très populaires parce
qu'ils document eux-mêmes, et peuvent être sélectionnés avec les actions de l'utilisateur très simple.

Un autre truc est de réduire et de simplifier le type de sortie.Dessins parfois utiliser un voyant d'état pour chaque interface plug, condition ou de l'échec, de dire ce qui a échoué.Une variation est bon d'avoir deux barres de la lumière avec une impression de la matrice d'erreurs
qu'ils choisissent l'utilisateur peut coller sur les étiquettes pour la langue
qu'il parle.Par exemple,
la plupart des imprimantes utilisent de petits feux étiquetés avec bâton sur les étiquettes que l'on peut imprimer dans toutes les langues.Dans certains marchés,
ils sont livrés avec plusieurs jeux d'étiquettes, de sorte que les clients peuvent choisir la langue la plus confortable.

Une autre astuce est que les modes sont absolument clair sur l'écran
de l'utilisateur.Si une interface de modes, elles sont presque toujours réversible de manière évidente, ou d'inverser automatiquement.

Par exemple, Boeing interface standard
de test est un bouton et des lumières.Lorsque vous appuyez sur la touche, toutes les lumières s'allument.Lorsque vous relâchez le bouton, les feux de rester sur des échecs.Les étiquettes sont en anglais de base.

Les concepteurs utilisent des couleurs.Rouge signifie "danger" ou une erreur
s'est produite, entraînant l'ensemble du système à l'échec.Jaune signifie quelque chose peut-être tort.Vert signifie que le statut est OK ou bonnes.C'est intentionnellement comme un stop-lumière, parce que la plupart des gens comprennent cela.

La plupart des modèles pour organiser une exposition de changer immédiatement après une action de l'utilisateur.Si la machine va faire quelque chose, c'est généralement dans les 7 secondes, ou de donner des rapports d'activité.

Si un dessin ou modèle a besoin d'un écran,
de nombreux concepteurs utilisent texte.Il
est préférable parce que les utilisateurs ont été la lecture des signes des années.Une interface graphique est joli et peut tout faire, mais en général, ajoute un an à partir de la conception, l'approbation et la traduction des retards, et un ou deux programmeurs à un coût
du projet, sans ajouter de valeur.Souvent, un trop habile GUI confond en réalité les utilisateurs, car il peut utiliser les symboles inconnus.

Si une conception des besoins au point à des parties de la machine (comme dans les copieurs),
ils sont souvent étiquetés avec des numéros sur la machine, qui sont visibles avec les portes fermées.

Une interface réseau est juste un écran distant.Il se comporte comme
n'importe quelle autre interface utilisateur.

L'un des plus grands succès du petit écran est basé sur les interfaces des deux boutons de menu et une ligne de texte dans la langue maternelle
de l'utilisateur.Il
est utilisé dans des pagers, le prix moyen d'imprimantes, de réseau, et d'autres prix moyen des situations qui exigent des comportements des utilisateurs.

Le plus grand écran, un écran tactile ou un écran
de pointe boutons également de minimiser les types d'actions de l'utilisateur, et de contrôler plus facilement (s) des menus.L'avantage de ce système est que la signification des boutons peut changer avec l'écran, et la sélection peut être très proche de la nature du comportement du doigt ce qui
est désiré.

Lorsqu'il ya
du texte, le concepteur choisit une ou plusieurs langues.La langue par défaut est généralement le plus largement compris par le groupe cible d'utilisateurs.La plupart des concepteurs d'utiliser des jeux de caractères du groupe cible afin de mieux répondre à leurs besoins.

Le texte est traduit habituellement par des traducteurs professionnels, même si les locuteurs natifs sont sur le personnel.Marketing personnel doivent être en mesure de dire que les distributeurs étrangers sont des traductions professionnelles.Un fabricant étranger mai demander le plus haut volume de distribution à revoir et corriger les traductions dans leur langue maternelle, afin de contribuer à l'acceptation du produit par les vendeurs.

La plupart des autorités envisager un test de facilité d'utilisation plus importante que
n'importe quel nombre d'avis.Designers conseillons de tester l'interface utilisateur pour la facilité d'utilisation le plus tôt possible instantanée.A communément utilisées rapide, sale d'essai est de demander à une secrétaire de direction à utiliser les modèles en carton fait avec marqueurs, et manipulé par un ingénieur.Le résultat enregistré sur bande vidéo est susceptible d'être à la fois drôle et très instructif.Dans les bandes,
à chaque fois que l'ingénieur pourparlers, l'interface a échoué parce
qu'elle causerait un appel de service.

Dans de nombreuses organisations, une personne approuve l'interface utilisateur.Souvent, il
s'agit d'un client, le grand distributeur ou une personne directement responsable de la vente du système.
[modifier]

Plate-forme

Il existe différentes architectures de processeur embarqué utilisé dans la conception, tels que ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V,
etc M32R

Ceci contrairement à l'ordinateur de bureau du marché, qui au moment de l'écriture (2003) est limitée à quelques architectures concurrentes, principalement les Intel / AMD x86, et de l'Apple / Motorola / IBM PowerPC, utilisée dans l'Apple Macintosh.Dans les ordinateurs de bureau, que l'acceptation de Java se développe, le logiciel est en train de devenir moins tributaire d'un environnement d'exécution spécifique.

Standard PC/104 est un exemple typique de base pour les petits,
à faible volume intégrés et la conception de systèmes durcis.Ces souvent DOS, Linux, NetBSD, intégré ou d'un système d'exploitation temps réel tels que QNX ou Inferno.

Une configuration de très grand volume de systèmes embarqués est le système sur une puce, une application-specific integrated circuit, pour lequel le CPU a été acheté en tant que propriété intellectuelle pour ajouter à
la conception
de l'IC.Un projet commun est d'utiliser un champ-programmable gate array, et le programme avec toute la logique,
y compris le processeur.La plupart des FPGAs sont conçus à cet effet.
[modifier]

Outils

Comme type de programmeurs, concepteurs de systèmes embarqués, l'utilisation des compilateurs, des assembleurs, débogueurs et à développer des logiciels de systèmes embarqués.Cependant, ils utilisent aussi quelques outils qui ne sont pas familiers à la plupart des programmeurs.

Les outils logiciels peuvent provenir de plusieurs sources:

* Software entreprises qui se spécialisent dans le marché de l'embarqué
* Porté par le développement d'outils logiciels GNU (voir le compilateur croisé)
* Parfois,
les outils de développement pour un ordinateur personnel peut être utilisé si le processeur embarqué est un proche parent à un processeur PC

Les concepteurs de systèmes embarqués aussi utiliser quelques outils logiciels que rarement utilisées par les programmeurs typique.

* Un outil est un "in-circuit emulator" (CIE) ou, plus modernes, un débogueur intégré.Cet outil de débogage est la ruse utilisée pour développer code embarqué.Il remplace ou des bouchons dans le microprocesseur, et fournit des installations à la charge rapidement et de débogage de code expérimental dans le système.Un petit module fournit habituellement la spéciale électronique à brancher sur le système.Souvent, un ordinateur avec un logiciel spécial attache à la gousse de fournir à l'interface de débogage.
* Le linker est généralement assez exotique.Dans la plupart des entreprises de programmation, le linker est presque secondaire, et les valeurs par défaut ne sont jamais varié.En revanche, il
est commun pour un linker embarqués à avoir un complet, souvent complexe, langage de commande.Il ya souvent plusieurs types de mémoire, en particulier le code et les données situées dans chacun d'eux.Les données individuelles des structures mai être placé à des adresses du logiciel de donner un accès pratique à la mémoire mappé contrôle des registres.Embedded linkers ont souvent tout à fait exotique optimisation des installations pour réduire la taille
du code et de temps d'exécution.Par exemple, ils se déplacer sous-mai pour que les appels vers les plus petits peuvent utiliser subroutine appel et les instructions de saut.Ils ont souvent des fonctions de gestion des données de superpositions, de commutation et de la banque,
des techniques souvent utilisées pour forcer le CPU dans le bon marché des logiciels embarqués.
* Un autre outil est un programme utilitaire (souvent eux-mêmes) d'ajouter une somme de contrôle CRC ou à un programme, de sorte que le système embarqué peut vérifier les données du programme avant son exécution.
* Un programmeur intégré qui développe des logiciels pour le traitement des signaux numériques, a souvent un poste de travail comme les maths ou MathCad Mathematica de simuler les mathématiques.
* Moins courantes sont les programmes utilitaires pour transformer des fichiers de données en code,
alors on peut comprendre tout type de données dans un programme.
* Un peu de projets ont recours à des langages de programmation synchrone pour une fiabilité ou de traitement numérique du signal.

Certains langages de programmation offre un soutien spécifique pour les systèmes embarqués, la programmation.

* Pour le langage C, l'ISO / CEI TR 18037:2005 spécifie
o le nom des espaces d'adressage
o le nom de stockage des classes
o de base I / O du matériel traitant

[modifier]

Débogage

Le débogage est habituellement réalisée avec un circuit dans l'émulateur, ou un certain type de débogueur qui peuvent interrompre le microcontrôleur interne
du microcode.

Le microcode interrompre le débogueur permet de fonctionner dans le matériel dans lequel le processeur ne fonctionne.Le processeur
à base de débogueur peuvent être utilisés pour tester et déboguer les appareils électroniques de l'ordinateur du point de vue de la CPU.Cette fonctionnalité a été lancé sur le PDP-11.

Les développeurs devrait insister sur le débogage qui montre le langage de haut niveau, avec arrêt et seul le renforcement, parce que ces caractéristiques sont largement disponibles.Aussi,
les développeurs doivent écrire et simple des installations d'exploitation forestière pour déboguer des séquences d'événements en temps réel.

PC ou ordinateur principal programmeurs première rencontre ce genre de programmes sont souvent déroutés par la conception des priorités et des méthodes acceptables.Le mentorat,
le code-egoless commentaires et de programmation sont recommandés.

Comme la complexité des systèmes embarqués augmente, plus haut niveau des outils et des systèmes d'exploitation sont en train de migrer dans les machines où cela a du sens.Par exemple, les téléphones cellulaires,
les assistants numériques personnels et autres ordinateurs de consommateurs ont souvent besoin des logiciels qui sont achetés ou fournis par une personne autre que le fabricant de l'électronique.Dans ces systèmes, un environnement de programmation, tels que Linux, OSGi ou Embedded Java est nécessaire pour que le tiers fournisseur de logiciel peut vendre à un grand marché.

La plupart de ces milieux ouverts ont une conception de référence qui fonctionne sur un ordinateur personnel.Une grande partie du logiciel pour ces systèmes peuvent être développés sur un PC conventionnel.Cependant, le portage de l'environnement ouvert aux institutions spécialisées en électronique et le développement des pilotes de périphériques pour l'électronique sont généralement toujours la responsabilité d'un ingénieur logiciel embarqué classique.Dans certains cas, l'ingénieur travaille pour le fabricant de circuits intégrés, mais il reste encore quelque part une telle personne.
[modifier]

Système d'exploitation

Les systèmes embarqués
n'ont souvent pas de système d'exploitation, ou d'un système d'exploitation embarqué spécialisées (souvent un système d'exploitation temps réel), ou le programmeur est attribué à l'un de ces ports vers le nouveau système.
[modifier]

Start-up

Tous les systèmes embarqués ont démarrage code.Généralement, il désactive les interruptions, met en place de l'électronique,
des tests de l'ordinateur (RAM, CPU et logiciel), puis commence le code de l'application.Beaucoup de systèmes embarqués de récupérer à court terme par les pannes de redémarrer sans récentes auto-tests.Redémarrez fois dans le cadre d'un dixième de seconde sont communs.

De nombreux designers ont trouvé quelques LEDs utile d'indiquer des erreurs (elles contribuent de dépannage).Un projet commun est de faire tourner l'électronique sur l'ensemble des LED (s) à zéro (ce qui prouve que le pouvoir et les voyants de travail).Ensuite, le logiciel modifie le LED comme le Power-On Self Test exécute.Après cela, le logiciel utilise les LED (s) pour indiquer un fonctionnement normal ou d'erreurs.Cela sert à rassurer la plupart des techniciens,
des ingénieurs et des utilisateurs.Une exception intéressante est que l'énergie électrique sur les compteurs et autres objets sur la rue, les feux clignotant sont connues pour attirer l'attention et le vandalisme.
[modifier]

Built-In Self-Test

La plupart des systèmes embarqués ou avoir une certaine quantité de built-in self-test.Il existe plusieurs types de base:

1.Test de l'ordinateur: processeur, mémoire RAM et la mémoire programme.Il
s'agit souvent d'une fois au pouvoir en place.Dans les systèmes de sécurité, ils sont également exécuter périodiquement (au sein de l'intervalle de sécurité), ou dans le temps.
2.Tests de périphériques: Les apports de simuler et de lecture de retour ou de la mesure les résultats.Un nombre étonnant de la communication, de systèmes de contrôle analogique et peut avoir de ces essais, souvent très bon marché.
3.Tests de la puissance: En général, ces mesures chaque rail de l'alimentation, et de mai de vérifier l'entrée (pile ou secteur) ainsi.Les alimentations sont souvent très stressé, avec de faibles marges, et de les tester est donc précieuse.
4.Tests de communication: Ces vérifier la réception d'un message simple de connectés unités.L'Internet a, par exemple, le message ICMP "ping".
5.Tests de câblage: Ces habituellement un fil dans un dispositif de serpentine pins représentant des câbles qui doivent être joints.Synchrone des systèmes de communication, tels que le téléphone les médias, se servent souvent de "sync" tests à cet effet.Cable tests sont bon marché, et extrêmement utile lorsque l'unité a prises.
6.Rigging tests: Souvent, un système doit être corrigé quand il est installé.Rigging tests fournissent des indicateurs à la personne qui installe le système.
7.Consommables tests: Ces mesurer ce qui utilise un système en place, et de mettre en garde lorsque les quantités sont faibles.L'exemple le plus courant est la jauge de carburant d'une voiture.Le plus complexe des exemples mai être automatisée des systèmes d'analyse médicale qui maintiennent des stocks de réactifs chimiques.
8.Tests de fonctionnement: Ces choses qui mesure l'utilisateur soucieux de faire fonctionner le système.Notamment,
ils ont à exécuter lorsque le système est en fonctionnement.Cela comprend les instruments de navigation à bord des avions, une voiture
de la vitesse, et le disque dur s'allume.
9.Tests de sécurité: Ces lancer dans un "intervalle de sécurité», et d'assurer que le système est encore fiable.La sécurité est en général un intervalle de temps inférieur à un minimum de temps qui peut causer des dommages.

[modifier]

Fiabilité des régimes

Fiabilité a des définitions différentes en fonction des raisons pour lesquelles les gens veulent.Fait intéressant, il ya relativement peu de types de fiabilité et de systèmes de types similaires employer le même type built-in self-tests et des méthodes de récupération:

1.Le système est trop dangereux ou inaccessibles à la réparation.(Les systèmes spatiaux, les câbles sous-marins, des balises de navigation, les systèmes de puits et, curieusement, d'automobiles et de produits de masse) En règle générale, les essais sous-systèmes embarqués, et des commutateurs redondants de pièces de rechange en ligne, ou comporte "limp mode" qui offrent la fonction partielle .Souvent, produit en masse des équipements pour les consommateurs (comme les voitures, les ordinateurs ou les imprimantes) tombe dans cette catégorie parce que les réparations sont coûteuses et les réparateurs de loin, par rapport au coût initial de l'appareil.
2.Le système ne peut pas être un arrêt sécurisé.(Navigation aérienne, les systèmes de contrôle du réacteur, critique pour la sécurité des contrôles d'usine chimique,
le train de signaux,
des moteurs sur des avions) Comme ci-dessus, mais "limp mode" sont moins tolérable.Souvent, les sauvegardes sont sélectionnés par un opérateur.
3.Le système va perdre de grosses sommes d'argent lors de l'arrêt.(Téléphone commutateurs, les contrôles d'usine,
le pont et d'ascenseur, les transferts de fonds et de marché, l'automatisation des ventes et des services) Ces ont généralement un peu de "go / no-go tests, avec en ligne de pièces détachées ou de mode dégradé en utilisant d'autres modes de l'équipement et des procédures manuelles .
4.Le système ne peut pas être utilisé quand il est dangereux.De même, peut-être un système ne peut pas être utilisé quand il perd trop d'argent.(Équipement médical, l'équipement de l'aéronef à chaud de pièces de rechange, comme les moteurs, l'usine chimique de contrôle
et automatisation de bourses, systèmes de jeu) L'essai peut être tout à fait exotiques, mais la seule action est d'arrêter l'ensemble de l'unité et d'indiquer un échec.

[modifier]

Types d'architectures de logiciels embarqués

Il existe plusieurs types fondamentalement différents d'architectures logicielles en commun.
[modifier]

La boucle de contrôle

Dans cette conception, le logiciel est tout simplement une boucle.La boucle des appels de sous-routines.Chaque sous-gère une partie du matériel ou de logiciel.Interrupts généralement fixé drapeaux, ou de mettre à jour des compteurs qui sont lues par le reste du logiciel.

Une API simple et permet de désactiver les interruptions.Fait à droite, il gère les appels imbriqués dans les sous-routines imbriquées, et restaure l'état précédent d'interruption dans les régions permettent.C'est l'une des méthodes les plus simples de la création d'un exokernel.

Typiquement, il ya une sorte de routine dans la boucle pour gérer une liste de logiciels à temps,
au moyen d'un périodique en temps réel interrompre.Lors de l'expiration d'un timer, associée à une sous-routine est exécutée, ou d'un drapeau est réglé.

Tout événement prévu du matériel doit être sauvegardé avec un logiciel de minuterie.Hardware événements ne parviennent pas une fois dans environ un billion de fois.C'est à peu près une fois par an avec du matériel moderne.Avec un million de dispositifs de série, en laissant de côté d'un logiciel à rebours est une entreprise en cas de catastrophe.

Parfois, un ensemble de logiciels de sécurité timers mai être gérés par test logiciel qui réinitialise périodiquement un logiciel de surveillance mis en oeuvre dans le matériel.Si le logiciel à côté d'un événement, la sécurité-timer logiciel attrape.Si le logiciel de sécurité ne parvient pas
à temps, le chien de garde, matériel de réinitialiser l'unité.

État machines mai être mis en œuvre avec un pointeur de fonction par l'état-machine (en C , C ou de réunion, de toute façon).Un changement de l'État conserve une fonction différente dans le pointeur.Le pointeur de fonction est exécutée à chaque fois que la boucle s'exécute.

Bon nombre de concepteurs de recommander la lecture de chaque appareil une fois par IO boucle, et de stocker le résultat si la logique des actes sur des valeurs.

Bon nombre de concepteurs préfèrent pour la conception de leurs machines afin de vérifier l'état que d'un ou deux choses par l'Etat.Habituellement, il
s'agit d'un événement matériel, logiciel et un minuteur.

Designers recommander que des machines à états hiérarchiques doivent exécuter le plus bas niveau de l'État avant de machines le plus élevé, de manière plus fonctionner avec des informations exactes.

Fonctions complexes comme le contrôle à combustion interne sont souvent traités avec des tableaux multi-dimensionnels.Au lieu de calculs complexes, le code cherche les valeurs.Le logiciel peut interpoler entre les entrées, pour garder les tableaux de petits et bon marché.

Dans le plus petit des microcontrôleurs (notamment la 8051, qui a une pile de 128 octets) une boucle de contrôle permet une bonne utilisation de liens de données allouée statiquement overlays pour les variables locales.Dans ce système,
les variables les plus proches de feuilles d'un sous-arbre d'appel plus élevés adresses mémoire.Quand commence une nouvelle agence,
de ses variables peuvent être réaffectés dans l'espace déserté par la branche précédente.

Une des principales faiblesses d'une simple boucle de contrôle est
qu'elle ne garantit pas un temps pour répondre à un événement matériel.

Attention codage peuvent facilement
s'assurer que rien ne désactive les interruptions pour longtemps.Ainsi, le code d'interruption peut tourner à horaires très précis.

Une autre grande faiblesse d'une boucle de contrôle est
qu'il peut devenir complexe à ajouter de nouvelles fonctionnalités.Algorithmes qui prennent beaucoup de temps à courir doit être soigneusement ventilées seulement un petit morceau se fait à chaque fois par le biais de la boucle principale.

Ce système est
la force
de sa simplicité, et sur de petits morceaux de logiciels, la boucle est tellement rapide que personne ne se soucie que ce ne sont pas prévisibles.

Un autre avantage est que ce système garantit que le logiciel fonctionnera.Il
n'y a pas de système d'exploitation de mystérieux à l'origine de mauvais comportement.
[modifier]

Nonpreemptive multitâche

Un système multitâche nonpreemptive est très similaire à ce qui précède, sauf que la boucle est cachée dans un API.On définit une série de tâches, et chaque tâche possède son propre sous-pile.Ensuite, quand une tâche est inactif, il appelle une routine d'inactivité (généralement appelée "pause", "attendre", "rendement", ou etc.)

Une architecture avec des propriétés semblables,
c'est d'avoir une file d'attente d'événement, et ont une boucle qui supprime les événements et les appels sur la base d'un sous-domaine dans la file d'attente de l'entrée.

Les avantages et les inconvénients sont très similaires à la boucle de contrôle, sauf que l'ajout de nouveaux logiciels est plus facile.On écrit tout simplement une nouvelle tâche, ou ajoute à la queue-interprète.
[modifier]

Preemptive timers

Prenez
n'importe lequel de ces systèmes, mais ajouter un système de minuterie qui fonctionne à partir d'un sous-timer interrupt.Cela ajoute de nouvelles fonctionnalités totalement au système.Pour la première fois, le compte à rebours des routines peut se produire à la garantie d'un temps.

Aussi, pour la première fois, le code peut marcher sur ses propres structures de données imprévues.La minuterie routines doivent être traités avec le même soin que d'interrompre la routine (s).
[modifier]

Preemptive tâchesTake the above nonpreemptive task system, and run it from a preemptive timer or other interrupts.

Suddenly the system is quite different. Any piece of task code can damage the data of another task; they must be precisely separated. Access to shared data must be controlled by some synchronization strategy, such as message queues, semaphores or a non-blocking synchronization scheme.

Often, at this stage, the developing organization buys a real-time operating system. This can be a wise decision if the organization lacks people with the skills to write one, or if the port of the operating system to the hardware will be used in several products. It usually adds six to eight weeks to the schedule, and forever after programmers can blame delays on it.
[edit]

Microkernels and Exokernels

These try to organize the system in a way that's more configurable than a big kernel, while providing similar features.

A microkernel is a logical step up from a real-time OS. The usual arrangement is that the operating system kernel allocates memory and switches the CPU to different threads of execution. User mode processes implement major functions such as file systems, network interfaces, etc.

Microkernels were first tried back in the 1950s, and abandoned in favor of monolithic (MULTICS and UNIX style) kernels because the computers switched tasks and transmitted data between the tasks too slowly. In general, microkernels succeed when the task switching and intertask communication is fast, and fail when they are slow.

Exokernels communicate efficiently by normal subroutine calls. The hardware, and all the software in the system are available to, and extensible by application programmers. A resource kernel (which may be part of the library) allocates or multiplexes access to CPU time, memory and other resources. Big-kernel features such as multitasking, networking and file systems are provided by a library of code. The library may be dynamically linked, extensible, and shared. Different applications can even use different libraries, but all resources come from the resource kernel.
[edit]

Virtual machines

Some avionic systems use several merchant computers. Then, further, each of these computers simulate several copies of themselves. Critical programs run on several computers, and vote.

The advantage of a simulated environment is that if one computer fails, the different instances of the software can be migrated to software partitions in working computers without changing the number of votes.

Generally the virtualization software runs programs in the computer's user mode. It traps and simulates hardware access, and instructions that are not executable in the user mode.
[edit]

Checkpointed calculations

Another high-availability scheme has two computers that execute for a bit, then exchange notes about their calculations up to that point. If the one computer's calculations are nuts, it is shut down.
[edit]

Office-style (big-kernel) operating systems

These are popular for embedded projects that have no systems budget. In the opinion of at least one author of this article, they are usually a mistake. Here's the logic:

* Operating systems are specially-packaged libraries of reusable code. If the code does something useful, the designer saves time and money. If not, it's worthless.
* Operating systems for business systems lack interfaces to embedded hardware. For example, if one uses Linux to write a motor controller or telephone switch, most of the real control operations end up as numbered functions in an IOCTL-call. Meanwhile, the normal read, write, and fseek, interface is purposeless. So the operating system actually interferes with development.
* Most embedded systems perform no office work, so most code of office operating systems is wasted. For example, most embedded systems never use a file system or screen, so file system and GUI logic is wasted. Unused code is just a reliability liability.
* Office style operating systems protect the hardware from user programs. That is, they profoundly interfere with embedded systems development.
* Operating systems must invariably be ported to an embedded system. That is, the hardware driver code must always be written anyway. This is the most difficult part of the operating system, so little is saved by using one.
* The genuinely useful, portable features of operating systems are small pieces of code. For example, a basic TCP/IP interface is about 3,000 lines of C code. Another example is that a simple file system is about the same size. If a design needs these, they can be had for less than 10% of the typical embedded system's development budget, without royalty, just by writing them. And, if the needed code is sufficiently generic, the back of embedded systems magazines typically have vendors selling royalty-free C implementations.

Nevertheless many engineers disagree. Embedded Linux is increasing in popularity, especially on the more powerful embedded devices such as Wireless Routers and GPS Navigation Systems. Here are some of the reasons:

* Ports to common embedded chip sets are available.
* They permit re-use of publicly available code for Device Drivers, Web Servers, Firewalls, and other code.
* Development systems can start out with broad feature-sets, and then the distribution can be configured to exclude unneeded functionality, and save the expense of the memory that it would consume.
* Many engineers believe that running application code in user mode is more reliable, easier to debug and that therefore the development process is easier and the code more portable.
* Many embedded systems lack the tight real time requirements of a control system. A system such as Embedded Linux has fast enough response for many applications.
* Features requiring faster response than can be guaranteed can often be placed in hardware.
* Many RTOS systems have a per-unit cost. When used on a product that is or will be come a commodity, that cost is significant.

[edit]

Exotic custom operating systems

Some systems require safe, timely, reliable or efficient behavior unobtainable with the above architectures. There are well-known tricks to construct these systems:

* Hire a real system programmer. They cost a little more, but can save years of debugging, and the associated loss of revenue.
* RMA (rate monotonic analysis), can be used to find whether a set of tasks can run under a defined hardware system. In its simplest form, the designer assures that the quickest-finishing tasks have the highest priorities, and that on average, the CPU has at least 30% of its time free.
* Harmonic tasks optimize CPU efficiency. Basically, designers assure that everything runs from a heartbeat timer. It's hard to do this with a real-time operating system, because these usually switch tasks when they wait for an I/O device.
* Systems with exactly two levels of priority (usually running, and interrupts-disabled) cannot have Priority inversion problems in which a higher priority task waits for a lower priority task to release a semaphore or other resource.
* Systems with monitors can't have deadlocks. A monitor locks a region of code from interrupts or other preemption. If the monitor is only applied to small, fast pieces of code, this can work well. If the monitor API can be proven to run to completion in all cases, (say, if it merely disables interrupts) then no hangs are possible.

This means that systems that use dual priority and monitors are safe and reliable because they lack both deadlocks and priority inversion. If the monitors run to completion, they will never hang. If they use harmonic tasks, they can even be fairly efficient. However, RMA can't characterize these systems, and levels of priority had better not exist anywhere, including in the operating system and hardware.
[edit] Voir aussiWikibooks
Wikibooks Wikiversity has more about this subject:
Embedded System Engineering
Wikibooks
Wikibooks has more about this subject:
Embedded Systems

* Real-time
* Real-time operating system
* Synchronous programming language
* Microprocessor
* Embedded System Design in an FPGA
* Software engineering
* List of software engineering topics
* Firmware
* Information appliance
* Programming languages for embedded system
o Ada
o C
o C with careful use of language features
o Embedded C
o Forth
o Java
* Operating Systems for embedded system
o eCos
o Embedded Linux
o Embedded Debian
o embOS (Segger)
o FreeRTOS
o JavaOS
o LynxOS
o Nucleus RTOS
o OSGi
o pSOS
o QNX
o Windows CE
o VxWorks
o T2 SDE
* Ubiquitous computing

[edit] Liens externes* How a real time operating system works
* Embedded Systems Portal
* Windows Embedded Developer Center
* Embedded systems and VLIW processors
* Embedded C Homepage
* QNX Homepage
* LynuxWorks embedded system home page
* Embedded Systems Discussion Groups, Books, Jobs, and More
* Embedded Software Design
* Universities that have Embedded Systems Research groups
* Embedded Systems Institute
* Embedded Systems Programming
* The EE Compendium - Electronic Engineering and Embedded Systems Programming
* DeviceTools - Tools and silicon for embedded device developers
* Embedian
* The Magazine of Record for the Embedded Computing Industry
* Embedded White Papers, Downloads, Companies, News, Articles
* Troubleshooting Embedded Systems - An overview of board bring-up, manufacturing and servicing issues.

Added after 30 seconds:An embedded system is a special-purpose system in which the computer is completely encapsulated by the device it controls. Unlike a general-purpose computer, such as a personal computer, an embedded system performs pre-defined tasks, usually with very specific requirements. Since the system is dedicated to a specific task, design engineers can optimize it, reducing the size and cost of the product. Embedded systems are often mass-produced, so the cost savings may be multipled by millions of items.

The core of any embedded system is formed by one or several microprocessors or microcontrollers, programmed to perform a small number of tasks. In contrast to a general purpose computer which can run any software application the user chooses, the software on an embedded system is semi-permanent; so it is often called "firmware". Sommaire[hide]

* 1 Examples of embedded systems
* 2 History
* 3 Characteristics
* 4 Design of embedded systems
o 4.1 User interfaces
o 4.2 Platform
o 4.3 Tools
o 4.4 Debugging
o 4.5 Operating system
o 4.6 Start-up
4.6.1 Built-In Self-Test
o 4.7 Reliability regimes
* 5 Types of embedded software architectures
o 5.1 The control loop
o 5.2 Nonpreemptive multitasking
o 5.3 Preemptive timers
o 5.4 Preemptive tasks
o 5.5 Microkernels and Exokernels
o 5.6 Virtual machines
o 5.7 Checkpointed calculations
o 5.8 Office-style (big-kernel) operating systems
o 5.9 Exotic custom operating systems
* 6 See also
* 7 External links

[edit]

Examples of embedded systems

* automatic teller machines (ATMs)
* avionics, such as inertial guidance systems, flight control hardware/software and other integrated systems in aircraft and missiles
* cellular telephones and telephone switches
* computer network equipment, including routers, timeservers and firewalls
* computer printers
* copiers
* disk drives (floppy disk drives and hard disk drives)
* engine controllers and antilock brake controllers for automobiles
* home automation products, like thermostats, air conditioners, sprinklers, and security monitoring systems
* handheld calculators
* household appliances, including microwave ovens, washing machines, television sets, DVD players/recorders
* medical equipment
* measurement equipment such as digital storage oscilloscopes, logic analyzers, and spectrum analyzers
* multifunction wristwatches
* multimedia appliances: Internet radio receivers, TV set top boxes, digital satellite receivers
* Multifunctional printers (MFPs)
* personal digital assistants (PDAs), that is, small handheld computers with PIMs and other applications
* mobile phones with additional capabilities, for example, mobile digital assistants with cellphone and PDA and Java (MIDP)
* programmable logic controllers (PLCs) for industrial automation and monitoring
* stationary videogame consoles and handheld game consoles
* wearable computer

[edit] HistoireThe Apollo Guidance Computer, the first recognizably modern embedded system.source: The Computer History Museum
Enlarge
The Apollo Guidance Computer, the first recognizably modern embedded system.
source: The Computer History Museum

The first recognizably modern embedded system was the Apollo Guidance Computer, developed by Charles Stark Draper at the MIT Instrumentation Laboratory. Each flight to the moon had two. They ran the inertial guidance systems of both the command module and LEM.

At the project's inception, the Apollo guidance computer was considered the riskiest item in the Apollo project. The use of the then new monolithic integrated circuits, to reduce the size and weight, increased this risk. The first mass-produced embedded system was the Autonetics D-17 guidance computer for the Minuteman missile, released in 1961. It was built from discrete transistor logic and had a hard disk for main memory. When the Minuteman II went into production in 1966, the D-17 was replaced with a new computer that was the first high-volume use of integrated circuits. This program alone reduced prices on quad nand gate ICs from $1000/each to $3/each, permitting their use in commercial products.

The crucial design features of the Minuteman computer were that its guidance algorithm could be reprogrammed later in the program, to make the missile more accurate, and the computer could also test the missile, saving cable and connector weight.

Since these early applications in the 1960s, where cost was no object, embedded systems have come down in price. There has also been an enormous rise in processing power and functionality. This trend supports Moore's Law.
The Intel 4004, the first microprocessor
Enlarge
The Intel 4004, the first microprocessor

The first microprocessor was the Intel 4004, which found its way into calculators and other small systems. However, it still required external memory chips and other external support logic. More powerful microprocessors, such as the Intel 8080 were developed for military projects, but also sold for other uses.

By the end of the 1970s, 8-bit microprocessors were the norm, but usually needed external memory chips, and logic for decoding and input/output. However, prices rapidly fell and more applications adopted small embedded systems in place of (then more common) custom logic designs. Some of the more visible applications were in instrumentation and expensive devices.
A PIC microcontroller
Enlarge
A PIC microcontroller

By the mid-1980s, most of the previously external system components had been integrated into the same chip as the processor. The result was a dramatic reduction in the size and cost of embedded systems. Such integrated circuits were called microcontrollers rather than microprocessors, and widespread use of embedded systems became feasible.

As the cost of a microcontroller fell below an hour's wage for an engineer, there was an explosion in both the number of embedded systems, and in the number of parts supplied by different manufacturers for use in embedded systems. For example, many new special function ICs started to come with a serial programming interface rather than the more traditional parallel ones, for interfacing to a microcontroller with fewer interconnections. The I2C bus also appeared at this time.

As the cost of a microcontroller fell below $1, it became feasible to replace expensive analog components such as potentiometers and variable capacitors with digital electronics controlled by a small microcontroller.

By the end of the 80s, embedded systems were the norm rather than the exception for almost all electronics devices, a trend which has continued since.
[edit]

Characteristics

Embedded systems are computer systems in the widest sense. They include all computers other than those specifically intended as general-purpose computers. Examples of embedded systems range from portable music players to real-time controls for subsystems in the space shuttle.

Most commercial embedded systems are designed to do some task at low cost. Most, but not all have real-time system constraints that must be met. They may need to be very fast for some functions, while most other functions will probably not have strict timing requirements. These systems meet their real-time constraints with a combination of special purpose hardware and software tailored to the system requirements.

It is difficult to characterize embedded systems by speed or cost, but for high volume systems, minimizing cost is usually the primary design consideration. Often embedded systems have low performance requirements. This allows the system hardware to be simplified to reduce costs. Engineers typically select hardware that is just good enough to implement the necessary functions.

For example, a digital set-top box for satellite television has to process tens of megabits of continuous-data per second, but most of the processing is done by custom integrated circuits that parse, direct, and decode the multi-channel digital video. The embedded CPU "sets up" this process, and displays menu graphics, etc. for the set-top's look and feel. As embedded processors become faster and cheaper, they can take over more of the high-speed data processing.

For low-volume embedded systems, personal computers can often be used, by limiting the programs or by replacing the operating system with a real-time operating system. In this case special purpose hardware may be replaced by one or more high performance CPUs. Still, some embedded systems may require high performance CPUs, special hardware, and large memories to accomplish a required task.

In high volume embedded systems such as portable music players or cell phones, reducing cost becomes a major concern. These systems will often have just a few integrated circuits, a highly integrated CPU that controls all other functions and a single memory chip. In these designs each component is selected and designed to minimize overall system cost.

The software written for many embedded systems, especially those without a disk drive is sometimes called firmware. Firmware is software that is embedded in hardware devices, eg in one or more ROM or Flash memory IC chips.

Programs on an embedded system often run with limited hardware resources: often there is no disk drive, operating system, keyboard or screen. The software may not have anything remotely like a file system, or if one is present, a flash drive with a journaling file system may replace rotating media. If a user interface is present, it may be a small keypad and liquid crystal display.

Embedded systems reside in machines that are expected to run continuously for years without errors. Therefore the software is usually developed and tested more carefully than Software for Personal computers. Many embedded systems avoid mechanical moving parts such as Disk drives, switches or buttons because these are unreliable compared to solid-state parts such as Flash memory.

In addition, the embedded system may be outside the reach of humans (down an oil well borehole, launched into outer space, etc.), so the embedded system must be able to restart itself even if catastrophic data corruption has taken place. This is usually accomplished with a standard electronic part called a watchdog timer that resets the computer unless the software periodically resets the timer.
[edit]

Design of embedded systems

The electronics usually uses either a microprocessor or a microcontroller. Some large or old systems use general-purpose mainframe computers or minicomputers.
[edit]

User interfaces

User interfaces for embedded systems vary widely, and thus deserve some special comment.

Interface designers at PARC, Apple Computer, Boeing and HP discovered the principle that one should minimize the number of types of user actions. In embedded systems this principle is often combined with a drive to lower costs.

One standard interface, widely used in embedded systems, uses two buttons to control a menu system, with one button allowing the user to scroll through items on the menu and the other to select an item.

Menus are broadly popular because they document themselves, and can be selected with very simple user actions.

Another basic trick is to minimize and simplify the type of output. Designs sometimes use a status light for each interface plug, or failure condition, to tell what failed. A cheap variation is to have two light bars with a printed matrix of errors that they select- the user can glue on the labels for the language that he speaks. For example, most small computer printers use lights labelled with stick-on labels that can be printed in any language. In some markets, these are delivered with several sets of labels, so customers can pick the most comfortable language.

Another common trick is that modes are made absolutely clear on the user's display. If an interface has modes, they are almost always reversible in an obvious way, or reverse themselves automatically.

For example, Boeing's standard test interface is a button and some lights. When you press the button, all the lights turn on. When you release the button, the lights with failures stay on. The labels are in Basic English.

Designers use colors. Red means "danger" or that some error has occurred, causing the entire system to fail. Yellow means something might be wrong. Green means the status is OK or good. This is intentionally like a stop-light, because most people understand those.

Most designs arrange for a display to change immediately after a user action. If the machine is going to do anything, it usually starts within 7 seconds, or gives progress reports.

If a design needs a screen, many designers use plain text. It's preferred because users have been reading signs for years. A GUI is pretty and can do anything, but typically adds a year from design, approval and translator delays, and one or two programmers to a project's cost, without adding any value. Often, an overly-clever GUI actually confuses users, because it can use unfamiliar symbols.

If a design needs to point to parts of the machine (as in copiers), these are often labelled with numbers on the actual machine, that are visible with the doors closed.

A network interface is just a remote screen. It behaves much like any other user interface.

One of the most successful small screen-based interfaces is the two menu buttons and a line of text in the user's native language. It's used in pagers, medium-priced printers, network switches, and other medium-priced situations that require complex behavior from users.

On larger screens, a touch-screen or screen-edge buttons also minimize the types of user actions, and easily control(s) menus. The advantage of this system is that the meaning of the buttons can change with the screen, and selection can be very close to the natural behavior of pointing at what's desired.

When there's text, the designer chooses one or more languages. The default language is usually the one most widely understood by the targeted group of users. Most designers try to use native character sets of the target group to better meet their needs.

Text is usually translated by professional translator
 

Welcome to EDABoard.com

Sponsor

Back
Top