Skip to main content

aen-dualcore-* — dual M55 boot & IPC

The E8 carries two Cortex-M55 cores — HP (high-performance) and HE (high-efficiency). This family of bench examples proves both cores boot and exchange data on real silicon.

ExampleWhat it provesStatus
aen-hp-core-smokeM55-HP first light — SE releases the HP core from reset; liveness beacon in global SRAM0PASS
aen-dualcore-masterBoot both cores at runtime via the SE boot service se_service_boot_cpu(cpu_id, address)RESULT PASS
aen-dualcore-probeWhether a dual-entry ATOC boots both cores (it boots only HP)bench finding
aen-dualcore-doorbellHE→HP MHU-1 doorbell — every ring received with both cores livePASS
aen-dualcore-ipcBidirectional HE↔HP shared-memory request/response, 64/64 round-tripsRESULT PASS

Source: examples/aen/.

How it works

  • Boot. The SES-booted core starts the other M55 at runtime over the seservice0 MHU. (Dual-entry ATOC was found to boot only HP — hence the runtime boot path.)
  • Doorbell. Cores signal each other through the ARM MHU-1 windows (sender 0x400B0000, receiver 0x400A0000).
  • Data. A {seq, len, payload} mailbox lives in global SRAM0; correctness handshakes on seq, not the doorbell edge. CONFIG_DCACHE=n is mandatory — the shared mailbox is off-cache.

For the portable framed-RPC surface on top of this, see aen-rpc-pingpong.

board.yaml

Both peer images ship; the dual-core build targets the HP and HE cores:

som:
sku: E1M-AEN801

preset: e1m-evk

cores:
m55_hp:
app: ./src/hp
m55_he:
app: ./src/he

diagnostics:
log_level: info

Expected output

[dualcore-ipc] HP up, HE up
[dualcore-ipc] round-trips: 64/64
[dualcore-ipc] RESULT PASS

See also

Questions about this page? Discuss in Community Forum