Single chip modem in twee weken
De ontwikkeling van embedded systemen is één van de meest uitdagende softwareontwikkelingsdisciplines, vooral als het gaat om de ontwikkeling van besturingssystemen en apparaten. Deze vorm van softwareontwikkeling is cruciaal omdat het fungeert als poortwachter voor alle andere softwareontwikkelingsactiviteiten. Een netwerkapplicatie kan niet ontwikkeld worden als uw Ethernet-stuurprogramma nog niet bestaat. U kunt zich geen zorgen maken of Arial black het juiste lettertype voor uw grafische gebruikersinterface is, wanneer het grafische stuurprogramma een deadlock veroorzaakt. En soms kunt u uw nieuwe hardware niet aan een belangrijke klant demonstreren, omdat deze nog geen opstartbaar besturingssysteem heeft.
Een uitdagend verzoek
Strypes’ relatie met één van onze opdrachtgevers begon met een uitdagend verzoek: een relatief nieuw product, een single chip modem voor het automotive domein, moest in twee weken tijd gedemonstreerd worden aan een belangrijke klant in een ander werelddeel. Er was al een mooie evaluation single board computer rond de modem gebouwd die goed werkte met een Linux-gebaseerd besturingssysteem. Voor deze specifieke klant moest echter een systeem gedemonstreerd worden dat gebaseerd was op een real-time besturingssysteem genaamd QNX. Kritisch hierbij was dat dit nieuwe draadloze modem met de hostprocessor via een databus met de naam SDIO verbonden was, maar er was geen SDIO-stuurprogramma beschikbaar in QNX.


Een schijnbaar onmogelijke taak
Onze opdrachtgever probeerde al een paar maanden een SDIO driver voor QNX te bouwen. Nu de deadline snel dichterbij kwam, was er actie nodig om te voorkomen dat de deal-no-deal meeting met hun klant op een mislukking zou uitlopen. Men besloot een beroep te doen op Strypes.
Het team van Strypes had op dat moment nog weinig ervaring met SDIO en QNX en de opdrachtgever vroeg om een schijnbaar onmogelijke taak: het ontwikkelen van een driver voor onbekende hardware, in minder dan twee weken tijd. Een taak die ze zelf nog niet voor elkaar hadden gekregen in een veel langere tijdsspanne. Eén van de ’motto’s van Strypes is echter ‘als Strypes het niet kan, dan kan niemand het’. Complexe en uitdagende projecten worden daarom door ons omarmd, omdat ze ons de beste mogelijkheden bieden om waarde toe te voegen voor onze klanten en om ons te onderscheiden. Deze uitdaging was daar een goed voorbeeld van.
De aanpak
Twee collega’s van ons Strypes Development Center in Lissabon vlogen naar Nederland voor een laatste all-hands-on-deck inspanning op locatie van onze opdrachtgever. Alhoewel ze al een niet-werkende prototype-driver hadden ontwikkeld, besloot het team een tweeledige aanpak te volgen: enerzijds probeerden ze om de bestaande driver te repareren en anderzijds besloten ze om een nieuwe driver van scratch af aan te ontwikkelen. De reden hiervoor is dat het vaak moeilijk is om in zo’n kort tijdsbestek in de ongedocumenteerde code van een ander te duiken. Al na een paar dagen had het team een eerste succes toen het in staat was om beide SDIO-drivers in werkende staat te brengen, zij het met nog een beperkte set functies. Het team besloot om door te gaan en zich te concentreren op de nieuwe driver.
Mijlpaal bereikt
Doorwerken in het weekend was noodzakelijk om het systeem op tijd klaar te hebben voor aanvang van de reis naar de demonstratiebijeenkomst bij de klant van onze opdrachtgever. De locatie van de klant was tijdens het weekend echter niet beschikbaar en de ontwikkelopstelling werd verplaatst naar de hotelkamer van één van de Stryperts. Vóór het einde van het weekend werd een belangrijke mijlpaal bereikt: de SDIO driver was nu stabiel genoeg om de firmware van de modem succesvol te laden.
Na een week hard werken was het systeem klaar om getest te worden met wat basismodemfunctionaliteit. Het team ontdekte echter al snel dat door een configuratiemanagementfout de API-versie van de firmware niet overeenkwam met die van de modemdriver aan de hostkant (die bovenop de SDIO-driver zit). Omdat het ontwikkelingssysteem de volgende ochtend voor de vlucht moest worden ingepakt, was er geen tijd voor een goede oplossing. Gelukkig waren de wijzigingen in de API klein genoeg voor wat code hacking om een demonstratie van de basisfunctionaliteit op te zetten.
Het resultaat
In een week tijd was het Strypes team in staat om een interrupt en een DMA enabled idiomatic SDIO driver voor QNX te ontwikkelen, waardoor onze opdrachtgever met succes zijn QNX-gebaseerde modemdemonstratie kon doen. Tijdens dit proces ontdekte het Strypes team dat het modemapparaat niet voldeed aan de SDIO-standaard, wat de eerdere ontwikkelingspogingen van het stuurprogramma had belemmerd. Daarnaast waren er verschillende inconsistenties met de beschikbare documentatie. Door interne communicatiefouten waren deze eigenaardigheden en non-conformiteiten niet gemeld aan de relevante belanghebbenden, die zich hiervan dus niet bewust waren tot het moment dat Strypes ingreep. Uiteindelijk kreeg de klant van Strypes naast een werkende SDIO-driver ook een aantal niet-SDIO-gerelateerde verbeterpunten, wat uiteindelijk leidde tot een nieuwe, verbeterde herziening van de hardware.
Strypes heeft met deze uitdaging een schijnbaar onmogelijke taak vastgepakt en heeft daarmee de verwachtingen van onze opdrachtgever overtroffen.
Strypes maakt het verschil
Een organisatie die werkelijk het verschil maakt, is er in onze visie op gericht om klanten zo goed mogelijk te bedienen en ervoor te zorgen dat medewerkers zich maximaal ontwikkelen en zich betrokken voelen bij de onderneming. Groei en winst voor de organisatie zijn afgeleiden van groei en winst voor onze opdrachtgevers en onze medewerkers, en dus geen doel op zich.
Benieuwd naar hoe het is om bij Strypes te werken? Neem contact met ons op.