Toen Johan Oedzes begon aan de Embedded Linux-cursus aan het High Tech Institute, was hij geen absolute beginner in het onderwerp. Terugkijkend op zijn reis zegt hij echter: “Ik heb er spijt van dat ik de cursus niet eerder heb gevolgd.”
“De combinatie van software en elektronica heeft altijd mijn interesse gewekt vanwege de interactie met de tastbare wereld”, zegt Johan Oedzes. Deze interesse leidde hem naar de Universiteit Twente, waar hij zijn bachelor elektrotechniek afrondde en zich vervolgens verdiepte in het vakgebied met een master embedded systems.
Na zijn afstuderen kreeg Oedzes een baan bij een groot bedrijf in Hengelo, waar hij zich richtte op C++ software engineering op Linux, zij het niet in de embedded zin, legt hij uit. “Hoewel ik daar veel heb geleerd, begon het me tegen te staan dat ik niet aan embedded systemen werkte. Ik had ook het gevoel dat ik opereerde binnen de beperkingen die anderen hadden bedacht. Ik wilde ook het innovatieve en verkennende deel van engineering doen.”
Een van zijn meer ervaren collega’s deelde het gevoel van Oedzes en stapte over naar Beeliners, eveneens gevestigd in Hengelo. De twee hielden contact en zijn ex-collega vroeg Oedzes of hij zijn contactgegevens mocht delen met de eigenaren van het bedrijf. Toen commercieel directeur Dennis Wissink twee jaar geleden belde, besloot Oedzes de stap te wagen en ging hij bij Beeliners aan de slag als embedded software engineer.
E-mobiliteit
Beeliners sloot meteen aan bij de interesses van Oedzes, zegt hij. “Al onze producten combineren een hardwareontwerp met embedded software-engineering om een prototype te maken of een proof of concept af te leveren voor onze klanten. Dergelijke projecten kunnen bestaan uit compacte medische apparaten, intelligente fitnessapparatuur of innovatieve e-mobiliteitsapparaten. Momenteel werk ik aan een product in de e-mobiliteitssector.”
Een van Beeliners’ klanten was niet tevreden met een externe e-mobility controle-eenheid en benaderde het bedrijf voor een oplossing. Op vraag van de klant begon Beeliners met de ontwikkeling van een eigen oplossing. De controle-eenheid is verbonden met twee externe systemen: het e-mobility toestel enerzijds en het internet anderzijds. De internetverbinding maakt communicatie met een backend server en ontvangst van firmware-updates mogelijk.
“We hebben het systeem in twee delen opgesplitst,” legt Oedzes uit. “Alles wat real-time gedrag nodig heeft en strikte timingvereisten heeft, draait op een subsysteem met een microcontroller, dat interfaced met het e-mobility apparaat. De code voor de backend-verbinding, de webinterface en de bedrijfslogica van het product draaien op een ingebed Linux-systeem met een C++-toepassing.”
''Jasper asked me the right questions, like: what problem are you trying to solve, what threats do you want to protect against, is your web interface externally accessible? It’s actually all quite logical, but I learned a lot by reasoning about our product with him''
Flexibiliteit
Hoewel hij al enige ervaring had met het gebruik van embedded Linux-systemen tijdens zijn studie aan de universiteit, was het opzetten ervan onbekend terrein voor Oedzes. Het was tijdens het e-mobiliteitsproject bij Beeliners dat hij zichzelf bijschoolde en met succes een op maat gemaakt embedded Linux-systeem maakte op basis van het Yocto-project. “Er is veel informatie te vinden over tools om embedded Linux distributies te maken, zoals Yocto en Buildroot. Het was even zoeken en experimenteren, maar uiteindelijk hadden we een werkend systeem, zelfs inclusief functionaliteit voor updates op afstand.”
“Op dat moment leek Yocto de meest geaccepteerde oplossing. Gerenommeerde bedrijven die werken aan embedded Linux gebruikten het en veel softwareleveranciers bieden een Yocto-recept om pakketten van hun software te maken met Bitbake. Recepten zijn een krachtig concept en het is een van de redenen om Yocto te kiezen voor dit project.”
Omdat dit de eerste keer was dat ze een embedded Linux systeem maakten, hadden Oedzes en zijn collega’s een aantal vragen: “Hoe weet ik dat mijn product goed is? Doet mijn embedded Linux systeem wat het moet doen? Is het veilig?” Beeliners was al begonnen met een eerste veldtest met een werkend prototype, maar ze wilden eerst hun aanpak valideren voordat ze het product definitief maakten.
Aanvankelijk dacht Beeliners erover om externe expertise in te huren voor een uitgebreide evaluatie. Ze wilden echter een snellere, lichtere aanpak en gaven er de voorkeur aan om deze expertise intern op te bouwen, benadrukt Oedzes. “Deze zoektocht naar kennis bracht ons ertoe om trainingsopties te onderzoeken. Gezien een eerdere positieve ervaring van een van onze collega’s met de cursus ‘Good software architecture‘ van High Tech Institute, gingen we op zoek naar een vergelijkbaar programma voor embedded Linux, en we ontdekten dat zij er een hadden.”
''If I had enrolled in the course earlier, maybe we would have still chosen Yocto, but we would have certainly given more consideration to Buildroot.''
Omdat Oedzes geen absolute beginner was op het gebied van embedded Linux, vroeg hij zich af of de cursus relevant voor hem was. “We hadden een conference call met Jasper Nuyens, de trainer van de cursus, die naar onze vragen luisterde. Hij concludeerde dat we goed op weg waren, maar dat we nog wat hiaten hadden in onze kennis van de basisprincipes van embedded Linux en de vuistregels in dit domein. Hij verzekerde ons ook van de flexibiliteit van de cursus om tegemoet te komen aan onze specifieke vragen.” Oedzes schreef zich daarom in voor de embedded Linux-cursus.
Betere beslissingen
Tijdens het volgen van de embedded Linux cursus bleef Oedzes profiteren van Nuyens’ ervaring. Het onthulde hem dat Buildroot mogelijk geschikter zou zijn geweest voor zijn use case. “Als ik me eerder had ingeschreven voor de cursus, hadden we misschien nog steeds voor Yocto gekozen, maar we zouden zeker meer rekening hebben gehouden met Buildroot.”
Yocto blinkt uit in gebruikssituaties waar verschillende apparaten elk een hardware-specifieke configuratie vereisen, evenals een gemeenschappelijk onderdeel. Je kunt dan een Yocto project bouwen met verschillende subconfiguraties voor elk apparaat om een aangepast Linux image te maken, legt Oedzes uit. “Dit is een krachtige aanpak, maar we hadden dit niet nodig voor onze use case: het heeft één apparaat en slechts een paar kleine hardware revisies. Yocto was geen slechte keuze, maar tijdens de cursus leerde ik dat Buildroot beter zou hebben gepast.”
Tijdens de cursus kon Oedzes ook verschillende beveiligingsaspecten van zijn e-mobiliteitsproject bespreken. “Jasper stelde me de juiste vragen, zoals: welk probleem probeer je op te lossen, tegen welke bedreigingen wil je je beschermen, is je webinterface extern toegankelijk? Het is eigenlijk allemaal heel logisch, maar ik heb veel geleerd door met hem over ons product te redeneren.”
Achteraf gezien zou Oedzes potentiële deelnemers aanraden om eerder met de embedded Linux cursus te beginnen dan hijzelf heeft gedaan. “Als je weet dat je een embedded Linux systeem nodig hebt in je product en je hebt enige C/C++ programmeerervaring, dan is de cursus enorm waardevol. Jasper behandelt verschillende opties en legt uit voor welke use cases elk van hen geschikt is.”
Oedzes vond ook Nuyens’ uitleg over het cross-compileren van software voor een andere doelarchitectuur heel goed voor beginners. “Ja, dit zelf uitzoeken is mogelijk, maar als je begint met embedded Linux biedt een cursus als deze een bemoedigende voorsprong en waarschuwt je voor veelgemaakte fouten.”
Hoewel Oedzes al ervaring had met embedded Linux, wapende de cursus hem met belangrijke tips en inzichten. “Ik maakte mezelf vertrouwd met nieuwe tools en verzamelde Jasper’s waardevolle advies over ons e-mobility project. De ervaring van ons huidige project gekoppeld aan de inzichten uit deze cursus geven me veel meer vertrouwen om betere beslissingen te nemen voor Beeliners toekomstige embedded Linux projecten.”
Dit artikel is geschreven door Koen Vervloesem, freelancer voor Bits&Chips.
Recommendation by former participants
By the end of the training participants are asked to fill out an evaluation form. To the question: 'Would you recommend this training to others?' they responded with a 8.6 out of 10.
