← 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.