Embedded system

Een embedded systeem is een computer die gebouwd is om slechts een paar zeer specifieke problemen op te lossen en die niet gemakkelijk te veranderen is. Het woord embedded betekent dat het in het systeem is ingebouwd. Het is een vast onderdeel van een groter systeem. Het ziet er meestal niet uit als een computer, vaak geen toetsenbord of monitor of muis. Maar zoals elke computer heeft het een processor en software, input en output.

De controller die in een lift is ingebouwd, vertelt de motor bijvoorbeeld om de lift naar verschillende verdiepingen te verplaatsen, op basis van de knoppen die worden ingedrukt. Een decoder is ingebed in een satelliet televisie settop box (STB genaamd) om een signaal van de schotel te lezen en iets te versturen dat een TV begrijpt. Vaak moet dit type systeem zijn werk doen in een bepaalde tijd. Dit wordt real-time computing genoemd. Als een settopbox wordt onderbroken om een andere taak uit te voeren, zie je bijvoorbeeld een slecht beeld op de tv. Een computer voor algemene doeleinden zal vaak korte pauzes hebben terwijl hij iets anders doet, het is niet real-time.

Embedded systemen besturen veel van de gangbare apparaten die vandaag de dag in gebruik zijn, zoals kaartlezers in hoteldeursloten of verschillende dingen in een auto. Ze kunnen kleine dingen besturen, zoals een MP3-speler of een digitale camera, en grote dingen zoals verkeerslichtsystemen, vliegtuigen of montagelijnen in een fabriek.

Foto van het binnenwerk van een ADSL-modem/router. Een modern voorbeeld van een embedded systeem. De gelabelde onderdelen omvatten een microprocessor (4), RAM (6) en een flashgeheugen (7).
Foto van het binnenwerk van een ADSL-modem/router. Een modern voorbeeld van een embedded systeem. De gelabelde onderdelen omvatten een microprocessor (4), RAM (6) en een flashgeheugen (7).

Voorbeelden van ingebedde systemen

Embedded systemen worden gebruikt in vele soorten elektrische apparaten, waaronder:

  • Telecommunicatiesystemen gebruiken ze voor telefoons, mobiele telefoonnetwerken en wi-fi routers.
  • De consumentenelektronica bestaat uit zendontvangers, MP3-spelers, mobiele telefoons, videogameconsoles, digitale camera's, dvd-spelers, GPS-ontvangers, beveiligingssystemen voor thuisgebruik en printers.
  • Huishoudelijke apparaten, zoals magnetrons, wasmachines, inbraakalarmsystemen en vaatwassers hebben ingebouwde systemen.
  • Transport maakt gebruik van ingebedde systemen voor alles van locomotieven voor treinen, vliegtuigen en auto's.
  • De industrie maakt gebruik van elektromotoren met elektronische besturingen, kaartlezers en CNC-machines die automatisch metalen onderdelen maken.
  • Medische apparatuur zoals defibrillatoren, automatische bloeddruklezers en automatische insulinepompen.
  • Militaire apparaten, zoals walkie-talkies, satellieten en de geleidingssystemen voor raketten.

Gemeenschappelijke kenmerken

  • Embedded systemen zijn ontworpen om een specifieke taak uit te voeren, in tegenstelling tot computers voor algemeen gebruik.
  • Het ziet er niet uit als een computer - er is misschien geen volledige monitor of een toetsenbord.
  • Veel ingebedde systemen moeten in staat zijn om dingen in real-time te doen - in een korte tijd (bijna direct vanuit een menselijk gezichtspunt).
  • Veel ingebedde systemen moeten zeer veilig en betrouwbaar zijn, vooral voor medische hulpmiddelen of avionica die vliegtuigen besturen.
  • Begint heel snel. Mensen willen geen minuut of twee wachten op het starten van hun auto of het starten van hun nooduitrusting.
  • Het kan gebruik maken van een speciaal besturingssysteem (of soms een heel klein zelfgemaakt OS) dat helpt om aan deze eisen te voldoen, een realtime besturingssysteem genaamd, of RTOS.
  • De programma-instructies die voor embedded systemen zijn geschreven, worden firmware genoemd en worden opgeslagen in alleen-lezen geheugen of flashgeheugenchips. Ze draaien met beperkte computerhardwarebronnen: weinig geheugen, klein of onbestaand toetsenbord en/of scherm.

Embedded systemen zijn niet altijd op zichzelf staande apparaten. Soms worden ze als een set gebouwd, zoals de verschillende onderdelen van een auto - de radio, de gashendel, de vervuilingscontrole, enz. Soms kunnen ze communiceren met het internet of een mobiele telefoonnetwerk en hebben ze een USB-lezer of andere aansluitingen.


Gebruikersinterfaces

Embedded systemen variëren van geen enkele gebruikersinterface - alleen het verzenden en ontvangen van elektrische signalen - tot een volledige grafische gebruikersinterface zoals op een moderne computer. Vaak hebben ze een paar drukknoppen en een klein display en enkele LED's. Een complexer systeem kan een aanraakscherm hebben, waardoor de betekenis van de knoppen bij elk scherm kan veranderen zoals bij smartphones.

Een voorbeeld van een gebruikersinterface met knoppen en een eenvoudig LCD-display.
Een voorbeeld van een gebruikersinterface met knoppen en een eenvoudig LCD-display.

Hardware

De hardware omvat de chips, draden, printplaten, knoppen en displays.

CPU's

De belangrijkste chip is de centrale verwerkingseenheid of CPU. Hiermee wordt de software-instructie uitgevoerd. Het kan een standaard microprocessor of een microcontroller zijn. Microcontrollers bevatten zowel de microprocessor als eenvoudige randapparatuur zodat het systeem kleiner en goedkoper kan zijn. Ze hebben minder flexibiliteit omdat die onderdelen niet kunnen worden gewijzigd. Meestal zijn deze onderdelen voorzien van Flash-geheugen en ondersteuning voor seriële poorten, USB, enz.

In tegenstelling tot een microprocessor voor een algemene computer is groter en sneller niet altijd beter. Veel embedded processors zijn erg klein. Soms is dit om minder ruimte of minder vermogen te gebruiken, soms is het om goedkoper te zijn. Voor algemene computers worden microprocessoren gebruikt die 32-bits of 64-bits woorden lezen en draaien met snelheden gemeten in GHz, maar embedded processoren zijn meestal 4 tot 32 bits en draaien met snelheden die meestal in tientallen MHz (honderd keer langzamer) worden gemeten. (Maar de programma's zijn ook kleiner en controleren niet op dingen die niet gebruikt worden).

Kant-en-klare computerborden

Er zijn "kant-en-klare" computerborden die in sommige embedded systemen kunnen worden gebruikt. Deze maken vaak gebruik van Windows CE, Linux, NetBSD of een embedded real-time besturingssysteem.

Soms is het makkelijker om een reeds gemaakte printplaat te gebruiken. Deze delen meestal veel componenten met computers voor algemene doeleinden, maar zijn kleiner dan één in een computer voor algemene doeleinden. Boards zoals de VIA EPIA kunnen Microsoft Windows draaien. Het voordeel is dat het wat elektrotechnische tijd bespaart en dat het dezelfde softwareontwikkelingshulpmiddelen kan gebruiken als voor PC-type softwareontwikkeling. Voorbeelden van dergelijke embedded devices zijn de ATM's of displays in casino's. Dit werkt goed als de real-time eisen niet echt streng zijn (het maakt niet veel uit als een opdracht bijvoorbeeld acht seconden duurt in plaats van vijf).

ASIC- en FPGA-oplossingen

Als het apparaat zeer klein moet zijn of in zeer grote aantallen wordt verkocht ("high-volume"), is het zinvol om een aangepaste of gespecialiseerde chip te maken die precies doet wat nodig is. Dit is een systeem op een chip (SoC) dat een compleet systeem bevat - processor, floating point unit, geheugencache en interfaces op een enkele geïntegreerde schakeling. SoC's kunnen worden gemaakt als een applicatie-specifieke geïntegreerde schakeling (ASIC) of door gebruik te maken van een in het veld programmeerbare gate array (FPGA) die wordt geprogrammeerd door de mensen die het embedded systeem bouwen.

Randapparatuur

Embedded systemen praten met de buitenwereld of andere componenten met behulp van randapparatuur zoals:

  • Seriële Poorten: RS-232, RS-422, RS-485. Vroeger was dit vrij gebruikelijk, met de 9-pins (of grotere) connectoren.
  • Synchrone seriële communicatie-interface: I²C-geïntegreerde schakeling, I²S-geïntegreerd geluid, SPI, MIcrowire, ...
  • Universele seriële bus (USB).
  • Netwerken: Ethernet, Controller Area Network, LonWorks, ...
  • Discrete Input/Output: Algemeen doel Input/Output (GPIO). Dit kan een enkele draad zijn met een aan/uit-signaal. Het kan gebruikt worden voor een klein toetsenbord, of om een LED te laten branden.
  • Analoog naar digitaal/digitaal naar analoog convertoren (ADC/DAC). Dit meet iets dat in sterkte verandert, zoals een lichtsensor of een motorsturing.
  • Debugging: JTAG, ICSP-poort, voor software-ingenieurs.
Soekris net4801, een ingebed systeem gericht op netwerktoepassingen.
Soekris net4801, een ingebed systeem gericht op netwerktoepassingen.

Software

Besturingssystemen

Embedded systemen hebben vaak geen volledig besturingssysteem nodig. Sommigen gebruiken speciaal gebouwde kleine en eenvoudige besturingssystemen die zeer snel starten, anderen hebben er helemaal geen nodig. Embedded systemen zijn minder gemakkelijk aan te passen, maar ze zijn veel betrouwbaarder gebouwd om hun taken uit te voeren. Omdat de hardware eenvoudiger is, is het vaak ook goedkoper om te bouwen en draait het sneller.

In tegenstelling tot dit, moet een algemene computer klaar zijn voor nieuwe apparaatstuurprogramma's en software om hardware te draaien die hij nog niet kent, zoals nieuwe printers of harde schijven. Het moet verschillende applicatieprogramma's uitvoeren.

Naarmate embedded systemen groter worden, worden dingen die vroeger alleen op algemene computers of zelfs mainframes stonden, nu gemeengoed op embedded systemen. Dit omvat beschermde geheugenruimte en een open programmeeromgeving met inbegrip van Linux, NetBSD, enz.

Enkele voorbeelden van besturingssystemen, van eenvoudig tot complex:

  • Eenvoudige regelkring - Een timer en een lus worden gebruikt om verschillende subroutines herhaaldelijk op te roepen. Deze wordt vaak door één persoon gemaakt voor kleinere systemen.
  • interrupt gecontroleerd - De taken worden gestart door verschillende soorten gebeurtenissen. De gebeurtenis kan iets getimed zijn (bijvoorbeeld om de tien seconden) of door een druk op de knop of door het ontvangen van gegevens.
  • niet-preventieve multitasking - Elke taak krijgt zijn beurt om uit te voeren, en wanneer het klaar is roept het een planner in het OS op om de volgende taak uit te voeren.
  • Preventieve multitasking of multi-threading - Een taak kan na enige tijd worden gestopt om een andere taak een tijdje te laten lopen. Geen enkele taak kan het systeem in beslag nemen. Op dit niveau wordt het systeem beschouwd als een "besturingssysteem" kernel en kan het taken parallel uitvoeren. Dit type OS wordt meestal gekocht van een bedrijf dat alleen werkt op embedded besturingssystemen.

Real-time besturingssystemen omvatten producten zoals MicroC/OS-II, Green Hills INTEGRITY, QNX of VxWorks. In tegenstelling tot MacOS of Windows 7 zijn deze besturingssystemen bij de meeste mensen niet zo bekend. Maar ze worden op veel plaatsen gebruikt waar tijd en veiligheid erg belangrijk is. Mensen gebruiken ze elke dag en beseffen het niet.

Veel voorkomende voorbeelden van grotere kernels zijn Embedded Linux en Windows CE. Hoewel deze niet de strakke tijdslimieten hebben die nodig zijn voor een strikt real-time systeem, komen ze steeds vaker voor, vooral voor krachtigere apparaten zoals Wireless Routers en GPSs. Ze staan hergebruik van code in het publieke domein toe voor Device Drivers, Web Servers, Firewalls en andere code. Ook softwareontwikkelaars die comfortabeler zijn bij het schrijven van applicaties voor pc's, zullen dit steeds bekender vinden. Indien nodig kan een FPGA of andere speciale hardware worden gebruikt voor zaken die wel een strakke tijdslimiet nodig hebben.

Gereedschap

Net als andere software gebruiken embedded systeemontwerpers compilers, monteurs en debuggers om embedded systeemsoftware te ontwikkelen. Ze kunnen echter ook wat meer specifieke tools gebruiken:

  • Voor systemen die gebruik maken van digitale signaalverwerking kunnen ontwikkelaars gebruik maken van een wiskunde-instrument zoals MATLAB, MathCad of Mathematica.
  • Aangepaste compilers en linkers kunnen worden gebruikt om de optimalisatie voor de specifieke hardware te verbeteren.
  • Een ingebed systeem kan zijn eigen speciale taal of ontwerptool hebben, of verbeteringen toevoegen aan een bestaande taal zoals de taal die door Basic Stamp wordt gebruikt.

Debuggingsgereedschappen:

  • Een in-circuit debugger (ICD), een hardware-apparaat dat via een JTAG-interface met de microprocessor wordt verbonden. Deze start en stopt de microprocessor van buitenaf terwijl hij de software draait. Het maakt het ook mogelijk om geheugen en registers uit te lezen en om het softwareprogramma in het geheugen op te slaan.
  • Externe debugging met behulp van logging of seriële poortuitvoer om de werking te traceren met behulp van een knipperende monitor (prints).
  • Interactieve residentiële debugging - als het OS dit ondersteunt, is dit een shell op de embedded processor die commando's uitvoert die door de ontwikkelaar zijn getypt (bijvoorbeeld Linux).
  • Een in-circuit emulator vervangt de microprocessor op het bord en geeft volledige controle over alles wat de microprocessor kan doen.
  • Een complete emulator simuleert alle kenmerken van de hardware, waardoor alles kan worden gecontroleerd en aangepast. De hardware bestaat niet echt, maar een schijnbare versie ervan (een "virtuele" machine) staat op een normale PC.
  • Het controleren van externe lijnen met een logic analyzer of multimeter.

Tenzij het beperkt blijft tot externe debugging, kan de programmeur meestal software laden en uitvoeren via de tools, de code die in de processor draait bekijken en de werking ervan starten of stoppen. De weergave van de code kan als assemblagecode of broncode zijn. Sommige geïntegreerde systemen (zoals VxWorks of Green Hills) hebben speciale functies, zoals het bijhouden van hoeveel ruimte de software in beslag neemt tijdens het draaien, welke taken er draaien en wanneer er dingen gebeuren.

Afhankelijk van wat voor soort embedded systeem wordt gemaakt, zal dit invloed hebben op de manier waarop het kan worden gedebugd. Het debuggen van een enkel microprocessorsysteem is bijvoorbeeld anders dan het debuggen van een systeem waarbij de verwerking ook op een randapparaat (DSP, FPGA, co-processor) gebeurt.

Veiligheid en betrouwbaarheid

Embedded systemen zitten vaak in machines die naar verwachting jarenlang zonder fouten zullen draaien en in sommige gevallen vanzelf herstellen als er een fout optreedt. Dit betekent dat de software meestal zorgvuldiger wordt ontwikkeld en getest dan die voor pc's en dat onbetrouwbare mechanische bewegende delen zoals schijfstations en ventilatoren worden vermeden.

Plaatsen waar veiligheid en betrouwbaarheid belangrijk zijn:

  • Sommige systemen kunnen niet veilig worden afgesloten voor reparatie, of het is te moeilijk om te repareren. Voorbeelden hiervan zijn ruimtesystemen (satellieten, rovers), onderzeese kabels en besturing van kerncentrales.
  • Het systeem kan mensen doden als het faalt, zoals de besturing van vliegtuigen, de besturing van chemische fabrieken, treinsignalen en hartdefibrillatoren.
  • Het systeem zal grote hoeveelheden geld verliezen als het wordt stilgelegd of als er een fout wordt gemaakt: Telefoonschakelaars, fabrieksbesturingen, kassa's, geldautomaten.

Manieren om te herstellen van fouten - zowel softwarefouten zoals geheugenlekken, als zachte fouten in de hardware:

  • Waakhondentimer die het embedded systeem herstart als iets niet meer werkt.
  • Duplicaatonderdelen, waarbij het ene systeem het kan overnemen als een ander stopt met werken.
  • Software "slappe modi" die een deel van de functie vervullen.
  • Immuniteitsbewust programmeren

Gerelateerde pagina's


AlegsaOnline.com - 2020 / 2021 - License CC3