Strona główna

Od koncepcji do prototypu — samodzielny rozwój produktu

Kompleksowy rozwój urządzeń elektronicznych: schemat, layout płytki, oprogramowanie układowe, projekt FPGA, symulacja i weryfikacja. Specyfikacja, kod, test, dostawa — wszystko z jednej ręki.

Urządzenia embedded rzadko powstają z jednej dyscypliny. Nowy pomysł wymaga schematu, schemat wymaga layoutu płytki, layout płytki wymaga oprogramowania układowego lub projektu FPGA, a wszystko to wymaga w końcu weryfikacji i dokumentacji. Rozdzielenie tej współpracy na wielu dostawców oznacza kupowanie interfejsów — a interfejsy są najczęstszym źródłem błędów.

Samodzielny rozwój kompleksowy oznacza: jeden rozmówca, odpowiedzialność end-to-end, spójny stan dokumentacji. Państwo oszczędzają na koordynacji, ja mogę decydować bez konsultowania łańcucha dostawców.

Jak przebiega typowy projekt kompleksowy

Choć każdy projekt jest inny, przebieg podąża rozpoznawalnym wzorcem:

  1. Zrozumienie zadania. Pierwsza rozmowa wyjaśnia, co urządzenie ma robić, jakie warunki brzegowe obowiązują (wolumen, koszty, rozmiar, zużycie, wymagania normatywne) i jakie interfejsy istnieją do systemów istniejących.
  2. Koncepcja i specyfikacja. Na podstawie zadania szkicowana jest koncepcja techniczna: która platforma mikrokontrolera lub FPGA pasuje, jakie magistrale, jakie sygnały analogowe i cyfrowe, jaka architektura oprogramowania. Rezultatem jest dokument specyfikacji, który stanowi podstawę dla całej reszty.
  3. Projektowanie schematu. Sporządzenie schematu z wybranymi komponentami, wymiarowanie krytycznych komponentów, symulacja w decydujących punktach.
  4. Layout płytki. Wielowarstwowy projekt PCB z uwzględnieniem sygnałów wysokiej prędkości, EMC, odprowadzania ciepła i wykonalności produkcji. Wybór producenta płytki i nadzór nad produkcją.
  5. Oprogramowanie układowe lub projekt FPGA. Implementacja logiki sterowania lub przetwarzania sygnałów w C/C++ dla mikrokontrolerów, w VHDL/SystemVerilog dla FPGA — lub w kombinacji. Bare-metal na małych mikrokontrolerach, FreeRTOS lub równoważny RTOS na większych systemach.
  6. Weryfikacja i test. Symulacja obwodu w punktach krytycznych, testbenche dla projektów FPGA, testy sprzętowe na prototypie, w razie potrzeby stanowisko HIL dla oprogramowania.
  7. Dostawa i dokumentacja. Pełny kod źródłowy, schemat, dane layoutu, lista materiałów, dokumentacja podejścia i decyzji projektowych. Na życzenie transfer wiedzy do zespołu klienta.

W razie potrzeby przejmuję także koordynację z producentem seryjnym, który dostarczy żądaną jakość — jak w projekcie Audi (zob. referencje), gdzie ręcznie lutowany prototyp stał się płytką produkowaną maszynowo w jakości przemysłowej.

Trzy dyscypliny — z jednej ręki

Następujące trzy dyscypliny spotykają się w projekcie kompleksowym:

Sprzęt

Rozwój sprzętu

Projektowanie i realizacja sprzętu elektronicznego — od schematu przez layout płytki do koordynacji produkcji seryjnej. Specjalności: systemy oparte na mikrokontrolerze, płytki FPGA i mieszane obwody analogowo-cyfrowe.

  • Systemy oparte na mikrokontrolerze (ARM Cortex-M, ESP32, Atmel/Microchip)
  • Projektowanie i integracja FPGA (Xilinx Artix-7, Zynq)
  • Obwody analogowe i cyfrowe
  • Projektowanie PCB (Pulsonix, wielowarstwowe, wysokiej prędkości, EMC)
  • Wymiarowanie obwodów i wybór komponentów
  • Nadzór nad produkcją PCB i koordynacja z partnerami przemysłowymi
  • Uruchomienie i bring-up sprzętu
Oprogramowanie

Rozwój oprogramowania

Implementacja oprogramowania embedded na rozwijanym sprzęcie — od programowania bare-metal bliskiego sprzętowi do wielordzeniowych systemów operacyjnych czasu rzeczywistego. Języki, platformy i protokoły są wybierane według wymagań projektu, a nie preferencji.

  • Oprogramowanie embedded (C, C++, asembler)
  • Programowanie FPGA (VHDL, Verilog, SystemVerilog)
  • Systemy czasu rzeczywistego (FreeRTOS, bare-metal, wielordzeniowe)
  • Protokoły komunikacyjne (CAN, CAN FD, Ethernet, EtherCAT, I²C, SPI, MOST)
  • Rozwój sterowników do interfejsów bliskich sprzętowi
  • Bootloader, watchdog, mechanizmy aktualizacji oprogramowania układowego
  • Algorytmy do przetwarzania sygnałów i regulacji
Weryfikacja

Symulacja i weryfikacja

Systematyczna walidacja rozwiniętego rozwiązania — na poziomie obwodu, na poziomie FPGA, na poziomie systemu. Weryfikacja nie jest dodanym później krokiem, lecz integralną częścią rozwoju.

  • Symulacja obwodu w dziedzinie czasu i częstotliwości
  • Analiza Monte Carlo i badania najgorszego przypadku
  • Weryfikacja FPGA z testbenchami w SystemVerilog
  • Symulacja HDL (Vivado, Icarus Verilog, Verilator)
  • Diagram Bodego, analiza Nyquista, badania stabilności
  • Testy hardware-in-the-loop dla systemów zintegrowanych

Co odróżnia rozwój kompleksowy od «zwykłego kodowania»

Gdy klient szuka dziś «programisty embedded», myśli najczęściej o kimś, kto wykona zadanie cząstkowe: moduł C, komponent FPGA, sterownik. Do tego jest wielu dostawców.

Rozwój kompleksowy to coś innego. Wymaga kogoś, kto potrafi decydować — o architekturze, o doborze komponentów, o interfejsach, o kompromisach między kosztami a funkcjonalnością. Tej kompetencji decyzyjnej nie ma w każdym CV i nie zastępuje jej dodawanie specjalistów.

Przejmuję rozwój kompleksowy tam, gdzie klient nie chce utrzymywać własnego działu embedded — i gdzie wynikający z tego nakład pracy i odpowiedzialność może ekonomicznie spoczywać na jednej osobie.

Formy współpracy

Projekty kompleksowe są z reguły realizowane jako umowa ze stałą ceną z twardym zobowiązaniem do dostawy. Nakład pracy jest szacowany przed rozpoczęciem projektu, cena jest gwarantowana. Do prac eksploracyjnych bez wyraźnego punktu końcowego alternatywą jest kontyngent godzinowy. Szczegóły na stronie Zlecenie.

Schemat kolorów

Język