=================== OpenAMP Lopper Tool =================== .. _lopper-tool-intro: *************** Lopper Intro *************** System Device Trees (S-DT) are used to describe resources of `heterogeneous `_ embedded environments. Their intent is to be the industry standard method for defining how computing resources are divided into independent :ref:`runtime domains`. Examples of domains are * a computing unit, e.g. RTOS on R5s * an operating environment at a specific execution level (e.g. `OPTEE `_) * a virtual machine (e.g. `Xen `_) For those familiar with `Device Trees (DTS) `_ think of the S-DT as a combination of multiple device trees to define sub-systems. DTS' define resources seen from one address space, whereas S-DT's define the topology of the full system. The `Lopper Tool `_ provides a way to generate sub-system DTS' from S-DT's and manipulate, inspect or verify the S-DT for correctness. .. image:: ../images/tools/lopper-intro.svg The `Lopper Tool `_ is a data driven tool written in Python, and supports inputs in dts, dtb and yaml format. Actions, which are used to manipulate the input data, are provided as unit operations (lops) as DTS formatted files. These are small transformation commands, inline Python source or for more complex scenarios `lopper assists `_ Python modules. The diagram below shows an example of three transformations performed by lopper through three independent DTS files which define the actions to perform. .. image:: ../images/tools/lopper-actions.svg Lopper is built on top of device tree tools, `Device Tree Compiler (DTC) `_ and `libfdt `_. References ^^^^^^^^^^ :ref:`Lopper Architecture Readme` `Linaro Connect 2020 - System Device Tree & Lopper Slide Set `_ `Open Source Summit 2022 Slide Set `_