mproc-mailbox
Cortex-M55-HP ↔ Cortex-M55-HE mailbox round-trip on AEN. HP-side stages a payload in shared SRAM, signals the peer via the hardware mailbox, waits for a reply, reads the result back. Both peer images ship in the SDK.
Source: examples/mproc-mailbox/.
What it shows
- Opening a shared-memory region (
alp_shmem_open) and a hardware mailbox (alp_mbox_open) by portable instance IDs. - Staging payload bytes via
alp_shmem_write_at— the backend handles cache coherency on the way out. - Signalling the peer with
alp_mbox_sendcarrying a small(offset, length)tuple pointing at the staged bytes. - Blocking on
alp_mbox_recvfor the peer's reply.
board.yaml (HP side)
schema_version: 2
som:
sku: E1M-AEN701
carrier:
name: E1M-EVK
cores:
m55_hp:
os: zephyr
app: ./src
peripherals: [mproc]
m55_he:
os: zephyr
app: ./peer
peripherals: [mproc]
diagnostics:
log_level: info
Build
# native_sim (HP-side only; no peer core)
west alp-build -b native_sim/native/64 alp-sdk/examples/mproc-mailbox
west build -d build -t run
# Real silicon (AEN dual-core, Zephyr v4.4 upstream board)
west alp-build -b ensemble_e8_dk/ae402fa0e5597le0/rtss_hp alp-sdk/examples/mproc-mailbox
west build -b ensemble_e8_dk/ae402fa0e5597le0/rtss_he alp-sdk/examples/mproc-mailbox/peer
west flash
Flash the HP image into the RTSS-HP slot and the HE peer image into the RTSS-HE slot. Once both are running:
[mproc] init mbox + shmem
[mproc] sending payload "hello-from-HP" (13 bytes)
[mproc-peer] request offset=0 len=13
[mproc-peer] payload "hello-from-HP"
[mproc-peer] replied "echo: hello-from-HP" (19 bytes)
[mproc] HE woke up, payload visible in shmem
[mproc] HP read reply OK
[mproc] done
Sysbuild dual-image flow lands in v0.4 — until then, build both halves with separate west invocations as shown.
See also
Questions about this page? Discuss in Community Forum