Embedded software

De afgelopen jaren heeft elektronica zich een plaats verworven in steeds meer producten. Enerzijds producten welke oorspronkelijk zonder elektronica werden bestuurd, zoals bijvoorbeeld horloges, en anderzijds producten die zonder elektronica niet mogelijk zouden zijn, zoals bijvoorbeeld draadloze telefoons. De eerste elektronische besturingen in producten werden uitgevoerd met analoge elektronica (denk aan timers). Hierna kwamen digitale schakelingen, opgebouwd met standaard logische schakelingen. Met de komst van de microprocessor en de microcontroller werden steeds meer functies in software gerealiseerd.

Eén van de producten die door de microprocessor mogelijk werden is de Personal Computer (PC). Voor PC’s wordt over de gehele wereld software ontwikkeld en men kan steeds verschillende software laden, terwijl wijzigingen (updates) eenvoudig zijn uit te voeren.

Dat in steeds meer producten ook “computers” zitten, waarin software de functionaliteit bepaalt is voor de gebruikers van deze producten niet zichtbaar en ook niet van belang: het product moet gewoon functioneren zoals verwacht en het is de gebruiker om het even of dit mechanisch, electronisch of door middel van kabouters gebeurt. De software die de functionaliteit van de elektronische besturing in producten bepaalt is eigenlijk geen echte software meer: het wordt onderdeel van de hardware. Er zijn duidelijke verschillen tussen de “vluchtige” software in computers en de “bevroren” software in producten. Om dit verschil aan te duiden wordt deze laatste wel aangeduid met de term “embedded software”. In navolging van deze term is voor de besturingselektronica in producten de term “embedded systems” ontstaan.

Een Embedded System is een elektronische besturing welke in een product is ingebed, en daarmee een onveranderlijk deel van dat product en zijn functionaliteit is geworden.

Onder Embedded Software verstaan we software (instructies voor een computerarchitectuur, welke stap voor stap worden uitgevoerd) in het embedded system, welke alleen bedoeld is om de hardware zijn voor het product vastgelegde taak te doen uitvoeren en welke door de gebruiker van het product niet is te veranderen.

In personal computers komen we ook embedded software tegen, zoals bijvoorbeeld in de BIOS, in de harddiskdrive, in de toetsenbord-processor (in de PC) en in de processor in het toetsenbord.

Embedded systems

Embedded systems komen we zo langzamerhand overal tegen. In calculators, telefoons, spelcomputers, televisies, audio-apparatuur, camera’s, kamerthermostaten, koortsthermometers, magnetron-ovens, wasmachines, auto’s, kopiëermachines, modems, printers, harddisks, vliegtuigen, raketten, satellieten, telefooncentrales… te veel om op te noemen. Reeds lang voordat de term Embedded Systems werd uitgevonden werden ze al overal toegepast. Embedded systems kunnen bestaan uit:

  • Alleen maar één chip (horloge, calculator).
  • Een klein systeem met een microcontroller, voeding en enkele in- en uitgangen (kamerthermostaat, doseerpomp).
  • Een complete PC met vastgelegde programmatuur (systeem met grafisch LCD, zodat bij voorkeur Windows ongewijzigd kan worden toegepast). Denk bijvoorbeeld aan meetapparaten.
  • Een rek met een aantal VME, PC-104 of vergelijkbare borden.
  • En alles wat zich daartussen bevindt.

Dit is een zeer diverse verzameling. De overeenkomst is het feit dat embedded systems door middel van embedded software tot leven komen.

Overigens kan men in embedded systems ook weer embedded systems tegenkomen: een modem-chip is een embedded system (met microcontroller en DSP functies), sommige AD-conversie chips hebben een processor aan boord die intern voor de gebruiker onzichtbare code uitvoert, een grafische LCD display module heeft ook een microcontroller die de opdrachten voor het display uitvoert.

Embedded systems bevatten programmeerbare componenten

Embedded systems worden opgebouwd uit electronische componenten: IC’s, transistoren, weerstanden, condensatoren, spoelen, trafo’s, connectors en dergelijke. Het gegevensverwerkende deel wordt bepaald door één of meer IC’s. Vroeger ontwierpen we nog systemen opgebouwd uit standaard digitale IC’s. Eerst waren dit TTL (Transistor-Transistor Logic) IC’s, later vergelijkbare functies in CMOS. Tegenwoordig worden deze standaard functies nauwelijks meer gebruikt en worden de functies van de specifieke toepassing gerealiseerd in programmeerbare hardware en met behulp van microcomputer structuren. In het eerste geval wordt de hardware op een chip permanent geprogrammeerd in een speciale configuratie. In het tweede geval wordt de hardware met een daartoe geëigende architectuur door elke instructie geherconfigureerd. In beide gevallen wordt uitgegaan van universele bouwstenen en wordt de functie van de bouwsteen bepaald door een vastegelegde (embedded) programmering.

De volgende bouwstenen komen we zoal tegen:

  • Onder een microprocessor verstaan we een IC waarop de essentiële elementen van een CPU (centrale verwerkingseenheid) zijn samengebracht, zoals: een ALU (rekenkundige verwerkingseenheid), interne registers, een programmateller en interruptlogica. De software wordt in een extern geheugen opgeslagen.
  • Onder een microcontroller verstaan we een IC waarop naast de microprocessor ook support functies zijn aangebracht. Dit kunnen bijvoorbeeld zijn: intern programmageheugen • intern werkgeheugen • timers • watchdog circuit • seriële interface(s) • parallelle I/O • analoge inputs • PWM outputs.
  • Een Digitale Signaal Processor (DSP) is een speciaal type microprocessor, waarin de architecturen van de ALU, datapointers en de programmateller zijn aangepast aan de specifieke bewerkingen welke voor digitale signaalverwerking gebruikelijk zijn. Ook met microcontrollers wordt op grote schaal digitale signaal processing gepleegd. Wanneer de snelheid echter een probleem wordt, kan men eerst zijn toevlucht nemen tot een DSP, die een grotere verwerkingssnelheid voor specifieke signaalverwerkingsalgoritmen heeft. Wanneer de snelheid van de DSP niet toereikend is, kan men gebruik maken van grotere PLD’s (zie hierna), waarin de digitale signaalverwerking geheel parallel, of in elk geval geheel aangepast aan de uit te voeren bewerking, in hardware kan worden uitgevoerd.

Bij de hiervoor genoemde microprocessor, microcontroller en DSP is een algemene eigenschap dat een opgeslagen lijst van instructies sequentiëel wordt uitgevoerd. Bij embedded systems noemt men deze lijst met instructies de embedded software. Daarnaast bestaat er nog programmeerbare hardware, waarvoor de algemene term Programmable Logic Device (PLD) wordt gehanteerd. Uit marketingoverwegingen worden door de fabrikanten van de PLD’s allerlei verschillende benamingen bedacht zoals PAL, GAL, EPLD, FPGA, SPGA, PASIC, … De essentie is echter dat tussen de aansluitpinnen van een universeel gefabriceerd IC logische functies kunnen worden geconfigureerd en dat dit door de gebruiker (de fabrikant van het product en niet de IC fabrikant) kan worden gedaan.

Wat dit laatste betreft is er ook weer niet zo’n groot verschil tussen PLD’s en microcontrollers: in beide gevallen wordt door de productontwerper de functie gedefinieerd en syntactisch (in een of andere programmeertaal) beschreven, gecompileerd (vertaald naar het specifieke device) en in het device geprogrammeerd.

Wanneer voor een product een specifiek IC wordt ontworpen, dat vervolgens door de chipfabrikant kant en klaar voor de toepassing van één klant wordt gefabriceerd, dan spreekt men over een Application Specific Integrated Circuit (ASIC).

Deze naamgeving is altijd enigszins arbitrair: Een Mask-Programmed Microcontroller, waarin door de chipfabrikant het door de toepasser ontwikkelde embedded software programma wordt vastgelegd, zou men volgens deze laatste definitie ook een ASIC kunnen noemen, terwijl ook een geprogrammeerde PLD een application specific integrated circuit is geworden. Voor een goede communicatie is het echter belangrijker om met een eenmaal gekozen naam een duidelijk omschreven structuur aan te geven dan dat de naam exact aangeeft wat de structuur doet. Net als niet iedereen die Timmerman heet een timmerman is of iedereen die Janssen heet een zoon van Jan hoeft te zijn. Een modem chip, welke de aansluiting van een computer aan de telefoonlijn realiseert, is zeer application specifiek en heeft DSP functies aan boord. Toch is hier de benaming modem chip wel zo duidelijk.

In de meeste embedded systemen nemen de hierboven geschetste programmeerbare (configureerbare) componenten slechts een klein fysiek deel van het geheel in. Het embedded systeem moet immers communiceren met de buitenwereld en van voeding worden voorzien. Daarvoor zijn allerlei interface schakelingen (voor bijvoorbeeld analoog, PWM, spanning, stroom, seriële interface, galvanische scheiding, relais, trafo’s, display’s, druktoetsen) en schakelingen voor EMC (filters: LC, RC, ferriet) nodig. De signaalverwerking en de gebruikers- interactie wordt echter voor het grootste deel bepaald door de programmeerbare bouwstenen.

Embedded software

Dezelfde verscheidenheid die we bij de embedded systems tegenkomen zien we natuurlijk ook weer terug bij de embedded software. Een belangrijk gemeenschappelijke kenmerk is echter dat embedded software foutloos moet zijn. Het wordt in een product vastgelegd en is daarna niet meer te wijzigen. PC software heeft altijd wel enkele meer of minder hinderlijke “bugs”. De echt hinderlijke bugs kunnen worden gerepareerd door een “maintenance”-programma op diskette te versturen. De minder hinderlijke bugs laat men zitten tot de “volgende versie” van het programma uitkomt. Bij embedded software is dit onmogelijk zo niet ongewenst: Wanneer bijvoorbeeld een electronisch brandstofinspuitsysteem van een auto in bepaalde omstandigheden niet goed blijkt te functioneren, dan moeten alle auto’s van dat type worden teruggehaald naar de garage om van nieuwe software te worden voorzien. En dan mag je hopen dat deze systemen zijn uitgerust met een flash-geheugen, zodat de software kan worden gewijzigd via de diagnose connector. Zo niet, dan moet wellicht de gehele electronica worden vervangen!

Wat is er speciaal aan embedded software?

De reden dat embedded software wordt onderscheiden van “gewone” software is dat er aan embedded software speciale eisen worden gesteld. Dit kunnen we illustreren door op een aantal punten de vergelijking tussen embedded software en PC software te maken:

Ontwikkeling

  • De ontwikkelomgeving en het product waar de software in moet lopen zijn beide de PC. Omdat het platform zo wijd verbreid en gestandaardiseerd (denk aan het Windows operating system) is, worden er over de gehele wereld softwarecomponenten ontwikkeld, terwijl de ontwikkelhulpmiddelen ook steeds completer en intelligenter worden.
  • Embedded software wordt geschreven en gecompileerd met een PC, maar moet lopen in de embedded hardware. Deze hardware is bij elk product weer anders en de software architectuur moet steeds worden aangepast aan de uit te voeren functies in soft- en hardware. Simulatie van de werking van het product op de PC is kostbaar en zal vaak hoogstens voor deelproblemen worden overwogen.

Geheugenruimte

  • Een PC heeft een enorme geheugenruimte in de vorm van tientallen megabytes werkgeheugen en enkele gigabytes harddisk-geheugen. Indien nodig is deze capaciteit tijdens de softwareontwikkeling ook nog eenvoudig uit te breiden.
  • Embedded systemen hebben vergeleken met PC’s een uiterst beperkte geheugenruimte. Deze kan variëren van een halve kilobyte tot enkele megabytes. Dit vergt vaak een radicaal andere benadering van de softwarearchitectuur.

Testen

  • Door de uitgebreide mogelijkheden van een PC is het redelijk eenvoudig om de interne werking van de software in alle facetten te volgen.
  • Van embedded software is de interne werking veel moeilijker te controleren. Emulatoren werden wel gebruikt, maar zijn kostbaar en raken door de steeds nieuwere en complexere devices snel verouderd en zijn daardoor vaak oneconomisch. Simulaties kunnen dienen voor verificatie van delen van de software. Wanneer een seriëel kanaal ter beschikking staat en er in de software (bijvoorbeeld in het operating systeem) testmogelijkheden zijn ingebouwd is via deze weg de interne werking te controleren.

Laden van de software in het product

  • Voor de PC wordt software gedistribueerd op floppy, CD-ROM of via modem. De PC heeft altijd één of meer van deze media ter beschikking om programma in te lezen.
  • Embedded systems zijn niet voorzien van een floppy- of CD-ROM drive. Software kan worden geladen door programmering door de IC-fabrikant (mask programmed), door programmeren met een programmeerapparaat, door in-circuit programmeren (bijvoorbeeld via een JTAG interface) of via een seriëel kanaal (koperdraad, infra-rood of RF).

Wijzigen (verbeteren of uitbreiden) van de software

  • Distributie van software wijzigingen (“updates”) voor een PC gebeurt op de zelfde wijze als bij nieuwe software.
  • De meeste embedded software wordt éénmaal geprogrammeerd en wordt daarmee onderdeel van de hardware en kan nooit meer worden gewijzigd. In sommige gevallen wordt nog gebruik gemaakt van geheugen chips welke kunnen worden uitgewisseld. Dit is echter ongunstig omdat de chips dan door niet-gespecialiseerd personeel moeten kunnen worden vervangen. Door de steeds verdergaande miniaturisatie wordt het tevens steeds moeilijker om uitwisselbare chips te gebruiken. Herprogrammeren is wel mogelijk wanneer flash- (of EEPROM-) geheugens worden toegepast, waarbij nieuwe data via een seriële link wordt getransporteerd.

Ontwikkelaars

  • Voor softwareontwikkelaars is de werkomgeving in de PC een vrij abstract gegeven. Het schrijven van hardware-gerelateerde device-drivers is slechts voor een beperkt aantal weggelegd.
  • Embedded software heeft een veel intensievere interactie met de hardwareomgeving. Dit is voor pure softwaremensen vaak een onoverkomelijk probleem. Goede embedded softwareontwikkelaars zijn dan ook schaars.

Betrouwbaarheid

Embedded systems moeten niet alleen foutloos werken, ze moeten ook foutloos blijven werken. Wanneer een PC vastloopt, kan men deze herstarten en is men hoogstens wat gegevens kwijt. Een TV kan men wel herstarten door de spanning te onderbreken. TV afstandsbedieningen kunnen weer op gang worden gebracht door de batterij tijdelijk uit te nemen. Calculators hebben meestal een harde reset via één van de drukknoppen. Het wordt door de gebruiker echter niet getolereerd wanneer dit vaker dan een enkele keer in de levensduur voorkomt. Embedded systems moeten eigenlijk onder alle omstandigheden blijven functioneren. In kritische gevallen zal er redundantie en extra hard- en software moeten worden ingebouwd om aan de betrouwbaarheidseisen te kunnen voldoen (denk bijvoorbeeld aan medische apparaten, gasbranderautomaten, remsystemen, raketten en satellieten).

Testen is een belangrijk middel om te verifiëren dat het product juist werkt en juist reageert op ongewoon of onverwacht gebruik of onverwachte gebeurtenissen, zoals statische ontlading of andere stoorsignalen, welke de normale programmaloop kunnen verstoren. Wanneer tijdens het testen van een nieuw ontwikkeld product een fout of probleem wordt ontdekt moet de oorzaak ervan natuurlijk direkt worden opgespoord en uitgeschakeld. Veel belangrijker is echter dat tevens meteen de oorzaak van het ontstaan van de fout wordt onderzocht: fouten mogen eigenlijk niet worden weggetest maar dienen systematisch te worden voorkomen.

Software technieken om de kwaliteit in de hand te houden zijn bijvoorbeeld:

  • Gebruik van een operating system ook in de simpelste microcontrollers.
  • Gebruik van object oriënted programming technieken: Gebruik van afzonderlijke modules, welke op een volstrekt doorzichtige wijze met elkaar communiceren.

Er zijn procedures nodig:

  • Noodzakelijk voor consistentie in methoden.

Er is R&D nodig:

  • Voor het beoordelen van nieuwe softwarepakketten.
  • Het uitwerken van nieuwe ontwikkelmethoden.
  • Het oplossen van generieke problemen.

Hardware/software technieken zijn bijvoorbeeld:

  • Gebruik van goede reset, power-down en brown-out protectie schakelingen.
  • Gebruik van Watchdog circuits. Watchdog hardware bestaat uit een timer die door de correct lopende software van tijd tot tijd koest wordt gehouden (gereset). De bedoeling is dat, wanneer dit niet meer gebeurt, de timer autonoom afloopt en de schakeling weer in een gecontroleerde toestand brengt.

Watchdog circuits alleen zijn volmaakt ontoereikend om het goede verloop van alle software te garanderen. Het komt wel voor dat de watchdog door een deel van de software wordt koest gehouden, terwijl een ander deel van de software niet meer correct functioneert. De watchdog hardware dient daarom ten allen tijde te worden gecomplementeerd met software die permanent controleert of alle programma’s nog op de juiste wijze aflopen. Voorts dient te worden bepaald in welke staat het systeem moet terechtkomen na het actief worden van de watchdog. Het realiseren van een betrouwbaar watchdogsysteem dat zo alert mogelijk reageert op alle mogelijke verstoringen van het normale verloop van de programma’s, en naar de buitenwereld het doet voorkomen alsof er dan niets is gebeurd, vereist een gedegen inzicht in het verloop van het softwareproces en is beslist niet eenvoudig.

Een algemene techniek om tijdens de gehele ontwikkeling de kwaliteit in de hand te houden is het maken van een gedegen specificatie. Dat is niet de “functionele specificatie” die over de muur wordt gegooid. Dat is ook niet een specificatie waar zonodig een handtekening van de opdrachtgever onder moet. Dat is een zeer volledige specificatie, in duidelijke, voor normale mensen begrijpelijke taal. Hierin beschrijft men eerst de gehele context (fabrikant, gebruiker, markt, alternatieven, redenen van keuzes, enz.) waarin het product moet functioneren, zodat tijdens het uitvoeren van de ontwikkeling zo weinig mogelijk ad-hoc keuzes meer gemaakt moeten worden. Wanneer er toch nog keuzes gemaakt moeten worden, dan is het aan de hand van de duidelijk beschreven context mogelijk de implicaties van elke keuze voor alle facetten van het product kunnen doorzien (zie ook mijn lezing tijdens de Electronics’95; de tekst daarvan is te vinden op www.malotaux.nl).

Een andere belangrijke voorwaarde voor het realiseren van een goed product is de aanwezigheid van een interdiciplinair projectteam, waarin marketing, industriëel ontwerper, hardwareontwikkelaar, software-ontwikkelaar, mechanica-ontwikkelaar, producent en eventuele andere verantwoordelijke betrokkenen permanent kontakt met elkaar hebben om het beste resultaat te realiseren. Zodra één van deze betrokkenen niet geheel achter deze doelstelling staat, is het product gedoemd te mislukken.

Tenslotte is het goed om erop te wijzen dat het niet realistisch is bij een eerste product gebaseerd op embedded systems meteen het meest uitgekauwde resultaat te verwachten. Men moet altijd de learning-curve doorlopen, ervaring opdoen, fouten maken en daarvan leren. Bij elke nieuwe ontwikkeling kan men dan bouwen op de eerder opgedane ervaringen. Een manier om toch zo snel mogelijk state-of-the-art embedded systems in nieuwe producten te realiseren is het inschakelen van gespecialiseerde ingenieursbureaus. Een synergie tussen hun expertise en Uw markt- en productkennis levert dan sneller een beter resultaat.

Nadere informatie:
Ir. N.R. Malotaux
N R Malotaux – Consultancy
Bilthoven
tel: 030-228 88 68
fax: 030-228 88 69
e-mail: niels@malotaux.nl
Internet: http://www.malotaux.nl/nrm (bevat tevens het oorspronkelijke artikel)

Boeken over dit onderwerp

De IT Kersensensatie

Auteur: Mark Butterhoff
Balkenende moest in 2002 bezuinigen, ‘Eerst het zuur, dan het zoet’. Voor IT-organisaties wordt het tijd voor de zoete fase. Want IT komt bij de meeste bedrijven niet verder dan een zeventje.
Europrijs: 29,5
Bestellen

Functioneel beheer

Auteur: Kees Ruigrok
Functioneel beheer krijgt de laatste jaren meer en meer de erkenning die het verdient. Want met de automatisering van veel processen in bedrijven, hebben organisaties steeds vaker behoefte aan een schakel tussen de gebruikerskant (de afnemers belanghebbenden bij van de informatievoorziening) en de technische kant (de leveranciers aanbieders van ICT-services en -producten). Die schakel is Functioneel beheer. Dit boek laat zien wat daar allemaal bij komt kijken. In ‘Functioneel beheer’ staan een aantal handige modellen en technieken, waarmee de functioneel beheerder zijn of haar voordeel kan doen.
Europrijs: 37,95
Bestellen

Meer boeken over embedded software vinden.


-- Printbare PDF-versie --


No votes yet.
Please wait...

Aanvullingen

Geef zelf een aanvulling.

Geef een aanvulling

Licentie: Creative Commons (Naamsvermelding/Gelijkdelen)

Checklisten: Geen
Sidebar