Zephyr native simulatie versnelt de ontwikkeling van CoffeeCaller
op
Zephyr native simulation stelt het CoffeeCaller-team in staat om een groot deel van de embedded applicatie op een gewone hostcomputer te bouwen en te testen, zonder het doel-board steeds opnieuw te flashen. De workflow is gekoppeld aan het open-hardware CoffeeCaller nRF52840-bord, een koffiepauzecoördinator die is uitgegroeid tot een ontwikkelplatform met knoppen, indicator-leds, WS2812 RGB-leds, een buzzer, sensoren en vrije headers.
Zephyr native simulation zonder het doel-board
In deze Elektor-videoclip legt hardwareontwikkelaar Andreas Kurz uit hoe softwareontwikkelaar Stefan Kraus de applicatie heeft opgebouwd zodat deze gecompileerd kan worden voor Zephyr's native_sim-board en uitgevoerd kan worden op de ontwikkel-pc. In plaats van na elke wijziging op het fysieke board te wachten, kan het team de applicatielogica snel op de host testen en periodiek naar de nRF52840-hardware overstappen voor bevestiging.
De native simulator van Zephyr emuleert de nRF52840 zelf niet. Hij bouwt de Zephyr-kernel, bibliotheken en applicatie als een gewone Linux-executable. Dat onderscheid is belangrijk: de simulator is het meest geschikt voor software die duidelijk gescheiden is van hardwarespecifiek gedrag, wat precies is wat de CoffeeCaller-architectuur nastreeft.
Mock-drivers houden de applicatie testbaar
Een host-pc heeft doorgaans geen strip WS2812-leds aangesloten. Kraus schreef daarom een mock-led-strip-driver die dezelfde API implementeert als de applicatie verwacht. Tests kunnen een virtuele knop indrukken, gele leds opvragen en controleren of de bytes die via de interface worden verstuurd in de juiste volgorde aankomen. De mock kan signaaltiming of elektrisch gedrag niet aantonen, maar vangt wel fouten in de toestandsmachine, de API en de datavolgorde op voordat het doel-board in gebruik wordt genomen.
De publieke CoffeeCaller-softwarerepository bouwt zowel voor native_sim als voor het custom bord en bevat meerdere testniveaus. Daarmee is het project meer dan een demonstratie van een RTOS-functie: het is een praktisch voorbeeld van het ontwerpen van firmware rondom vervangbare subsystemen, in plaats van elk applicatiecomponent rechtstreeks toegang te geven tot fysieke randapparatuur.
Flexibele hardwareontwikkeling
Het bredere doel van het team is om de hardwareontwikkeling minder een stop-start-activiteit te maken. Hardwarerevisies kunnen maanden in beslag nemen, terwijl softwareteams ondertussen voortgang moeten boeken. Met gesimuleerde doelen, mock-drivers, modulaire subsystemen en pinheaders voor het toevoegen van randapparatuur kan het softwarewerk doorgaan terwijl de volgende printplaatrevisie nog wordt ontworpen of geproduceerd.
Zephyr Safety Architect Tobias Kästner droeg ook ideeën bij over wendbare hardwareworkflows en hielp mee om wat begon als een klein kantoorgadget te veranderen in een gedeeld ontwikkelspeelveld. De praktische les is niet dat echte hardware optioneel is. Het is dat ingenieurs hardwaretijd moeten reserveren voor fouten die alleen hardware kan onthullen, in plaats van het bord te gebruiken als dure vervanger voor gewone softwaretests. Zephyr native simulation geeft CoffeeCaller een snellere feedbackcyclus, en het project laat zien hoe dat eruitziet wanneer de architectuur er van meet af aan op is ingericht.

Discussie (0 opmerking(en))