← Startside
Teknologier og platforme
Programmeringssprog, hardwareplatforme, bus-systemer og værktøjer — valget følger projektkravene, ikke mine præferencer.
Denne side giver et kompakt overblik over de teknologier, jeg arbejder med. Listen er ikke udtømmende — den nævner de platforme, sprog og værktøjer, der ofte forekommer i mine projekter, eller som jeg betragter som særligt relevante for embedded-udvikling. Hvis din specifikke platform ikke optræder her, betyder det ikke nødvendigvis manglende erfaring; i embedded-projekter overføres koncepter ofte til andre platforme, så snart opgaven er klar.
Sprog
1. Programmerings- og hardwarebeskrivelsessprog
Sprogvalg efter opgaven: hardwarenært og ressourcebesparende i C eller assembler, objektorienteret i C++, FPGA-logik i VHDL og SystemVerilog, værktøjer og analyse i Python.
- C — hovedsprog til mikrocontrollerens firmware, fra bare-metal til FreeRTOS
- C++ — til mere komplekse embedded-applikationer med objektstrukturer, MISRA-konformt om nødvendigt
- Assembler — under ekstreme randbetingelser, til hardwaredrivere, opstartskode og reverse engineering
- VHDL — FPGA-designs med stærk strukturel klarhed
- SystemVerilog — moderne FPGA-udvikling, testbænke, verificering
- Verilog — klassisk FPGA-beskrivelse
- Python — testautomatisering, scripts, dataanalyse, web-backends
- Kotlin — til Android-apps som ledsagende til embedded-enheder
- JavaScript / HTML / CSS — web-frontends og konfigurationsgrænseflader
MCU
2. Mikrocontrollerplatforme
Erfaring med alle på embedded-markedet etablerede mikrocontrollerplatforme — fra højtydende ARM Cortex til omkostningsoptimerede Atmel-chips, som rene mikrocontrollere eller som kort-platforme som Arduino eller BeagleBone.
- ARM Cortex-M — standardplatformen til mellemhøje krav
- ARM Cortex-A — når Linux eller mere regnekraft kræves
- ESP32 — embedded-applikationer med Wi-Fi/Bluetooth
- Atmel / Microchip AVR — f. eks. ATmega-familien til prisfølsomme projekter
- Arduino — hurtig prototyping, undervisning og demonstrationer
- BeagleBone — ARM Cortex-A-platform med Linux til mere krævende applikationer
- Mikrocontrollere med minimal hukommelse — bare-metal, uden RTOS (Stihl-projektet som eksempel, se referencer)
- yderligere platforme efter forespørgsel
FPGA
3. FPGA-platforme
FPGA-udvikling fra specifikation til verificering. Hovedvægt på Xilinx-produkter, fortrolig med moderne værktøjskæder og verificeringsmetoder.
- Xilinx Artix-7 — omkostningseffektive FPGA'er til styre- og signalbehandlingsopgaver
- Xilinx Zynq — kombineret ARM+FPGA-platform til komplekse systemer
- Vivado — værktøjskæde til syntese, implementering og programmering
- Icarus Verilog / Verilator — open-source-simulatorer til hurtig iteration
- SystemVerilog-testbænke — struktureret verificering af FPGA-designs
Bus
4. Bus-systemer og kommunikationsprotokoller
Erfaring med de bus-systemer, der er etableret i bil-, industrielle og embedded-miljøer — fra hardwarenær implementering til diagnose.
- CAN / CAN FD — standard inden for bilindustri og industri
- MOST — infotainment-bus med erfaring fra Audi-projektet (se referencer)
- Ethernet / EtherCAT — realtidsegnet industriel kommunikation
- SPI / I²C / UART — standardgrænseflader til sensorer og perifert udstyr
- UDS (ISO 14229) — diagnoseprotokol til styreenheder
- WebSocket / MQTT — til IoT- og sky-tilkobling
RTOS
5. Realtidsoperativsystemer og frameworks
Valg af softwarearkitektur efter projektkrav — fra bare-metal på små mikrocontrollere til fuldstændige flerkernede realtidsoperativsystemer.
- Bare-metal — når hukommelse og determinisme tæller
- FreeRTOS — de facto-standard for RTOS på mikrocontroller
- Flerkernede arkitekturer — fordeling af opgaver på flere kerner
- Embedded Linux — på platforme som BeagleBone, når applikationer drager nytte af det
Værktøjer
6. Værktøjer, testframeworks og IDE'er
Værktøjer er midler. Jeg arbejder med det, der passer til projektet — og kan hurtigt sætte mig ind i ukendte værktøjskæder, hvis de er projektrelevante.
- Vector CANoe / CAPL — standard til biltests og bus-simulering
- LabView — måle- og styringssoftware
- Robot Framework — end-to-end-testautomatisering
- HIL-opstillinger — hardware-in-the-loop til integrerede systemtests
- Pulsonix — diagram- og PCB-layoutværktøj
- Vivado — Xilinx FPGA-værktøjskæde
- Git / GitLab — versionsstyring og kodegennemgang
- Wireshark — netværks- og bus-analyse
Web/App
7. Web- og app-teknologier (ledsagende software)
Når embedded-enheder kræver en konfigurationsgrænseflade, et dashboard eller en mobilapplikation, kan jeg også levere den ledsagende software.
- JavaScript / HTML / CSS — web-frontends
- Chart.js — datavisualisering i browseren
- Python / Flask — web-backends
- Node.js — serverkomponenter
- Socket.IO / WebSocket / MQTT — realtidsdataoverførsel
- Kotlin — Android-applikationer til embedded-enheder
- REST-API'er — standardiserede grænseflader mellem embedded og sky
Hvad der ikke står på denne liste
Denne side nævner de hyppigt anvendte teknologier — det er ikke et fuldstændigt katalog. Hvis din platform, dit sprog eller dit værktøj ikke står her, er projektet alligevel værd at drøfte. I embedded-udvikling tæller det i sidste ende mindre, hvilken konkret værktøjskæde man behersker, og mere, hvor hurtigt man kan sætte sig ind i en ny værktøjskæde, og hvor dybt de underliggende koncepter er forstået.