Porting embeddedsw components to system
device tree (SDT) based flow. The legacy methodology of building AMD
embeddedsw components takes .xsa as a hand-off file
from hardware persona and uses mdd, mld and mss files for different software
configurations. This makes the legacy approach dependent on AMD proprietary tools such as the software command-line tool (XSCT) and
hardware software interface (HSI). Without these proprietary tools, the embeddedsw components cannot be compiled with the legacy
approach.
The proposed system device tree based flow aims to avoid such dependencies and embrace the open-source industry standards without compromising the performance and the functionality. It uses the system device tree, CMAKE and a Python-based open source tool named Lopper to organize the required Build System.
The system device tree is a super set of regular Linux device tree. Unlike regular Linux device tree which represents hardware information that is only needed for Linux/APU, system device tree represents complete hardware information in device tree format. It contains information about all processors (ex: PMC, PSM, RPU, APU) and all peripherals in the system.
The System Device Tree based flow uses Lopper to extract the required hardware metadata from the system device tree. The software configurations earlier done through mld, mss files in the legacy approach is now replaced with the CMAKE-based infrastructure where the CMAKE variables are set to generate the required headers. All the component specific info which were kept earlier in mdd/mld/mss files in the legacy flow are now kept inside a YAML file. There are python scripts that read these YAML files, configures the component's sources using Lopper and CMAKE commands and populates the standalone BSP specific data accordingly. This way, the whole build system replaces the usage of proprietary AMD files and tools with the available open-source infrastructure.
Porting existing embeddedsw bare-metal
and RTOS components is necessary to ensure legacy software components work seamlessly in
this System Device Tree based flow. The following sections explain the steps and changes
required to port a legacy bare-metal driver/library/application to the System Device
Tree based flow.
For more SDT porting details, refer to Porting embedded sw components to system device tree SDT based flow