Heterogeneous multiprocessor SoCs are common in applications such as advanced driver assistance systems (ADAS) and autonomous vehicles, networking, industrial automation, security, video analytics and machine learning. These SoCs often have multiple homogeneous or heterogeneous clusters of CPUs, GPUs, and/or hardware accelerator units that work together on a common set of data.
Linux, the general purpose operating system of choice for embedded systems, must be modified for these heterogeneous multi-cluster architectures to support coherence between clusters, as well as differences such as number of processors, processor type, and other features. Vendors often use an open source Linux distribution, then customize for the specific SoC, including drivers for the peripherals, other customizations and unique features. Obviously, this gets quite complex, and the need to port, customize and bring up Linux on these heterogeneous SoCs requires significant engineering effort.
So how can developers be more efficient? What are the best practices for Linux porting and bring up on heterogeneous multi-cluster/multiprocessor SoCs?
At DAC 2017 Imperas and Imagaintion/MIPS presented a tutorial addressing the above issues. Here are the slides presented by Imperas.