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.

Farveskema

Sprog