The Linux OS supports the Zynq UltraScale+ MPSoC. With the sole exception of the Arm GPU, Xilinx provides open source drivers for all peripherals in the PS as well as key peripherals in the PL. The following figure illustrates the full software stack in APU, including Linux and an optional hypervisor.
Figure 1. Linux Software Development Stack
The Armv8 exception model defines exception levels EL0–EL3, where:
- EL0 has the lowest software execution privilege. Execution at EL0 is called unprivileged execution.
- Increased exception levels, from 1 to 3, indicate an increased software execution privilege.
- EL2 provides support for processor virtualization. You may optionally include an open source or commercial hypervisor in the software stack.
- EL3 provides support for secure monitor software. The Cortex-A53 MPCore processor implements all the exception levels (EL0-EL3) and supports both execution states (AArch64 and AArch32) at each exception level.
You can leverage the Linux software stack for the Zynq UltraScale+ MPSoC in multiple ways. The following are some of your options:
- PetaLinux Tools
- The PetaLinux tools include a branch of the Linux source tree, U-Boot as well as Yocto-based tools to make it easy to build complete Linux images including the kernel, the root file system, device tree, and applications for Xilinx devices. See the PetaLinux Product Page for more information. The PetaLinux tools work with the same open source Linux components described immediately below.
- Open Source Linux and U-Boot
- The Linux Kernel sources including drivers, board configurations, and U-Boot updates for the Zynq UltraScale+ MPSoC are available from the Xilinx Github link, and on a continuing basis from the main Linux kernel and U-Boot trees as well. Yocto board support packages are also available from the main Yocto tree.
- Commercial Linux Distributions
- Some commercial distributions also include support for Xilinx UltraScale+ MPSoC devices and they include advanced tools for Linux configuration, optimization, and debug. You can find more information about these from the Xilinx Embedded Computing page.