Linux

Überblick über Linux-Komponenten und Treiberentwicklungen, die wir in Embedded-Systemen umgesetzt haben.

Ethernet

Ethernet Drivers

On an FPGA SoC, we implemented 16 × 1G and 4 × 10G Ethernet ports, which are connected to the processor system via AXI and an internal switch within the FPGA.

For integration into the embedded Linux system, we developed an Ethernet driver that connects all ports to the network subsystem.

Ethernet Userspace

We have integrated Ethernet into various Linux userspace applications, using both FPGA-based Ethernet and the processor-side Ethernet of an SoC.

Video for Linux (V4L) Driver

On an FPGA SoC, a video stream is fed into the FPGA via DisplayPort and displayed in parallel on a Linux system.

For this purpose, we developed both the FPGA logic and a V4L driver, which enables integration with the Linux video subsystem and provides the video stream to userspace applications.

The driver was tested, among other things, with the camera example application of the Qt framework.

Framebuffer driver

On an FPGA SoC, the graphical user interface was output via a DisplayPort interface.

For this purpose, we developed both the FPGA logic and a Linux framebuffer driver, which enables the integration of the display output into the operating system.

FPGA Register and DMA Drivers

In FPGA-based systems, we have implemented Linux kernel drivers to interface FPGA logic with the processor system.

These enable register access via AXI-Lite (using custom IP cores) as well as high-speed data transfer via AXI/DMA with self-developed AXI masters. In addition, memory mapping, interrupt handling, and communication between FPGA and userspace were implemented.

PCIe Card Driver

For PCI and PCIe-based systems, we have implemented Linux kernel drivers to interface the corresponding hardware.

These include device initialization, memory mapping, interrupt handling, as well as DMA-based high-speed data transfer between hardware and userspace.

DisplayPort Driver

For DisplayPort, we implemented a Linux driver to interface a DisplayPort IP core with an embedded Linux system.

The original control, which was intended for a soft-core processor, was replaced by a direct connection via AXI-Lite to the processor system and integrated into a Linux driver.

The driver includes link training, hot-plug detection, EDID handling, and interface configuration.

IPC (RPMsg)

For inter-process communication between the host and a co-processor, we implemented an IPC driver based on RPMsg under embedded Linux.

We adapted existing examples and built upon the available communication channels.

In the specific application, a Linux userspace application communicates with an M4 core of an i.MX8 SoC running FreeRTOS.