This is the documentation for the latest (main) development branch. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

OpenAMP Lopper Tool

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 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.

../_images/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.

../_images/lopper-actions.svg

Lopper is built on top of device tree tools, Device Tree Compiler (DTC) and libfdt.

References

Lopper Architecture Readme

Linaro Connect 2020 - System Device Tree & Lopper Slide Set

Open Source Summit 2022 Slide Set