An open-source cross-platform embedded Linux library.
Modern embedded systems have high computational specifications, which has led to the development of reconfigurable heterogeneous System-on-Chips (SoCs). Such SoCs include a set of Hard IPs (HIPs) surrounded by an FPGA fabric for hosting custom Hardware Accelerators (HAs). However, the efficient management of such HAs in an embedded Linux environment involves creating and building custom device drivers specific to the target platform, which negatively impacts development cost, portability, and time-to-market.
To address this challenge, we introduce LEOSoC, an open-source cross-platform embedded Linux library. LEOSoC reduces the development effort required to interface HAs with applications and makes SoCs easy to use for an embedded software developer who is familiar with the semantics of standard POSIX threads. Using LEOSoC does not require any specific version of the Linux kernel, nor to rebuild a custom driver for each new kernel release.
Apart from ease of use, LEOSoC supports FPGA Dynamic Full Reconfiguration (DFR) and Dynamic Partial Reconfiguration (DPR). The internal structure of the library is designed to hide all the hardware structures needed to support the hardware accelerators from the software developer’s workload.
The library consists of two distinct parts that work together. The first part consists of a portable base hardware template to be instantiated on the FPGA and which contains all the infrastructure needed to support up to N hardware accelerators, akin to the ‘‘shell’’ in Microsoft Catapult. We call this base hardware template the ‘‘static design’’. The second part is a software module that leverages the infrastructure of the static design to provide software developers with easy access to their hardware accelerators and allows them to partially/fully reconfigure the FPGA in their target platform.
The system has been tested on multiple COTS (Commercial Off The Shelf) boards from different vendors, each one running different versions of Linux and, therefore, proving the real portability and usability of LEOSoC in a specific industrial design.