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 fulloption generates a complete device tree for the programmable logic.The output
pl.dtsimust match the hardware described in your post-boot module. For Segmented Configuration, AMD assumes that hardware in thepl.dtsifile 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:
Add the
dfx-user-dtsclass to your Yocto recipe.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.