Diensten · Embedded
Embedded softwareontwikkeling, van eerste boot tot productie.
Ik schrijf de software die op het apparaat zelf draait. De firmware in de kern, de drivers eronder, en de tooling die een build getest, gesigneerd en het veld in krijgt. Het meeste van dat werk zit in producten met een lange levensduur, waar een snelle bocht in het eerste jaar in het vijfde jaar nog steeds geld kost.
Hoe het werk eruitziet
Productfirmware
Bare-metal C op ARM Cortex-M (NXP LPC18xx, LPC11xx en LPC17xx, TI TM4C, Atmel) en op aanverwante platformen zoals ESP32. Greenfield als het board nieuw is, en net zo vaak het andere geval: een bestaande codebase die moet blijven uitleveren terwijl er onder de motorkap aan gewerkt wordt.
Hardware bring-up en drivers
De lus van schema naar driver: schema lezen, datasheet lezen, driver schrijven, en er dan een scope of analyzer op zetten om te controleren of de hardware het met de code eens is. Nieuwe chips komen omhoog vanaf de PDF, en de eerste boot op een nieuwe board-revisie is meestal waar de interessante problemen zitten.
Een vastgelopen bring-up
Een board dat niet wil booten, een interface die op de bench werkt en in het veld faalt, een storing die alleen in het rack van de klant opduikt. Dit komt meestal binnen als het halfafgemaakte project van iemand anders, en de eerste klus is scheiden wat werkelijk stuk is van wat alleen maar werd aangenomen.
Protocollen en interfaces
Verbindingen tussen apparaten onderling en tussen apparaat en host, waar de standaardoplossing niet past: control-protocollen over UDP, BLE tussen microcontrollers, HTTP- en REST-interfaces die het apparaat zelf serveert, seriële verbindingen naar een FPGA.
Test-, build- en release-tooling
Firmware die lastig te updaten is, moet kloppen voordat hij de deur uit gaat. Dat betekent CI die elke branch bouwt, een testsuite die tegen echte hardware draait in plaats van tegen een simulator, gesigneerde images, en een release-flow die de hele volgorde afwerkt zonder dat iemand een stap hoeft te onthouden.
Productietest-firmware
Een codebase los van de productfirmware, met andere randvoorwaarden. Hij draait één keer per board aan de lijn, moet hard falen in plaats van netjes, en zijn taak is een slechte soldeerverbinding vinden voordat het board in een doos zit.
Hoe het meestal begint
Drie vormen dekken het meeste.
Een afgebakend probleem
Iets specifieks en aanwijsbaars: een driver die er moet komen, een interface die zich misdraagt, een board dat niet omhoog wil. Vooraf afgebakend, opgeleverd, klaar.
Ontwikkelpartner voor langere tijd
Naast een productteam meelopen zolang een programma duurt, waarbij ik de embedded kant draag en het team het product. In deze vorm loopt het meeste van mijn werk voor Pulse-Eight.
Een second opinion
Een review voordat het geld vastligt: architectuur, schema, of de teststrategie voor een board dat bijna in productie gaat. Vaak een dag of twee, en het meest waard zolang de beslissingen nog kunnen schuiven.
Waar dit vandaan komt
Voor Pulse-Eight ben ik hoofdauteur van de firmware over hun productlijnen heen. Het meeste daarvan is MatrixOS, het firmware-OS waarop hun slimme producten draaien: de OneIP AV-over-IP familie, de neo matrix-reeks en de ProAmp-versterkers starten allemaal op hetzelfde platform. Daaromheen zitten de bootloaders met signed OTA over meerdere board-varianten, en de productietest-firmware daarachter.
Vóór het embedded werk was het backend- en serversoftware, en dat is onderdeel van het vak gebleven. De meeste embedded producten hebben tegenwoordig een cloudkant, en het scheelt als dezelfde persoon aan beide uiteinden van het protocol zit.
Daarnaast ben ik de oorspronkelijke auteur en hoofdmaintainer van libCEC, de HDMI-CEC-library die in vrijwel elke Linux-distributie zit en onder Kodi, LibreELEC en OSMC draait. Hij staat sinds 2011 in het veld, op hardware die ik niet in de hand heb, in gesprek met televisiefirmware waar ik niet tegenaan kan testen. Dat is een nuttige leerschool voor dingen die het contact met de werkelijkheid moeten overleven.
Bespreek het
Heeft u een board dat nog software nodig heeft, of software op een board die zich niet gedraagt? Een kort gesprek is meestal genoeg om te bepalen of ik daarvoor de juiste persoon ben.
Plan een kennismakingsgesprek →