Using the SHEL Flow to create a Yocto Project machine configuration from a .xsa file

This page is intended to provide the high-level overview and a simple tutorial on how to use the SHEL flow to create a Linux image for AMD Adaptive SoC hardware.

VIVADOXSASDTGenSDT ArtifactsBoard/Platform Specific DTS fileBoard/Platform specific ConfigurationsYocto Environment SetupGen Machine ConfYocto .conf and .dtsBuild ImageWic Image

End-to-end SHEL flow used in this tutorial.

Note

Lopper is used internally by gen-machine-conf to transform the SDT Artifacts into the Yocto machine configuration. It does not appear as a separate step in this tutorial flow because gen-machine-conf invokes it automatically.

SHEL Flow in a Few Steps

  1. Run System Device Tree Generator (SDTGen) as instructed in its README file.

  2. Set up a yocto environment that includes the xilinx meta layers. https://github.com/Xilinx/meta-xilinx/blob/master/README.building.md

  3. Run gen-machine-conf on the resultant output. This generates a new Yocto “Machine” appropriate for your system.

$ gen-machine-conf parse-sdt --hw-description <path_to_sdtgen_output_directory> -c <conf-directory> -l <path-to-build-directory>/build/conf/local.conf --machine-name <your machine name>

Make sure you are using your new machine configuration in Yocto by prepending MACHINE=<your machine name> to all yocto commands or a add MACHINE=<your machine name> to your projects local.conf

Congratulations! You are now in a Yocto Project environment, and can build images with:
$ MACHINE=<your machine name> bitbake edf-linux-disk-image

Emulate the build by combining the machine-specific and common qemuboot artifacts into a single qemuboot.conf, then using it to launch runqemu.

$ runqemu combined.qemuboot.conf nographic slirp

The required arguments and combined qemuboot.conf path depend on the generated machine and board. For the complete QEMU boot flow, including combining artifacts and generating the combined qemuboot.conf, see QEMU Based Development.