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:
Typ | Beschreibung | Entwicklungsumgebung |
---|---|---|
Zynq 7000 SoC | FPGA, ARM Prozessor und Controller E/A | Vivado / Vitis |
Spartan 3 / Spartan 6 | FPGAs | Xilinx ISE |
Cypress Cy68013A | USB 2.0 Interface Chip mit 8051-Kompatiblem Prozessor | sdcc |
Atxmega 128A1U | 8-Bit RISC Controller mit umfangreicher Controller E/A | avr-gcc |
Attiny | 8-Bit RISC Controller mit einfacher Controller E/A | avr-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.