Complete Libmetal Example (Versal AI Edge Series Gen 2) - Complete Libmetal Example (Versal AI Edge Series Gen 2) - 2026.1 English - UG1186

Libmetal and OpenAMP User Guide (UG1186)

Document ID
UG1186
Release Date
2026-06-24
Version
2026.1 English
# libmetal-overlay-versal-2ve-2vm.yaml
# libmetal: Linux (APU, Cortex-A78) <-> Bare-metal (RPU1, Cortex-R52)
# Default demo: PLM preloads the RPU1 firmware in BOOT.BIN

reserved-memory:
  libmetal_elf@98a8000:
    start: 0x98a8000
    size: 0x60000
    no-map: 1
  libmetal_desc0@9908000:
    start: 0x9908000
    size: 0x4000
    no-map: 1
  libmetal_desc1@990c000:
    start: 0x990c000
    size: 0x4000
    no-map: 1
  libmetal_data@9910000:
    start: 0x9910000
    size: 0x40000
    no-map: 1

axi:
  libmetal_uio_desc0@9908000:
    start: 0x9908000
    size: 0x4000
    compatible: "uio"
  libmetal_uio_desc1@990c000:
    start: 0x990c000
    size: 0x4000
    compatible: "uio"
  libmetal_uio_data@9910000:
    start: 0x9910000
    size: 0x40000
    compatible: "uio"

  timer@f1e90000:
    compatible: "uio"
  mailbox@eb360000:
    compatible: "uio"

domains:
  APU_Linux:
    compatible: openamp,domain-v1
    cpus:
      - cluster: cpus_a78
        cpumask: 0xff
        mode:
          secure: false
          el: 0x3
    os,type: linux

    domain-to-domain:
      compatible: openamp,domain-to-domain-v1

      libmetal-relation:
        compatible: libmetal,ipc-v1
        relation0:
          remote: RPU_1_BM
          carveouts: [ libmetal_uio_desc0@9908000, libmetal_uio_desc1@990c000, libmetal_uio_data@9910000 ]
          mbox: ipi_3_to_ipi_2
          timer: ttc3

  RPU_1_BM:
    compatible: openamp,domain-v1
    cpus:
      - cluster: cpus_r52_1
        cluster_cpu: cortexr52_1
        cpumask: 0x2
        mode:
          secure: true
          el: 0x3
    os,type: baremetal
    # libmetal uses TCM boot through PLM or Boot PDI, so you do not set xlnx,ddr-boot.
    domain-to-domain:
      compatible: openamp,domain-to-domain-v1

      libmetal-relation:
        compatible: libmetal,ipc-v1
        relation0:
          host: APU_Linux
          carveouts: [ libmetal_uio_desc0@9908000, libmetal_uio_desc1@990c000, libmetal_uio_data@9910000 ]
          mbox: ipi_2_to_ipi_3
          timer: ttc3
          elfload: [ libmetal_elf@98a8000 ]

    sram:
      - dev: libmetal_elf@98a8000
        start: 0x98a8000
        size: 0x60000
      - dev: r52_0b_atcm_global@eba80000
        label: r52_0b_atcm_global
        size: 64K
        spec_name: R52_0B_ATCM_GLOBAL
        start: '0xeba80000'
      - dev: r52_0b_btcm_global@eba90000
        label: r52_0b_btcm_global
        size: 32K
        spec_name: R52_0B_BTCM_GLOBAL
        start: '0xeba90000'
      - dev: r52_0b_ctcm_global@ebaa0000
        label: r52_0b_ctcm_global
        size: 32K
        spec_name: R52_0B_CTCM_GLOBAL
        start: '0xebaa0000'