Lopper Step 4: Zephyr Domain Formatting - Lopper Step 4: Zephyr Domain Formatting - 2026.1 English - UG1186

Libmetal and OpenAMP User Guide (UG1186)

Document ID
UG1186
Release Date
2026-06-24
Version
2026.1 English

In this final step, you apply Zephyr-specific device tree bindings and conventions. You produce the final Zephyr-compatible device tree.

This step includes these actions:

  • Converting to Zephyr binding syntax (compatible strings, property names)
  • Adding Zephyr chosen node properties
  • Ensuring compliance with Zephyr's device tree requirements
  • Performing final node pruning and cleanup
Use the following command to apply the final Zephyr domain formatting:
LOPPER_DTC_FLAGS="-b 0 -@" \
lopper \
  -O <output-directory> \
  -f \
  --enhanced \
  <input-cortexr52-zephyr-imux-dts> \
  <output-final-zephyr-dts> \
  -- gen_domain_dts <cpu-name> zephyr_dt
The following example shows this step for the VEK385 platform:
LOPPER_DTC_FLAGS="-b 0 -@" \
tmp/work/x86_64-linux/esw-conf-native/2026.1+git/recipe-sysroot-native/usr/bin/lopper \
  -O . \
  -f \
  --enhanced \
  versal-2ve-2vm-vek385-revb-sdt-seg-cortexr52-0-zephyr-imux.dts \
  versal-2ve-2vm-vek385-revb-sdt-seg-cortexr52-0-zephyr.dts \
  -- gen_domain_dts cortexr52_0 zephyr_dt
Table 1. Command Breakdown
Parameter Description
<input-dts> R52 IMUX-formatted device tree (from Step 3)
<output-dts> Final Zephyr device tree (ready to use)
-- gen_domain_dts Domain generation lopper assist
<cpu-name> Target CPU
zephyr_dt Critical: Specifies Zephyr DT output format
Important: The zephyr_dt argument triggers the Zephyr-specific transformations.

Zephyr Domain Transformations

Compatible string updates: convert Linux bindings to Zephyr bindings where needed.

Memory node adjustments: format memory nodes for the Zephyr memory manager.
memory@0 {
    device_type = "memory";
    reg = <0x0 0x0 0x0 0x80000000>;  /* 2 GB DDR */
};
reserved-memory {
    #address-cells = <2>;
    #size-cells = <2>;
    ranges;
    /* DDR boot region (zephyr,sram) */
    ddrboot: ddrboot@9800100 {
        compatible = "mmio-sram";
        device_type = "memory";
        no-map;
        reg = <0x0 0x9800100 0x0 0x5ff00>;
        zephyr,memory-region = "SRAM";  /* Zephyr memory region type */
    };
    /* IPC shared memory (zephyr,ipc_shm) */
    ipc: ipc@9860000 {
        compatible = "mmio-sram";
        no-map;
        reg = <0x0 0x9860000 0x0 0x48000>;
        zephyr,memory-region = "IPC_SHM";
    };
};

Output: versal-2ve-2vm-vek385-revb-sdt-seg-cortexr52-0-zephyr.dts

This file is the final Zephyr device tree that you use in Zephyr builds.

It contains these items:

  • Zephyr-compatible bindings
  • OpenAMP nodes for IPI, shared memory, and ELFLOAD
  • a chosen node with the required properties
  • R52-specific memory mappings
  • a clean, pruned device tree for the R52 domain