Embedded-Linux

Mit dem Einsatz von SoCs hat das Thema Embedded-Linux eine neue Bedeutung gewonnen. Noch nie zuvor ließen sich so mächtige Systeme mit so wenig Aufwand realisieren.
Wir setzen Linux nicht nur auf unseren Embedded-Systemen ein, sondern arbeiten seit 12 Jahren auch auf Server und Workstation mit Linux.
Der Umgang mit Linuxstellt für uns somit kein "Spezial-Know-How" dar sondern gehört ins Reich der täglich angewendeten Allgemeinbildung.
Unsere Leistungen im Überblick
- Aufsetzen von Yocto basierten Linux-Systemen
- Erweitern der Linux-Systeme um BSP-Layer
- Entwicklung von Kundenspezifischen Kernel-Treibern
- Entwicklung von Kundenspezifischen Konsolen-Applikationen
- Entwicklung von Kundenspezifischen Embedded-Qt-Applikationen
Unsere Erfahrungen
Wir haben nun bereits für einige Embedded-Systeme ein Linux-System aufgesetzt bzw.Linux-Systeme anderer Hersteller für unsere Anforderungen angepasst und in unsere Projekte integriert.
In allen Projekten haben wir eigene Linux-Kernel-Treiber und und Linux-Applikationen entwickelt. Im Folgenden ein repräsentativer Auszug:
Yocto |
Ein open source-Projekt, das Werkzeuge zum Bau von Linux-Systemen zur Verfügung stellt. Es basiert auf Layern und Rezepten und ist beliebig erweterbar. Wir bauen inzwischen alle unsere Linux-Systeme mit Yocto und haben auch zahlreiche Rezepte zur Ergänzung und Einbindung eigener Programme oder FPGA-Bit-Files geschrieben. Die verwendete Distribution ist Poky, die zugrunde liegenden Yocto-Releases sind Krogoth, Pyro und Rocko. |
u-boot |
Der u-boot ist ein speziell auf Unix-Systeme wie Linux zugeschnittener Loader und findet in Embedded-Systemen fast durchgehend Verwendung. Wir haben bereits mehrfach u-boot-Systeme an bestehende Hardware angepaßt. |
PCI-Kernel-Treiber |
Für mehrere Embedded-Systeme haben wir PCI- bzw. PCIe-Kernel-Treiber entwickelt, um den eigenen FPGA in ein Embedded-Linux zu integrieren. Dabei wurden ein bis mehrere BARs für die Konfiguration von FPGA-Einheiten sowie ein bis mehrere DMA-Kanäle implementiert. |
FPGA-Kernel-Treiber |
Für Xilinx- und Altera/Intel-SoC-Systeme haben wir mehrere Treiber entwickelt, um die Funktionalitäten der FPGAs in das Linux-System zu integrieren. Die Anbindung der FPGA-Logik an die Prozessor-Systeme basierte dabei über AXI-Interconnect-Topologien. Die Konfiguration der FPGAs erfolgte über AXI-Lite, die DMA-Transfers über AXI-Master seitens des FPGAs, teils direkt oder über einen Level 3-Interconnect in den DDR-Speicher des Prozessors. |
Framebuffer-Kernel-Treiber |
In mehreren Projekten haben wir Framebuffer-Treiber für die Bildausgabe entwickelt. Dabei wurden die folgenden Hardware-Komponenten ins Linux-System integriert:
|
Kernel-Devices |
Die Kommunikation mit dem Userspace erfolgt neben ioctl-Kommandos über Kernel-Devices. Alle unsere Treiber werden über Kernel-Devices angesprochen und stellen zu transferierende Daten über diese zur Verfügung. |
v4l-Kernel-Treiber |
Für ein Arria10-SoC aben wir ein v4l2-Kernel-Treiber entwickelt, welcher die Übertragung einer Vorschau eines DisplayPort-Eingangs vom FPGA in den Prozessor-Speicher steuert und die Bilder über das v4l-Interface zur Verfügung stellt. Der Video-Stream wird über gstreamer einem Qt5-Video-Widget zugeführt, dessen Applikation auf einem X11 basierten LXDE-Desktop ausgeführt wird. |
Ethernet-Treiber |
Für mehrere SoC basierte Projekte haben wir ein bis sechzehn im FPGA implementierte Ethernet-Kanäle in das Netzwerk-Subsystem des Linux-Systems integriert. Über die Ethernet-Kanäle wurde sowohl gesendet als auch empfangen. |
Ethernet |
In den meisten unserer Projekte läuft auf dem Embedded-Linux-System ein Dienstprogram, welches auf einem Ethernet-Port (meistens UDP, aber auch TCP) Daten empfängt und versendet. |
X11, X11vnc |
In einigen Projekten kam ein X11-Server auf dem Embedded-Linux zum Einsatz, dessen Bild mittels X11vnc-Server und VNC-Protokoll über das Ethernet-Netzwerk an einen PC übertragen wurde. Die Linux-Systeme wurden von uns mit entsprechend referenzierten Rezepten erweitert. |
Desktop: LXDE |
In einigen Projekten kam ein X11 basierte LXDE-Deskops zum Einsatz. Die Linux-Systeme wurden von uns mit entsprechend zugebundenen Rezepten erweitert. |
Desktop: SATO |
Wir haben den SATO-Desktop für ein Projekt evaluiert. Er passte jedoch nicht in unser Konzept. Das Linux-System wurden von uns mit entsprechend zugebundenen Rezepten erweitert. |
Desktop: XFCE |
Wir haben den XFCE-Desktop für ein Projekt evaluiert. Er passte jedoch nicht in unser Konzept. Das Linux-System wurden von uns mit entsprechend zugebundenen Rezepten erweitert. |
Qt4, Qt5 |
Auf dem Desktop im täglichen Einsatz und gelegentlich auch auf Embedded-Systemen. Für einige Projekte haben wir qt4 bzw. qt5 als X11-Variante in Embedded-Systeme integriert. Das Linux-System wurden von uns mit entsprechend zugebundenen Rezepten erweitert. |
Werfen Sie ruhig auch einen Blick auf unsere Projekt-Referenzen.