AMD EDF - Segmented Configuration Using AMD Yocto Project Recipes

Overview

This page describes how to enable segmented configuration for AMD devices using AMD Yocto Project recipes. In this flow, the programmable logic (PL) is divided into independently configurable segments, allowing modular configuration updates after boot while keeping the overall system under Yocto control.

Segmented Flow Steps

Generate the pl.dtsi Using gen-machine-conf

Tool: gen-machine-conf.

For more background, see Generating a new Yocto Project Machine Configuration and Overview of gen-machine-conf.

Using the --template option:

$ gen-machine-conf parse-sdt \
    --template <sources/meta-amd-adaptive-socs/meta-amd-adaptive-socs-bsp/conf/machineyaml/template-yaml-file> \
    --hw-description <path-to-sdt-handoff-dir> \
    -O <machine-override> \
    --machine-name <machine-name>

Or, without a template, with a custom layer:

$ gen-machine-conf parse-sdt \
    --hw-description <path-to-sdt-handoff-dir> \
    -c <path-to-layer>/sources/meta-custom-bsp/conf \
    -g full \
    -O <machine-override> \
    --machine-name <machine-name>
  • The -g full option generates a complete device tree for the programmable logic.

  • The output pl.dtsi must match the hardware described in your post-boot module. For Segmented Configuration, AMD assumes that hardware in the pl.dtsi file produced by SDTGen correlates 1:1 with the data in the post-boot module.

Tip

Finalize your hardware design before generating the pl.dtsi.

Integrate Segmented Configuration with dfx-user-dts

Yocto class: dfx_user_dts.bbclass.

Instructions: README.dfx.user.dts.md.

Steps:

  1. Add the dfx-user-dts class to your Yocto recipe.

  2. Follow the README instructions to update your device tree for segmented configuration. See Build Instructions to create Firmware Recipes using dfx_user_dts.bbclass.

Note

For segmented configuration, you do not need a shell.json file.

Deploy and Run dfx-mgr

dfx-mgr manages loading of segmented configuration data at runtime. Place your partial bitstreams or configuration files in /lib/firmware/xilinx on the target device, then run dfx-mgr-client against the bundle:

# dfx-mgr-client -loadByName <package-name>
# dfx-mgr-client -load <ID>

Building a Compatible PL Design Payload and Creating a Firmware Bundle

For a VEK385 example showing how to build a compatible PL design payload and create a firmware bundle (device tree overlay), see Building a Compatible PL Design Payload and Creating a Firmware Bundle (Device Tree Overlay) in Hardware Application Development.

For deploying the PL firmware application onto a target, see Deploying the PL Firmware Application Onto Target in the same document.

References and Further Reading