Skip to main content

rpmsg-aen

:::warning [UNTESTED] — v0.6 paper-correct, blocked on AEN memory map The AEN801 preset's memory_map: block carries TBD strings on the carve-out fields. tan build no longer aborts on TBD metadata — instead the orchestrator emits a status: blocked entry in system-manifest.yaml with the reason, and the generated <alp/system_ipc.h> carries an #error directive so the slice compile trips at consumer build time with a clear message. CI's manifest-shape + determinism gates pass; HiL bring-up unblocks when the authoritative AEN memory map lands. :::

Heterogeneous-compute demo for E1M-AEN801 (Alif Ensemble E8). The E8 die carries a 2-core Cortex-A32 cluster plus two Cortex-M55 cores (HP + HE). This example wires:

  • a32_cluster — Yocto Linux consumer under linux/.
  • m55_hp — Zephyr producer under m55_hp/ reading the EVK board's LSM6DSO + BMP581 sensors and publishing them over RPMsg.
  • m55_he — left at the SoM topology default (stock-shim Zephyr image); the always-on M55-HE core stays alive for future low-power offload but doesn't participate in this demo's RPMsg channel.

Source: examples/multicore/rpmsg-aen/.

board.yaml

som:
sku: E1M-AEN801
hw_rev: r1

preset: e1m-evk # lsm6dso + bmp581 come from the preset's populated:

cores:
a32_cluster:
# os: omitted → topology default (a32_cluster → yocto).
app: ./linux
image: alp-image-edge
libraries: [mbedtls, nlohmann_json]
m55_hp:
# os: omitted → topology default (m55_hp → zephyr).
app: ./m55_hp
peripherals: [i2c]
libraries: [cmsis_dsp]
m55_he:
os: off # explicit override: peer core present in silicon, unused here

ipc:
- kind: rpmsg
endpoints: [a32_cluster, m55_hp]
carve_out_kb: 256
name: alp_default_rpmsg

Cache policy

cacheable: is deliberately left unset here. The spec would flip an AEN carve-out to cacheable by default because the M55 D-cache is on — but <alp/rpc.h> has no cache-maintenance layer behind that flag yet, so the loader rejects an explicit cacheable: true on a kind: rpmsg entry until real cache maintenance ships. The orchestrator instead forces CONFIG_DCACHE=n for this core, the same conservative posture V2N already has.

:::note This is not the raw_shmem auto-emit Declaring an ipc: entry of kind: raw_shmem emits CONFIG_DCACHE=n for every core in that entry's endpoints unless the entry sets cacheable: true. That rule covers raw_shmem only — it does not apply to kind: rpmsg (this example) or kind: mailbox_only. The CONFIG_DCACHE=n you get here comes from the separate RPMsg carve-out path, not from that rule. See mproc-mailbox for the raw_shmem case. :::

See also

Questions about this page? Discuss in Community Forum