Wat is embedded software?

‘Wat is embedded software?’ is een veelgestelde vraag. De wereld en de maatschappij om ons heen worden gevormd en bestuurd door systemen die op microprocessoren zijn gebaseerd – pacemakers, mobiele telefoons, huishoudelijke apparaten, auto’s, spoorwegcontrolesystemen, satellieten – de lijst is bijna letterlijk eindeloos. Zonder hen zou er geen energie, stromend water of voedselvoorziening zijn. Zaken doen of vervoer zou onmogelijk zijn. Ziekten zouden zich verspreiden en de samenleving zou snel desintegreren.

De software die in deze systemen wordt uitgevoerd, wordt embedded software genoemd. Dit is computersoftware die is ingebouwd in hardwaresystemen die zijn geschreven om machines of apparaten te besturen. Ingebedde software is typisch ontworpen voor de specifieke hardware waarop het draait en voert vaak een specifieke functie uit, hoewel een enkel stuk hardware meerdere ingebedde softwareprogramma’s kan bevatten.

Elk stuk technologie dat printplaten en computerchips heeft, zal waarschijnlijk ingebedde software erin hebben. Fabrikanten verwerken ingebedde software in de elektronica van bijvoorbeeld auto’s, telefoons, modems, apparaten, speelgoed, beveiligingssystemen, pacemakers, televisies en set-top boxes, en digitale horloges.

Ingebedde software maakt veel van de geavanceerde functies mogelijk die gebruikelijk zijn in moderne apparaten. Hoewel embedded software zeer eenvoudig kan zijn, kan het ook zeer geavanceerd zijn in toepassingen zoals procescontrolesystemen, militaire bewapening en vliegtuigen.

Geschiedenis van embedded software

De meeste innovatieve technologie, wordt vaak gefinancierd, onderzocht en ontwikkeld voor militaire toepassingen en embedded systemen werden gebruikt in de ruimteverkenning, raketgeleiding en vliegtuigelektronica van eind jaren ’30 tot halverwege de jaren ’60. Pas aan het eind van de jaren ’60 ontwikkelde embedded software zich tot het punt waarop zij ook bruikbaar werd voor mensen buiten deze specialistische gebieden.

In de jaren ’70 zorgden de eerste geïntegreerde microcontroller chips, zoals de Intel 8008, ervoor dat embedded software een hoge vlucht nam. Deze enkele chip fungeerde als een piepkleine computer; hij kon gegevens uit de werkelijkheid lezen, verwerken en outputs genereren, gecontroleerd door een flexibel softwareprogramma. Met deze chips werd het mogelijk één enkel programma te schrijven, het in de chip te laden en vervolgens de chip het programma te laten uitvoeren telkens wanneer hij de juiste input ontving. Tegen het einde van de jaren tachtig was in bijna elke consumentenelektronica wel een of andere microcontrollerchip ingebouwd.

In de daaropvolgende jaren zijn de productiekosten van geïntegreerde microcontrollers gedaald tot een peulenschil. Als gevolg daarvan zitten ze in bijna elk elektronisch apparaat, en elk van deze chips heeft een of meer stukjes ingebedde software. Ze zitten zelfs in voorwerpen waarvan de meeste mensen niet zouden denken dat er computers in zitten, zoals broodroosters, elektrische ventilatoren of kinderspeelgoed.

De uitdagingen in ingebedde software

Ingebedde software maakt per definitie deel uit van een groter hardwaresysteem, of het nu een auto, een pacemaker of een industrieel automatiseringssysteem is. Niet alleen werken deze systemen in real time en moeten zij onder alle omstandigheden de ontworpen actie binnen een bepaalde tijd uitvoeren, maar zij moeten ook werken met beperkte middelen, zoals weinig geheugenruimte, beperkte gegevensverwerkingscapaciteit of een laag stroomverbruik. Ingebedde software moet zich ook aanpassen aan een breed scala van veranderingen in de omgeving. Processoren, sensoren en hardwareonderdelen veranderen in de loop van de tijd, terwijl de software nagenoeg dezelfde blijft. Bovendien vereist de software draagbaarheid, autonomie, flexibiliteit en aanpasbaarheid.

Betrouwbaarheid is van het grootste belang. Onverwacht gedrag van een ingebed systeem kan de gebruiksomgeving ernstige schade toebrengen. Omdat eindgebruikers van ingebedde systemen gedrag op lange termijn verlangen, moet ingebedde software tientallen jaren zonder onderhoud kunnen functioneren.

Omdat ingebedde software nauw verbonden is met kritische omgevingen en levensbedreigende risico’s, is veiligheid eveneens een essentiële vereiste. De levenscyclus bij de ontwikkeling van ingebedde software wordt beheerst door normen die een hoge kwaliteit en sterke engineering- en beheersprocessen vereisen. De combinatie hiervan met het gebruik van de modernste technologieën stelt hoge eisen aan de technische deskundigheid en het professionalisme die van ingenieurs in ingebedde software worden verlangd. Naarmate de omvang en complexiteit van ingebedde software toeneemt, moeten de normen die op het softwareontwikkelingsproces worden toegepast voortdurend worden verbeterd, ondanks de sterke druk op de kosten.

De veiligheid wordt steeds belangrijker nu het “internet van dingen” betekent dat ingebedde systemen op steeds grotere schaal worden gebruikt en onderling steeds sterker verbonden zijn. Aangezien alledaagse apparaten zoals wasmachines en koelkasten standaard connectiviteit hebben, dreigt het internet van de dingen nieuwe niveaus van onveiligheid bloot te leggen en zijn er nieuwe ideeën nodig om malware en hackingdreigingen te helpen verijdelen.

Conclusie

Ingebedde software vergroot de variabiliteit, configureerbaarheid, uitbreidbaarheid en veranderbaarheid van alledaagse producten en maakt ook een grotere verscheidenheid aan functionaliteit mogelijk. Het is nu een fundamenteel onderdeel van veel dingen die we als vanzelfsprekend beschouwen in het dagelijks leven.

In de toekomst zal ingebedde software overal in zitten: in je geautomatiseerde huis, je intelligente auto, communicatie-infrastructuren, medische instrumenten en implantaten, en alomtegenwoordige controlesystemen. Nieuwe energiegerelateerde technologieën zullen de efficiëntie van elektrische stroomtransmissie verhogen en directe, effectieve manieren bieden om aan de energie- en klimaatbehoeften te voldoen.

Ingebedde systemen zullen niet langer worden gedefinieerd door de computerhardware die ze gebruiken. In plaats daarvan zullen ze worden ontworpen om elke functie uit te voeren om meervoudige en veranderende doelstellingen te bereiken, of het nu gaat om een microcontroller, een microprocessor, een signaalprocessor, een biologische assemblage, of een ander programmeerbaar logisch apparaat.

Hoe meer levenskwaliteit we wensen, hoe hoger de levensstandaard die we over de hele planeet willen vestigen, en hoe meer we beveiliging en veiligheid eisen, hoe meer we ingebedde software nodig hebben.