Strona główna

Technologie i platformy

Języki programowania, platformy sprzętowe, magistrale i narzędzia — wybór podąża wymaganiami projektu, a nie moimi preferencjami.

Ta strona daje zwięzły przegląd technologii, z którymi pracuję. Lista nie jest wyczerpująca — wymienia platformy, języki i narzędzia, które często występują w moich projektach lub które uważam za szczególnie istotne dla rozwoju embedded. Jeśli Państwa specyficzna platforma nie pojawia się tutaj, niekoniecznie oznacza to brak doświadczenia; w projektach embedded koncepcje często przenoszą się na inne platformy, gdy tylko zadanie jest jasne.

Języki

1. Języki programowania i opisu sprzętu

Wybór języka według zadania: bliskie sprzętowi i oszczędne zasobowo w C lub asemblerze, obiektowe w C++, logika FPGA w VHDL i SystemVerilog, narzędzia i analiza w Pythonie.

  • C — główny język dla oprogramowania układowego mikrokontrolera, od bare-metal do FreeRTOS
  • C++ — dla bardziej złożonych aplikacji embedded ze strukturami obiektowymi, zgodne z MISRA w razie potrzeby
  • Asembler — przy ekstremalnych warunkach brzegowych, do sterowników sprzętu, kodu startowego i inżynierii odwrotnej
  • VHDL — projekty FPGA z silną klarownością strukturalną
  • SystemVerilog — nowoczesny rozwój FPGA, testbenche, weryfikacja
  • Verilog — klasyczny opis FPGA
  • Python — automatyzacja testów, skrypty, analiza danych, backendy webowe
  • Kotlin — do aplikacji Android jako towarzyszących urządzeniom embedded
  • JavaScript / HTML / CSS — frontendy webowe i interfejsy konfiguracyjne
MCU

2. Platformy mikrokontrolerów

Doświadczenie ze wszystkimi ustalonymi na rynku embedded platformami mikrokontrolerów — od wydajnego ARM Cortex do zoptymalizowanych kosztowo chipów Atmel, jako gołe mikrokontrolery lub jako platformy płytek typu Arduino lub BeagleBone.

  • ARM Cortex-M — platforma standardowa dla średnich wymagań
  • ARM Cortex-A — gdy wymagany jest Linux lub większa moc obliczeniowa
  • ESP32 — aplikacje embedded z Wi-Fi/Bluetooth
  • Atmel / Microchip AVR — np. rodzina ATmega do projektów wrażliwych cenowo
  • Arduino — szybkie prototypowanie, nauczanie i prezentacje
  • BeagleBone — platforma ARM Cortex-A z Linuxem do bardziej wymagających zastosowań
  • Mikrokontrolery z minimalną pamięcią — bare-metal, bez RTOS (projekt Stihl jako przykład, zob. referencje)
  • dalsze platformy na zapytanie
FPGA

3. Platformy FPGA

Rozwój FPGA od specyfikacji do weryfikacji. Punkt ciężkości na produktach Xilinx, znajomość nowoczesnych łańcuchów narzędziowych i metod weryfikacji.

  • Xilinx Artix-7 — efektywne kosztowo FPGA do zadań sterujących i przetwarzania sygnałów
  • Xilinx Zynq — łączona platforma ARM+FPGA do złożonych systemów
  • Vivado — łańcuch narzędziowy do syntezy, implementacji i programowania
  • Icarus Verilog / Verilator — symulatory open-source do szybkiej iteracji
  • Testbenche w SystemVerilog — strukturyzowana weryfikacja projektów FPGA
Magistrala

4. Magistrale i protokoły komunikacyjne

Doświadczenie z magistralami ustalonymi w środowiskach motoryzacyjnym, przemysłowym i embedded — od implementacji bliskiej sprzętowi do diagnostyki.

  • CAN / CAN FD — standard w motoryzacji i przemyśle
  • MOST — magistrala infotainment z doświadczeniem z projektu Audi (zob. referencje)
  • Ethernet / EtherCAT — komunikacja przemysłowa zdolna do czasu rzeczywistego
  • SPI / I²C / UART — interfejsy standardowe dla czujników i peryferii
  • UDS (ISO 14229) — protokół diagnostyczny dla sterowników
  • WebSocket / MQTT — do połączeń IoT i chmurowych
RTOS

5. Systemy operacyjne czasu rzeczywistego i frameworki

Wybór architektury oprogramowania według wymagania projektu — od bare-metal na małych mikrokontrolerach do pełnych wielordzeniowych systemów operacyjnych czasu rzeczywistego.

  • Bare-metal — gdy liczy się pamięć i determinizm
  • FreeRTOS — de facto standard dla RTOS na mikrokontrolerze
  • Architektury wielordzeniowe — rozdzielanie zadań na wiele rdzeni
  • Embedded Linux — na platformach typu BeagleBone, gdy aplikacje na tym zyskują
Narzędzia

6. Narzędzia, frameworki testów i IDE

Narzędzia są środkami. Pracuję z tym, co pasuje do projektu — i szybko zapoznaję się z nieznanymi łańcuchami narzędziowymi, jeśli są istotne dla projektu.

  • Vector CANoe / CAPL — standard dla testów motoryzacyjnych i symulacji magistrali
  • LabView — oprogramowanie pomiarowe i sterujące
  • Robot Framework — automatyzacja testów end-to-end
  • Stanowiska HIL — hardware-in-the-loop do zintegrowanych testów systemowych
  • Pulsonix — narzędzie schematu i layoutu PCB
  • Vivado — łańcuch narzędziowy Xilinx FPGA
  • Git / GitLab — kontrola wersji i przegląd kodu
  • Wireshark — analiza sieci i magistrali
Web/App

7. Technologie web i aplikacji (oprogramowanie towarzyszące)

Gdy urządzenia embedded wymagają interfejsu konfiguracyjnego, panelu lub aplikacji mobilnej, mogę dostarczyć również oprogramowanie towarzyszące.

  • JavaScript / HTML / CSS — frontendy webowe
  • Chart.js — wizualizacja danych w przeglądarce
  • Python / Flask — backendy webowe
  • Node.js — komponenty serwerowe
  • Socket.IO / WebSocket / MQTT — transmisja danych w czasie rzeczywistym
  • Kotlin — aplikacje Android dla urządzeń embedded
  • API REST — standardowe interfejsy między embedded a chmurą

Co nie znajduje się na tej liście

Ta strona wymienia często stosowane technologie — to nie jest pełny katalog. Jeśli Państwa platformy, języka lub narzędzia tu nie ma, projekt warto omówić mimo to. W rozwoju embedded ostatecznie liczy się mniej, jaki konkretny łańcuch narzędziowy się zna, a bardziej, jak szybko można zapoznać się z nowym łańcuchem narzędziowym i jak głęboko rozumie się leżące u podstaw koncepcje.

Schemat kolorów

Język