Linux kernel driver
Most projects containing a Linux / embedded Linux are containing also a linux kernel driver development.
So we have developed the following linux kernel drivers, running on FPGA-SoCs, PCs and i.MX8 processors.
Ethernet network card driver
For 20 parallel ethernet ports with shared DMA channel and mixed speeds of 1G and 10G located in one FPGA-SoC we have written a linux ethernet driver.
Video for linux (v4l) driver
To stream the video data of an input display port located in an FPGA into the linux v4l subsystem we have written a linux driver.
For a video output implemented in an FPGA-SoC we have written the corresponding linux framebuffer driver.
FPGA register and DMA driver
Each FPGA or FPGA-SoC connected to a processor have at least a register set which is mapped into the processors memory. Most FPGA designs further have additional DMA channel for bidirectional data transfers.
We have written a large count of linux drivers for different FPGA designs to access the FPGA register from user space, handle FPGA interrupts and manage DMA transfers.
PCI card driver
For some FPGA designs connected via PCI and PCIe we have written the linux drivers. For all designs, we had to handle FPGA registers, mapped to the memory, interrupts and manage DMA transfers.
Display port control driver
For the display port cores from Bitec we got the core firmware as static libraries and wrapped them with a linux driver.
IPC driver based on rpmsg
On an i.MX8 processor we used the A53 cores running Linux and the M4 core for bare metal realtime applications.
To communicate between the A53 and M4 cores, we wrote a Linux driver which implements register access from A53 side to the M4 side through the RPMSG functionality of the Linux kernel. On the M4 side we used the RPMSG implementation of FreeRTOS.