beginnen es

N

Niro

Guest
Kunt u vertellen hoe tos taart mijn ingebedde systemen reis

boeken
software
hardware

 
probeer de zoek-optie en ook zie vorige onderwerpen ... u'll vinden ton stuff
Hier zijn een aantal die u kunnen helpen:

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

ftopic173482.html

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

ftopic158568.html

ftopic148649.html

 
Een embedded systeem is een special-purpose systeem waarbij de computer is volledig ingekapseld door het apparaat dat de controles.In tegenstelling tot een algemeen gebruik computer, zoals een personal computer, een ingebouwd systeem voert vooraf gedefinieerde taken, meestal met zeer specifieke vereisten.Omdat het systeem is gewijd aan een specifieke taak, design engineers kunnen optimaliseren,
het terugdringen van de omvang en de kosten van het product.Embedded systemen zijn vaak massa-geproduceerde, zodat de kostenbesparingen kunnen worden vermenigvuldigd door miljoenen items.

De kern van een embedded systeem wordt gevormd door een of meerdere microprocessoren of microcontrollers, geprogrammeerd voor het uitvoeren van een klein aantal taken.In tegenstelling tot een algemeen doel computer die kunnen rijden, een software applicatie de gebruiker ook kiest, de software op een embedded systeem is een semi-permanent, dus het is vaak "firmware".
Inhoud
[hide]

* 1 Voorbeelden van embedded systemen
* 2 Geschiedenis
* 3 Kenmerken
* 4 Ontwerpen van embedded systemen
o 4,1 Gebruikersinterfaces
o 4,2 Platform
o 4.3 Tools
o 4.4 Debuggen
o 4.5 Besturingssysteem
o 4,6-startersregeling
4.6.1 built-in Self-Test
o 4,7 Betrouwbaarheid regimes
* 5 Soorten van embedded software-architecturen
o 5.1 De controle lus
o 5,2 Nonpreemptive multitasking
o 5,3 Preemptive timers
o 5,4 Preemptive taken
o 5,5 Microkernels en Exokernels
o 5,6 Virtuele machines
o 5,7 Checkpointed berekeningen
o 5-8 Office-stijl (groot-kernel)
besturingssystemeno 5.9 Exotische aangepaste besturingssystemen
* 6 Zie ook
* 7 Externe links

[edit]

Voorbeelden van embedded systemen

* Automatische teller machines (geldautomaten)
* Luchtvaartelektronica, zoals inertiële geleidingssystemen, vluchtregelsystemen hardware / software en andere geïntegreerde systemen in vliegtuigen en raketten
* Mobiele telefoons en telefoon-switches
* Computernetwerk apparatuur, waaronder routers en firewalls timeservers
* Printers
* Kopieerapparaten
* Schijfstations (floppy drives en harde schijven)
* Motor controllers en Antilock Brake controllers voor auto's
* Domotica producten, zoals thermostaten, airconditioners, sprinklers en veiligheid monitoringsystemen
* Handheld rekenmachines
* Huishoudelijke apparaten, zoals magnetrons, wasmachines, televisies, dvd spelers / recorders
* Medische apparatuur
* Meetapparatuur zoals digitale opslag oscilloscopen, logische analyzers, en spectrum analyzers
* Multifunctietoets Horloges
* Multimedia-apparaten: Internet radio-ontvangers, TV set-top boxes, digitale satelliet-ontvangers
* Multifunctionele printers (MFP)
* Personal digital assistants (pda's), dat wil zeggen, kleine draagbare computers met PIMs en andere toepassingen
* Mobiele telefoons met extra mogelijkheden, bijvoorbeeld, mobiele digitale assistenten met mobiel en PDA en Java (MIDP)
* Programmeerbare logische controllers (PLC's) voor de industriële automatisering en monitoring
* Stationaire videogame consoles en handheld game consoles
* Draagbare computer

[edit]

Geschiedenis
Het Apollo Guidance Computer, de eerste duidelijke moderne embedded system.source: The Computer History Museum
Enlarge
Het Apollo Guidance Computer, de eerste duidelijke moderne embedded systeem.
bron: The Computer History Museum

De eerste duidelijke moderne embedded systeem werd de Apollo Guidance Computer, ontwikkeld door Charles Stark Draper op het MIT Instrumentation Laboratory.Elke vlucht naar de maan had twee.Ze liep de inertiële begeleiding van zowel de commando module en LEM.

Aan het project begin, de Apollo begeleiding computer werd beschouwd als de meest risicovolle item in het Apollo-project.Het gebruik van de toenmalige nieuwe monolithische geïntegreerde schakelingen, om de grootte en het gewicht, verhoogde dit risico.De eerste in massa geproduceerde embedded systeem was de Autonetics D-17 leidraad computer voor de Minuteman raket, uitgegeven in 1961.Het is gebouwd uit discrete transistor logica en had een harde schijf voor de belangrijkste geheugen.Wanneer de Minuteman II ging in productie in 1966, de D-17 werd vervangen door een nieuwe computer, dat was de eerste high-volume het gebruik van geïntegreerde schakelingen.Dit programma alleen verminderde prijzen op quad NAND-poort ICs vanaf $ 1000/each tot $ 3/each, waardoor hun gebruik in commerciële producten.

De cruciale ontwerpen kenmerken van de Minuteman computer waren dat haar begeleiding algoritme kan worden geherprogrammeerd later in het programma, om de raket nauwkeuriger, en de computer kan ook testen van de raket, het opslaan van kabel en connector gewicht.

Aangezien deze vroege toepassingen in de jaren 1960, waar de kosten is geen object, embedded systemen zijn gekomen in de prijs.Er is ook een enorme stijging van de verwerkingskracht en functionaliteit.Deze ontwikkeling ondersteunt
de wet
van Moore.
De Intel 4004, de eerste microprocessor
Enlarge
De Intel 4004, de eerste microprocessor

De eerste microprocessor was de Intel 4004, die zijn weg gevonden naar rekenmachines en andere kleine systemen.Toch nog extern geheugen chips en andere externe ondersteuning logica.Meer krachtige microprocessoren, zoals de Intel 8080 zijn ontwikkeld voor militaire projecten, maar ook verkocht voor andere doeleinden worden gebruikt.

Tegen het einde van de jaren 1970, 8-bit microprocessoren waren de norm, maar meestal nodig extern geheugen chips, en de logica voor het decoderen en input / output.Echter,
de prijzen snel gedaald en meer toepassingen heeft kleine embedded systemen in plaats van de (toen nog meer algemeen) aangepaste logica ontwerpen.Sommige van de meer zichtbare toepassingen in de instrumentatie en dure apparaten.
A PIC-microcontroller
Enlarge
A PIC-microcontroller

Tegen het midden van de jaren 1980,
de meeste van de eerder externe systeem componenten werden geïntegreerd in dezelfde chip als de processor.Het resultaat was een dramatische vermindering van de omvang en kosten van embedded systemen.Dergelijke geïntegreerde schakelingen werden microcontrollers in plaats van microprocessoren, en wijdverbreide gebruik van embedded systemen is haalbaar.

Aangezien de kosten van een microcontroller, daalde tot minder dan een uur loon voor een ingenieur, was er een explosie in het aantal van embedded systemen, en van het aantal onderdelen die door verschillende fabrikanten voor gebruik in embedded systemen.Bijvoorbeeld, een groot aantal nieuwe speciale functie ICs begon te komen met een seriele programmeer-interface in plaats van de meer traditionele parallelle zijn voor koppeling aan een microcontroller met minder koppelleidingen.De I2C-bus ook te zien op dit moment.

Aangezien de kosten van een microcontroller, daalde tot minder dan $ 1, werd het mogelijk ter vervanging van duurdere analoge componenten zoals potentiometers en variabele condensatoren met digitale elektronica wordt gecontroleerd door een kleine microcontroller.

Tegen het einde van de jaren'80, ingebedde systemen waren de norm in plaats van de uitzondering voor bijna alle elektronica apparaten, een trend die sedert.
[edit]

Kenmerken

Embedded systemen zijn computer systemen in de ruimste zin van het woord.Zij omvatten alle computers die niet specifiek bedoeld als algemene doeleinden computers.Voorbeelden van embedded systemen variëren van draagbare muziekspelers die real-time controle van subsystemen in de Space Shuttle.

De meeste commerciële embedded systemen zijn ontworpen om te doen wat taak tegen lage kosten.De meeste, maar niet allemaal in real-time systeem eisen waaraan moet worden voldaan.Ze moet heel snel voor bepaalde functies, terwijl de meeste andere functies zullen waarschijnlijk niet hebben strikte timing eisen.Deze systemen voldoen aan de real-time beperkingen met een combinatie van special purpose hardware en software op maat aan de systeemvereisten.

Het is moeilijk te karakteriseren embedded systemen door de snelheid of de kosten, maar voor een groot volume systemen, het minimaliseren van de kosten is meestal de primaire ontwerp overweging.Ingebedde systemen hebben vaak een lage prestatie-eisen.Dit maakt het systeem hardware worden vereenvoudigd om de kosten te verlagen.Ingenieurs doorgaans selecteer hardware die is net goed genoeg voor de uitvoering van de noodzakelijke functies.

Bijvoorbeeld, een digitale set-top box voor satelliet televisie heeft voor het verwerken van tientallen megabits van continu-data per seconde, maar de meeste van de verwerking wordt gedaan door aangepaste geïntegreerde schakelingen die parse, directe en decoderen de multi-kanaals digitale video.De embedded CPU "stelt" dit proces, en het menu wordt weergegeven afbeeldingen, enz. voor de set-top
van de look en feel.Als embedded processoren worden sneller en goedkoper zijn, kunnen zij een groter deel van de high-speed data verwerking.

Voor laag-volume embedded systemen, personal computers kunnen vaak worden gebruikt, door de beperking van de programma's of door vervanging van het besturingssysteem met een real-time operating systeem.In dit geval special purpose hardware kan worden vervangen door een of meer hoge prestaties CPUs.Nog een aantal embedded systemen kunnen eisen high performance CPU's, speciale hardware, en grote herinneringen om een vereiste taak.

In hoog volume embedded systemen, zoals draagbare muziekspelers of mobiele telefoons,
het terugdringen van de kosten wordt een grote zorg.Deze systemen hebben vaak maar een paar geïntegreerde schakelingen, een sterk geïntegreerde CPU die alle andere functies en een geheugenchip.In deze modellen elk onderdeel is geselecteerd en ontworpen om de totale kosten systeem.

De software geschreven voor vele embedded systemen, vooral die zonder een schijf is soms firmware.Firmware is software die is ingebed in hardware-apparaten, bijvoorbeeld in een of meer ROM of Flash geheugen IC chips.

Programma's op een embedded systeem vaak met beperkte middelen hardware: vaak is er geen schijf, besturingssysteem, toetsenbord of scherm.De software kan niet alles op afstand als een bestandssysteem, of als er een aanwezig is, een flash-drive met een journaling bestandssysteem kunnen in plaats van roterende media.Als een gebruiker interface aanwezig is, maar het kan ook een klein toetsenbord en LCD-scherm.

Ingebedde systemen wonen in machines die naar verwachting een ononderbroken jaren zonder fouten.Daarom is de software wordt meestal ontwikkeld en getest zorgvuldiger dan software voor personal computers.Veel embedded systemen vermijden mechanisch bewegende onderdelen zoals schijfstations, schakelaars en knoppen omdat deze onbetrouwbaar zijn vergeleken met solid-state onderdelen zoals flash-geheugen.

Bovendien is de embedded systeem kan worden buiten het bereik van de mens (in een oliebron boorgat, gelanceerd in de ruimte, enz.), zodat de embedded systeem moet kunnen opnieuw zelf ook al katastrofisch gegevens van corruptie heeft plaatsgevonden.Dit wordt meestal uitgevoerd met een standaard elektronische gedeelte genaamd een watchdog timer die reset de computer, tenzij de software op gezette tijden opnieuw de timer.
[edit]

Ontwerpen van embedded systemen

De elektronica meestal gebruikt ofwel een microprocessor of een microcontroller.Sommige grote of oude systemen gebruiken voor algemene doeleinden mainframe computers of minicomputer.
[edit]

User interfaces

User interfaces voor embedded systemen lopen sterk uiteen, en dus verdienen sommige speciale commentaar.

Interface ontwerpers bij PARC, Apple Computer, Boeing en HP ontdekte het principe dat men moet minimaliseren van het aantal soorten gebruikers acties.In embedded systemen van dit beginsel wordt vaak gecombineerd met een streven naar lagere kosten.

Een standaard interface, veel gebruikt in embedded systemen,
maakt gebruik van twee knoppen voor de bediening van een menu-systeem, met een knop waarmee de gebruiker om te bladeren door items in het menu en de andere om een item te selecteren.

Menu's zijn grotendeels populair omdat ze document zelf, en kunnen geselecteerd worden met een zeer eenvoudige gebruikersinterface acties.

Een andere truc is tot een minimum te beperken en te vereenvoudigen, het type van de output.Modellen soms gebruik van een status licht voor elke interface stekker, of falen voorwaarde, te vertellen wat mislukt.Een goedkope variant is te licht hebben twee bars met een gedrukte matrix van fouten die zij selecteert u de gebruiker kan lijm op de etiketten voor de taal die hij spreekt.Bijvoorbeeld, de meeste kleine computer printers gebruiken verlichting geëtiketteerd met stok op labels die kunnen worden afgedrukt in elke taal.Op sommige markten, die worden geleverd met verschillende sets van labels, zodat klanten kunnen kiezen de meest comfortabele taal.

Een andere veel voorkomende truc is dat modi zijn absoluut duidelijk over de gebruiker weergegeven.Als een interface heeft modi, ze zijn bijna altijd reversibel in een voor de hand liggende manier, of omgekeerd zich automatisch.

Bijvoorbeeld Boeing test standaard interface is een knop en een aantal lampen.Wanneer u op de knop alle verlichting aan.Wanneer u de knop loslaat, de lichten met mislukkingen verblijf.De labels zijn in Basic Engels.

Ontwerpers gebruiken kleuren.Rood betekent "gevaar" of dat een fout is opgetreden, waardoor het hele systeem te mislukken.Geel betekent dat er iets mis zou kunnen zijn.Groen betekent dat de status is OK of goed.Dit is met opzet als een stop-licht, omdat de meeste mensen begrijpen die.

De meeste modellen zorgen voor een beeldscherm te veranderen onmiddellijk nadat een gebruiker actie.Als de machine gaat om iets te doen, het begint meestal binnen de 7 seconden, of geeft voortgangsverslagen.

Als een ontwerp moet een scherm, veel ontwerpers gebruik van platte tekst.Het
is de voorkeur gegeven omdat gebruikers zijn lezing borden voor jaren.Een GUI is vrij en kan doen, maar meestal wordt een jaar van ontwerp, goedkeuring en vertaler vertragingen, en een of twee programmeurs aan een project
voor de kosten, zonder enige waarde.Vaak een te-slim GUI daadwerkelijk verwart gebruikers, omdat het kan gebruiken onbekende symbolen.

Als een ontwerp te verwijzen naar delen van de machine (zoals in kopieermachines), deze worden vaak aangeduid met nummers op de werkelijke machine, die zichtbaar zijn met de deuren gesloten.

Een netwerk interface is gewoon een externe scherm.Hij gedraagt zich net als alle andere gebruikers interface.

Een van de meest succesvolle klein scherm-based interfaces is de twee menuknoppen en een regel tekst in de gebruikersinterface
van de moedertaal.Het
is gebruikt in semafoons, midden-geprijsde printers, netwerk-switches en andere midden-geprijsde situaties vereisen complexe gedrag van de gebruikers.

Op grotere schermen, een touch-screen-scherm of rand knoppen ook het minimaliseren van de soorten van gebruikers, en gemakkelijk controle (s) menu's.Het voordeel van dit systeem is dat de betekenis van de knoppen kunt wijzigen met het scherm, en de selectie kunnen zeer dicht bij het natuurlijke gedrag van niet goed op wat er gewenst.

Wanneer er tekst, de ontwerper kiest een of meer talen.De standaard taal is meestal het meest begrepen door de doelgroep van de gebruikers.De meeste ontwerpers proberen gebruik te maken van inheemse karakter sets van de doelgroep beter te voldoen aan hun behoeften.

Tekst wordt meestal vertaald door professionele vertalers, zelfs als native speakers zijn op het personeel.Marketing personeel te kunnen vertellen buitenlandse distributeurs dat de vertalingen worden professioneel.Een buitenlandse fabrikant kan verzoeken de hoogste volume distributeur te herzien en correcte vertaling in hun eigen taal, om te helpen bij het product
van de aanvaarding door native sales mensen.

De meeste autoriteiten overwegen een usability test belangrijker dan een aantal adviezen.Ontwerpers bevelen het testen van de gebruikersinterface voor de bruikbaarheid in het vroegst mogelijke moment.Een vaak gebruikte snelle, vuile test is om te vragen een uitvoerend secretaris van het gebruik van kartonnen modellen getekend met magie markers, en gemanipuleerd door een ingenieur.De video resultaat wordt waarschijnlijk zowel humoristische en zeer leerzaam.In de tapes, elke keer dat de ingenieur gesprekken, de interface is mislukt, omdat het zou leiden tot een service call.

In veel organisaties, een persoon keurt de user interface.Vaak is een klant, de grootste distributeur of iemand direct verantwoordelijk voor de verkoop van het systeem.
[edit]

Platform

Er zijn veel verschillende CPU architecturen gebruikt in embedded ontwerpen zoals ARM, MIPS, Coldfire/68k, PowerPC, X86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R enz.

Dit in tegenstelling tot de computer, die op moment van schrijven (2003) is beperkt tot slechts enkele concurrerende architecturen, voornamelijk de Intel / AMD x86, en het Apple / Motorola / IBM PowerPC, gebruikt bij de Apple Macintosh.In de desktop computers, als de aanvaarding van Java groeit, de software wordt steeds minder afhankelijk van een specifieke uitvoering milieu.

Standaard PC/104 is een typisch voor kleine, low-volume ingesloten en ruw ontwerp van het systeem.Die maken vaak gebruik van DOS, Linux, NetBSD, of Embedded Real-time operating systeem, zoals QNX of Inferno.

Een gemeenschappelijke configuratie voor zeer hoge volume embedded systemen is het systeem op een chip, een applicatie-specifieke geïntegreerde schakelingen, waarvan de CPU is gekocht als intellectueel eigendom toe te voegen aan de IC's ontwerp.Een verwante gemeenschappelijke regeling is het gebruik van een veld-programmeerbare gate array, en programma's die zij met alle logica, met inbegrip van de CPU.De meeste moderne FPGA's zijn ontworpen voor dit doel.
[edit]

Gereedschap

Zoals typisch computer programmeurs, embedded systeem ontwerpers gebruik compilers, assembleurs en debuggers voor de ontwikkeling van embedded software.Zij echter ook gebruik maken van een aantal instrumenten die onbekend zijn voor de meeste programmeurs.

Software tools kunnen komen uit verschillende bronnen:

* Software bedrijven die zijn gespecialiseerd in de embedded markt
* Geporteerd van de GNU software development tools (zie cross compiler)
* Soms, ontwikkelingstools voor een personal computer gebruikt kan worden als de embedded processor is een nauwe relatie tot een gemeenschappelijke pc-processor

Embedded systeem ontwerpers ook gebruik maken van een enkele software tools zelden gebruikt door typische computer programmeurs.

* Een gemeenschappelijk instrument is een "in-circuit emulator" (ICE), of, in meer moderne ontwerpen, een geïntegreerde debugger.Dit debugging tool is de fundamentele truc gebruikt voor de ontwikkeling van embedded code.Het vervangt of de stekkers in de microprocessor en biedt faciliteiten voor het snel laden en debuggen experimentele code in het systeem.Een kleine pod gewoonlijk de speciale elektronica om aan te sluiten op het systeem.Vaak een personal computer met speciale software hecht aan de pod om de debugging-interface.
* De linker is meestal nogal exotisch.In de meeste business-programmering, de linker is bijna een nabeschouwing, en de standaard instellingen zijn nooit gevarieerd.In tegenstelling, het
is vaak voor een ingebed linker hebben een complete, vaak complexe, commando taal.Er zijn vaak meerdere soorten geheugen, met name de code en de gegevens in elk.Individuele data structuren kunnen worden geplaatst op bepaalde adressen te geven van de software gemakkelijk toegang tot geheugen-kaart controle registers.Embedded linkers vaak nogal exotische optimalisatie faciliteiten om de code
van de grootte en de uitvoeringstermijnen.Zij kunnen bijvoorbeeld verplaatst subroutines zodat gesprekken met hen kunt gebruiken kleinere subroutine oproep en springen instructies.Ze hebben vaak functies om data te beheren overlays en bank switching, technieken vaak gebruikt om rekken de goedkope processoren in embedded software.
* Een ander gemeenschappelijk instrument is een hulpprogramma (vaak eigen kweek) toe te voegen een checksum of CRC naar een programma, zodat de embedded systeem kunt controleren of het programma de gegevens vóór de uitvoering ervan.
* Een embedded programmeur dat ontwikkelt software voor digitale signaalverwerking, heeft vaak een wiskundige werkbank zoals Mathcad Mathematica of voor de simulatie van de wiskunde.
* Minder vaak zijn hulpprogramma's om de bestanden in code, zodat men kan ook een soort van gegevens in een programma.
* Een aantal projecten gebruik Synchronous programmeertalen voor extra betrouwbaarheid of digitale signaalverwerking.

Sommige programmeertalen bieden specifieke ondersteuning voor embedded systemen programmering.

* Voor de C-taal, ISO / IEC TR 18037:2005 specificeert
o Naam adresruimten
o Naam opslag klassen
o Basic I / O-hardware aanpakken

[edit]

Debuggen

Debugging wordt meestal uitgevoerd met een in-circuit emulator, of enige vorm van foutopsporingsprogramma dat kan de microcontroller
de interne microcode.

De microcode onderbreken kunt de debugger opereren in hardware waar alleen de CPU werkt.De CPU-gebaseerde debugger kan worden gebruikt voor het testen en debuggen van de elektronica van de computer uit het oogpunt van de CPU.Deze functie is pionier op de PDP-11.

Ontwikkelaars moeten aandringen op het debuggen waarin de hoog-niveau taal, met breakpoints en single-stepping, omdat deze functies zijn overal verkrijgbaar.Ook ontwikkelaars moeten schrijven en het gebruik eenvoudig te loggen faciliteiten te debuggen sequenties van real-time events.

Pc of mainframe programmeurs eerste stuit dit soort programmering vaak verward over vormgeving prioriteiten en aanvaardbare methoden.Mentoring, code-reviews en egoless programmering worden aanbevolen.

Naarmate de complexiteit van embedded systemen groeit, een hoger niveau instrumenten en besturingssystemen migreren in machines waar het zinvol is.Bijvoorbeeld mobiele telefoons, persoonlijke digitale assistenten en andere consumptiegoederen computers vaak behoefte aan significante software die is gekocht of die door een andere persoon dan de fabrikant van de elektronica.In deze systemen, een open programmeer omgeving zoals Linux, OSGi of Embedded Java is nodig zodat de third-party software provider kan verkopen aan een grote markt.

De meeste van deze open omgevingen hebben een referentie model dat draait op een personal computer.Veel van de software voor dergelijke systemen kunnen worden ontwikkeld op een conventionele computer.Echter, het overdragen van de open omgeving aan de gespecialiseerde elektronica, en de ontwikkeling van de stuurprogramma's voor de elektronica zijn doorgaans nog steeds de verantwoordelijkheid van een klassieke embedded software engineer.In sommige gevallen, de ingenieur werken voor de geïntegreerde schakeling fabrikant, maar er is nog een dergelijke persoon ergens.
[edit]

Besturingssysteem

Embedded systemen hebben vaak geen enkel besturingssysteem, of een gespecialiseerde embedded besturingssysteem (vaak een real-time operating systeem), of de programmeur is toegewezen aan een van deze poort naar het nieuwe systeem.
[edit]

Start-up

Alle ingebedde systemen hebben opstartcode.Meestal schakelt interrupts, stelt de elektronica, de computer-tests (RAM, CPU en software), en dan begint de applicatie code.Veel embedded systemen te herstellen van de korte termijn stroomstoringen door herstarten zonder recente zelf-tests.Herstart keer onder een tiende van een seconde zijn gemeenschappelijk.

Veel ontwerpers hebben een paar lampjes nuttig te wijzen op fouten (ze helpen bij het oplossen van problemen).Een gemeenschappelijke regeling is om de beurt op alle elektronica van de LED (s) op reset (waaruit blijkt dat de macht en de LED's werk).Dan de software verandert de LED's, zoals de Power-On Self Test uitvoert.Na dat de software maakt gebruik van de LED (s) om de normale werking of fouten.Dit dient ter geruststelling van de meeste technici, ingenieurs en een aantal gebruikers.Een interessante uitzondering is dat op elektrische energie meters en andere items op de straat, knipperende lichten staan bekend om de aandacht te trekken en vandalisme.
[edit]

Built-in Self-Test

De meeste embedded systemen hebben een zekere mate of de mate van built-in self-test.Er zijn verschillende soorten:

1.Testen van de computer: CPU, RAM en programma geheugen.Deze vaak een keer op power-up.In de veiligheid van kritische systemen,
maar ook periodiek uitvoeren (binnen de veiligheids-interval), of in de tijd.
2.Tests van randapparatuur: Deze ingangen simuleren en lees-back of maatregel uitgangen.Een verrassend aantal van communicatie-, analoge en besturingssystemen kunnen hebben deze tests,
die vaak zeer goedkoop.
3.Proeven van de macht: Deze maatregel meestal elk spoor van de energievoorziening en kan de input (batterij of netvoeding) als goed.Voedingen zijn vaak sterk benadrukt, met lage marges, en het testen daarvan is dus waardevol.
4.Mededeling proeven: Deze controleren of de ontvangst van een simpele boodschap van aangesloten units.Het internet, bijvoorbeeld, heeft het ICMP-bericht 'ping'.
5.Bekabeling proeven: Meestal loopt een draad in een serpentijn regeling via representatieve pinnen van de kabels die moeten worden bijgevoegd.Synchrone communicatie systemen, zoals telefoon-media, maken vaak gebruik van "synchroniseren" proeven voor dit doel.Kabel tests zijn goedkoop, en zeer handig wanneer het apparaat stoppen.
6.Tuigage proeven: Vaak is er een systeem moet worden aangepast wanneer het wordt geïnstalleerd.Tuigage proeven van indicatoren aan de persoon die het systeem installeert.
7.Verbruiksgoederen proeven: Deze maatregel wat een systeem gebruikt, en waarschuwen wanneer de hoeveelheden zijn gering.De meest voorkomende voorbeeld is de brandstofmeter van een auto.De meest complexe voorbeelden kan de geautomatiseerde systemen voor medische analyses die houden voorraden van chemische reagentia.
8.Operationele testen: Deze maatregel dingen die een gebruiker zou de zorg over de exploitatie van het systeem.Met name deze moeten worden uitgevoerd wanneer het systeem actief is.Dit omvat navigatie-instrumenten voor vliegtuigen, een auto
van de snelheidsmeter, en disk-schijf branden.
9.Onschadelijkheidsproeven: Deze lopen in een 'veiligheids-interval', en garanderen dat het systeem is nog steeds betrouwbaar.De veiligheid interval is meestal een tijd minder dan de minimale tijd dat kan leiden tot schade.

[edit]

Betrouwbaarheid regimes

Betrouwbaarheid heeft verschillende definities, afhankelijk van de reden waarom mensen willen.Interessant, er zijn relatief weinig soorten van betrouwbaarheid, en systemen met soortgelijke dienst soortgelijke built-in self-tests en nuttige methoden:

1.Het systeem is te onveilig, of ontoegankelijk te repareren.(Space-systemen, onderzeese kabels, navigatienauwkeurigheid bakens, bore-hole, en vreemd, auto's en massa-geproduceerde producten)
In het algemeen, de embedded systeem testen subsystemen en schakelaars overbodig bespaart op de lijn, of het "limp wijzen", die een gedeeltelijke functie .Vaak in massa geproduceerde apparatuur voor de consumenten (zoals auto's, pc's of printers) valt in deze categorie, omdat reparaties zijn duur en repairmen ver weg, in vergelijking met de initiële kosten van de eenheid.
2.Het systeem kan niet veilig worden afgesloten.(Aircraft navigatie, reactorveiligheid controle systemen, veiligheid-kritische chemische fabriek controles, trein signalen, motoren op eenmotorige vliegtuigen)
Net als de bovenstaande, maar "limp modes" zijn minder draaglijk.Vaak is de back-ups worden geselecteerd door een operator.
3.Het systeem zal verliezen van grote hoeveelheden geld toen stilgelegd.(Telefoon schakelaars, fabriek controles, brug en lift controles, betalingsverkeer en op de markt te maken, geautomatiseerde verkoop en service) Deze hebben meestal een paar go / no-go-tests, met on-line spares of "limp-modi met behulp van andere apparatuur en handmatige procedures .
4.Het systeem kan niet worden bediend wanneer zij onveilig zijn.Ook misschien een systeem kan niet worden bediend wanneer hij zou verliezen te veel geld.(Medische apparatuur, de apparatuur van het luchtvaartuig met hete onderdelen, zoals motoren, chemische fabriek controles, geautomatiseerde effectenbeurzen, gaming systemen) Het testen kan heel exotisch, maar de enige actie is het afsluiten van de gehele unit en duiden op een mislukking.

[edit]

Soorten van embedded software-architecturen

Er zijn verschillende wezen verschillende soorten software-architecturen in gemeenschappelijk gebruik.
[edit]

De controle-lus

In dit ontwerp, de software eenvoudig met een lus.De lus oproepen subroutines.Elke subroutine beheert een deel van de hardware of software.Interrupts meestal vlaggen, of update-tellers die zijn gelezen door de rest van de software.

Een eenvoudige API uitschakelen en kunt interrupts.Gedaan recht handelt geneste roept in geneste subroutines, en herstelt de vorige onderbreken toestand in de ultraperifere inschakelen.Dit is een van de eenvoudigste methoden voor het maken van een exokernel.

Doorgaans
is er een soort van subroutine in de lus voor het beheren van een lijst van software timers, met behulp van een periodieke, real-time interrupt.Wanneer een timer afloopt, een bijbehorende subroutine wordt uitgevoerd, of de vlag is ingesteld.

Elke verwacht hardware geval dient te worden back-up met een software-timer.Hardware gebeurtenissen niet over eens in een biljoen keer.Dat
is ongeveer een keer per jaar met moderne hardware.Met een miljoen massa-geproduceerde apparaten, het weglaten van een software-timer is een business ramp.

Soms is een reeks van software
op basis van de veiligheid mogen worden uitgevoerd door middel van een proef software die op gezette tijden opnieuw een software waakhond geïmplementeerd in hardware.Als de software mist een evenement, de veiligheid-timer-software vangsten is.Als de veiligheid-timer-software mislukt, de watchdog hardware reset het apparaat.

State machines kunnen worden uitgevoerd met een functie-aanwijzer per state-machine (in C , C of assemblage, toch).Een verandering van de staat slaat een andere functie in de aanwijzer.De functie pointer wordt uitgevoerd telkens wanneer de lus rijdt.

Veel ontwerpers bevelen lezing elke IO apparaat eenmaal per lus, en de opslag van het resultaat, zodat de logica handelt in overeenstemming waarden.

Veel ontwerpers liever ontwerp van hun machines te controleren slechts een of twee dingen per staat.Meestal is dit een hardware-evenement en een software-timer.

Ontwerpers raden hiërarchische state machines moeten uitvoeren van de lagere stand van machines voor het hoger, zodat de hogere uitgevoerd met nauwkeurige informatie.

Complexe functies zoals verbrandingsmotoren controles worden vaak behandeld met multi-dimensionale tabellen.In plaats van ingewikkelde berekeningen, de code ziet er op de waarden.De software kan interpoleren tussen de vermeldingen, om de tafels klein en goedkoop.

In de kleinste microcontrollers (ihb de 8051, die heeft een 128 byte stack) een lus maakt een goede linker te gebruiken statisch toegewezen gegevens overlays voor lokale variabelen.In deze regeling, variabelen dichter bij de bladeren van een subroutine oproep boom hoger geheugen adressen.Wanneer een nieuwe tak is gestart, zijn variabelen kunnen worden herverdeeld in de ruimte verlaten door het vorige kantoor.

Een belangrijke zwakte van een eenvoudige controle lus is dat het geen garantie voor een tijd om te reageren op een bepaalde hardware-evenement.

Zorgvuldige codering kan gemakkelijk verzekeren dat er niets schakelt interrupts voor lang.Zo onderbreken code kan draaien op zeer precieze tijden.

Nog een belangrijke zwakte van een controle-lus is dat het complex geworden voor het toevoegen van nieuwe functies.Algoritmen die een lange tijd uit te voeren moet zorgvuldig worden afgebroken, zodat slechts een klein stukje krijgt gebeurt elke keer via de belangrijkste lus.

Dit systeem is
de kracht
van de eenvoud en kleine stukjes software die de lus is meestal zo snel dat niemand schelen dat het niet voorspelbaar is.

Een ander voordeel is dat dit systeem garandeert dat de software wordt uitgevoerd.Er is geen mysterieuze besturingssysteem de schuld voor slecht gedrag.
[edit]

Nonpreemptive multitasking

Een nonpreemptive multitasking systeem is zeer vergelijkbaar met het bovenstaande, behalve dat de lus is verborgen in een API.Men definieert een reeks taken, en elke taak krijgt zijn eigen subroutine stack.Dan, wanneer een taak wordt gebruikt, roept hij stationair routine (meestal "pauze", "wachten", "rendement", of enz.).

Een architectuur met vergelijkbare eigenschappen te hebben van een evenement wachtrij, en hebben een lus die verwijdert evenementen en oproepen subroutines gebaseerd op een veld in de wachtrij-item.

De voordelen en nadelen zijn zeer vergelijkbaar met de controle lus, behalve dat het toevoegen van nieuwe software is makkelijker.Een gewoon schrijft een nieuwe taak, of voegt aan de wachtrij-tolk.
[edit]

Preemptive timers

Neem een van de bovenstaande systemen, maar voeg een timer systeem dat draait subroutines uit een timeropname onderbreken.Dit voegt nieuwe mogelijkheden tot het systeem.Voor de eerste keer, de timer routines kan optreden tegen een gegarandeerde tijd.

Ook, voor het eerst de code kan stap op haar eigen data structuren op onverwachte tijden.De timer routines moeten worden behandeld met dezelfde zorg als interrupt routine (s).
[edit]

Preemptive taken

Neem de bovenstaande nonpreemptive taak, en het draaien van een preëmptieve timer of andere interrupts.

Opeens het systeem is heel anders.Elk stukje van de taak-code kunnen de gegevens van een andere taak, ze moeten juist gescheiden.

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]

Virtuele machinesSome 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]

Zie ook
WikibooksWikibooks Wikiversity has more about this subject:
Embedded System Engineering WikibooksWikibooks 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]

Externe links* 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". Inhoud
[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]

GeschiedenisThe Apollo Guidance Computer, the first recognizably modern embedded system.source: The Computer History Museum EnlargeThe 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 EnlargeThe 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 EnlargeA 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]

KenmerkenEmbedded 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 translators, even if native speakers are on staff. Marketing staff have to be able to tell foreign distributors that the translations are professional. A foreign manufacturer may ask the highest-volume distributor to review and correct translations in their native language, in order to help the product's acceptance by native sales people.

Most authorities consider a usability test more important than any number of opinions. Designers recommend testing the user interface for usability at the earliest possible instant. A commonly-used quick, dirty test is to ask an executive secretary to use cardboard models drawn with magic markers, and manipulated by an engineer. The videotaped result is likely to be both humorous and very educational. In the tapes, every time the engineer talks, the interface has failed because it would cause a service call.

In many organizations, one person approves the user interface. Often this is a customer, the major distributor or someone directly responsible for selling the system. [edit]

PlatformThere are many different CPU architectures used in embedded designs such as ARM, MIPS, Coldfire/68k, PowerPC, X86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R etc.

This in contrast to the desktop computer market, which as of this writing (2003) is limited to just a few competing architectures, mainly the Intel/AMD x86, and the Apple/Motorola/IBM PowerPC, used in the Apple Macintosh. In desktop computers, as acceptance of Java grows, the software is becoming less dependent on a specific execution environment.

Standard PC/104 is a typical base for small, low-volume embedded and ruggedized system design. These often use DOS, Linux, NetBSD, or an embedded real-time operating system such as QNX or Inferno.

A common configuration for very-high-volume embedded systems is the system on a chip, an application-specific integrated circuit, for which the CPU was purchased as intellectual property to add to the IC's design. A related common scheme is to use a field-programmable gate array, and program it with all the logic, including the CPU. Most modern FPGAs are designed for this purpose. [edit]

GereedschapLike typical computer programmers, embedded system designers use compilers, assemblers, and debuggers to develop embedded system software. However, they also use a few tools that are unfamiliar to most programmers.

Software tools can come from several sources:

* Software companies that specialize in the embedded market
* Ported from the GNU software development tools (see cross compiler)
* Sometimes, development tools for a personal computer can be used if the embedded processor is a close relative to a common PC processor

Embedded system designers also use a few software tools rarely used by typical computer programmers.

* One common tool is an "in-circuit emulator" (ICE) or, in more modern designs, an embedded debugger. This debugging tool is the fundamental trick used to develop embedded code. It replaces or plugs into the microprocessor, and provides facilities to quickly load and debug experimental code in the system. A small pod usually provides the special electronics to plug into the system. Often a personal computer with special software attaches to the pod to provide the debugging interface.
* The linker is usually quite exotic. In most business-programming, the linker is almost an afterthought, and the defaults are never varied. In contrast, it's common for an embedded linker to have a complete, often complex, command language. There are often multiple types of memory, with particular code and data located in each. Individual data structures may be placed at particular addresses to give the software convenient access to memory-mapped control registers. Embedded linkers often have quite exotic optimization facilities to reduce the code's size and execution times. For example, they may move subroutines so that calls to them can use smaller subroutine call and jump instructions. They often have features to manage data overlays, and bank switching, techniques often used to stretch the inexpensive CPUs in embedded software.
* Another common tool is a utility program (often home-grown) to add a checksum or CRC to a program, so the embedded system can check its program data before executing it.
* An embedded programmer that develops software for digital signal processing, often has a math workbench such as MathCad or Mathematica to simulate the mathematics.
* Less common are utility programs to turn data files into code, so one can include any kind of data in a program.
* A few projects use Synchronous programming languages for extra reliability or digital signal processing.

Some programming languages offer specific support for embedded systems programming.

* For the C language, ISO/IEC TR 18037:2005 specifies
o Named address spaces
o Named storage classes
 

Welcome to EDABoard.com

Sponsor

Back
Top