Startsida

Tekniker och plattformar

Programmeringsspråk, hårdvaruplattformar, bussar och verktyg — valet följer projektkraven, inte mina preferenser.

Den här sidan ger en kompakt översikt över de tekniker jag arbetar med. Listan är inte uttömmande — den nämner de plattformar, språk och verktyg som ofta förekommer i mina projekt eller som jag betraktar som särskilt relevanta för embedded-utveckling. Om din specifika plattform inte förekommer här betyder det inte nödvändigtvis brist på erfarenhet; i embedded-projekt överförs koncept ofta till andra plattformar så snart uppgiften är klar.

Språk

1. Programmerings- och hårdvarubeskrivningsspråk

Språkval efter uppgift: hårdvarunära och resurssnålt i C eller assembler, objektorienterat i C++, FPGA-logik i VHDL och SystemVerilog, verktyg och analys i Python.

  • C — huvudspråk för mikrostyrenhetens fasta programvara, från bare-metal till FreeRTOS
  • C++ — för mer komplexa embedded-tillämpningar med objektstrukturer, MISRA-konformt vid behov
  • Assembler — under extrema randvillkor, för hårdvarudrivrutiner, startkod och reverse engineering
  • VHDL — FPGA-designer med stark strukturell tydlighet
  • SystemVerilog — modern FPGA-utveckling, testbänkar, verifiering
  • Verilog — klassisk FPGA-beskrivning
  • Python — testautomation, skript, dataanalys, webbservrar
  • Kotlin — för Android-appar som kringliggande till embedded-enheter
  • JavaScript / HTML / CSS — webbgränssnitt och konfigurationsgränssnitt
MCU

2. Mikrostyrenhetsplattformar

Erfarenhet av alla på embedded-marknaden etablerade mikrostyrenhetsplattformar — från högpresterande ARM Cortex till kostnadsoptimerade Atmel-chip, som nakna mikrostyrenheter eller som kort-plattformar som Arduino eller BeagleBone.

  • ARM Cortex-M — standardplattformen för medelhöga krav
  • ARM Cortex-A — när Linux eller mer beräkningskraft krävs
  • ESP32 — embedded-tillämpningar med Wi-Fi/Bluetooth
  • Atmel / Microchip AVR — t. ex. ATmega-familjen för prisorienterade projekt
  • Arduino — snabb prototyping, undervisning och demonstrationer
  • BeagleBone — ARM Cortex-A-plattform med Linux för krävande tillämpningar
  • Mikrostyrenheter med minsta minne — bare-metal, utan RTOS (Stihl-projektet som exempel, se referenser)
  • ytterligare plattformar på begäran
FPGA

3. FPGA-plattformar

FPGA-utveckling från specifikation till verifiering. Tonvikt på Xilinx-produkter, förtrogen med moderna verktygskedjor och verifieringsmetoder.

  • Xilinx Artix-7 — kostnadseffektiva FPGA:er för styrning och signalbehandling
  • Xilinx Zynq — kombinerad ARM+FPGA-plattform för komplexa system
  • Vivado — verktygskedja för syntes, implementation och programmering
  • Icarus Verilog / Verilator — open source-simulatorer för snabb iteration
  • SystemVerilog-testbänkar — strukturerad verifiering av FPGA-designer
Buss

4. Bussar och kommunikationsprotokoll

Erfarenhet av de bussar som är etablerade i fordons-, industriella och embedded-miljöer — från hårdvarunära implementation till diagnostik.

  • CAN / CAN FD — fordons- och industristandard
  • MOST — infotainmentbuss med erfarenhet från Audi-projektet (se referenser)
  • Ethernet / EtherCAT — realtidskapabel industriell kommunikation
  • SPI / I²C / UART — standardgränssnitt för sensorer och periferi
  • UDS (ISO 14229) — diagnostikprotokoll för styrenheter
  • WebSocket / MQTT — för IoT- och molnanslutning
RTOS

5. Realtidsoperativsystem och ramverk

Val av programvaruarkitektur efter projektkrav — från bare-metal på små mikrostyrenheter till fullständiga flerkärniga realtidsoperativsystem.

  • Bare-metal — när minne och determinism räknas
  • FreeRTOS — de facto-standard för RTOS på mikrostyrenheter
  • Flerkärniga arkitekturer — fördelning av uppgifter över flera kärnor
  • Embedded Linux — på plattformar som BeagleBone, när tillämpningar drar nytta av det
Verktyg

6. Verktyg, testramverk och IDE:er

Verktyg är medel. Jag arbetar med det som passar projektet — och kan snabbt sätta mig in i okända verktygskedjor när de är projektrelevanta.

  • Vector CANoe / CAPL — standard för fordonstester och buss-simulering
  • LabView — mät- och styrprogramvara
  • Robot Framework — end-to-end-testautomation
  • HIL-uppsättningar — hardware-in-the-loop för integrerade systemtester
  • Pulsonix — schema- och PCB-layoutverktyg
  • Vivado — Xilinx FPGA-verktygskedja
  • Git / GitLab — versionshantering och kodgranskning
  • Wireshark — nätverks- och bussanalys
Webb/App

7. Webb- och app-tekniker (kringliggande programvara)

När embedded-enheter behöver ett konfigurationsgränssnitt, en instrumentpanel eller en mobilapp kan jag också leverera den kringliggande programvaran.

  • JavaScript / HTML / CSS — webbgränssnitt
  • Chart.js — datavisualisering i webbläsaren
  • Python / Flask — webbservrar
  • Node.js — serverkomponenter
  • Socket.IO / WebSocket / MQTT — realtidsdataöverföring
  • Kotlin — Android-appar för embedded-enheter
  • REST-API:er — standardiserade gränssnitt mellan embedded och moln

Vad som inte står på den här listan

Den här sidan nämner de tekniker som ofta används — det är ingen fullständig katalog. Om din plattform, ditt språk eller ditt verktyg inte står här är projektet ändå värt att diskutera. I embedded-utveckling spelar det till slut mindre roll vilken specifik verktygskedja man behärskar, och mer hur snabbt man kan ta till sig en ny verktygskedja och hur djupt de underliggande koncepten är förstådda.

Färgschema

Språk