Symbolbild FPGA-Entwicklung

Firmware

Meist benötigt heutige Elektronik programmierbare und konfigurierbare Komponenten wie Mikrocontroller und FPGAs.

Häufig ist der Aufwand zur Entwicklung der Firmware höher als der Aufwand für die Platinenentwicklung.

Die programmierbaren Komponenten müssen meist mit anderen Maschinenelementen oder einem PC kommunizieren. Dafür kommen vielerlei verschiedene Protokolle wie Ethernet, USB, I²C, UART, CAN und andere zum Einsatz.

Die Hersteller der Mikrocontroller liefern zu ihren Bauelementen entsprechende Bibliotheken mit, aber das Erstellen einer voll funktionalen Firmware ist dennoch ein sehr komplexer Prozess.

Ich habe Erfahrungen gesammelt mit folgenden Komponenten:

TypBeschreibungEntwicklungsumgebung
Zynq 7000 SoCFPGA, ARM Prozessor und Controller E/AVivado / Vitis
Spartan 3 / Spartan 6FPGAsXilinx ISE
Cypress Cy68013AUSB 2.0 Interface Chip mit 8051-Kompatiblem Prozessorsdcc
Atxmega 128A1U8-Bit RISC Controller mit umfangreicher Controller E/Aavr-gcc
Attiny8-Bit RISC Controller mit einfacher Controller E/Aavr-gcc

Gerätetreiber

Um von einem PC aus auf die Hardware und ihre Firmware zuzugreifen, wird meistens eine PC-Seitiger Gerätetreiber benötigt.

Dieser besteht oftmals aus einem Geräte-Treiber, der im Kernel-Modus ausgeführt wird und einer API-Schnittstelle, die den Zugriff aus der Anwendung organisiert.

Im Falle von Windows muss der Geräte-Treiber mit einem Sicherheits-Zertifikat unterschrieben werden.

Für USB-Geräte habe ich Erfahrung mit der Programmierung von API-Schnittstellen basierend auf generischen USB-Treibern wie CYUSB und libusb.

Siehe auch