Skip to content

renode(TEST-PIX-019): wire the real NXP MU (IPCF doorbell) on the M7↔M4 link#105

Merged
avrabe merged 1 commit into
mainfrom
renode/m4-mu-doorbell
Jun 25, 2026
Merged

renode(TEST-PIX-019): wire the real NXP MU (IPCF doorbell) on the M7↔M4 link#105
avrabe merged 1 commit into
mainfrom
renode/m4-mu-doorbell

Conversation

@avrabe

@avrabe avrabe commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

"do the doorbell" — the M7↔M4 link now carries the real NXP MU model (Miscellaneous.IMXRT700_MessagingUnit, same MU IP family as RT1176) instead of a plain-memory stub:

  • per-core instances (aInstance=cpu_m7 @0x40C4C000, bInstance=cpu_m4 @0x40C4D000)
  • the cross-core doorbell IRQ lines (AInstanceIRQ→nvic_m7, BInstanceIRQ→nvic_m4)

This models the NXP IPCF/RPMsg mechanism faithfully (your IPCF point): MU = the doorbell, the SHMEM ring @0x20400000 = the RPMsg vring/payload — the relay-bus carrier (relay#177) maps onto exactly this on the on-die link.

3-core harness still PASSES with the MU wired (M7 banner + M4 SHMEM heartbeat, no regression).

Honest constraint: an interrupt-driven doorbell (firmware drives the MU's two-sided TR/RX-IE protocol) needs the RT1170/RT700 MU register map (TR offset, RX-interrupt-enable bit, IRQ number) — not extractable from this Renode AOT build (no model source, no robot exercising it), so I did not blind-guess and claim a working IRQ. Asked gale for the MU register access + the gust ipc-rx consumer (gale#65). Until then: doorbell hardware wired + SHMEM ring is the live link; the reactive handoff stays orchestration-modeled.

rivet validate (v0.18.0): PASS.

🤖 Generated with Claude Code

…->M4 link, replacing the stub

"do the doorbell": the M7<->M4 link now carries the real NXP MU model
(Miscellaneous.IMXRT700_MessagingUnit — same MU IP family as RT1176) instead of a
plain-memory stub: per-core instances (aInstance=cpu_m7 @0x40C4C000, bInstance=
cpu_m4 @0x40C4D000) + the cross-core doorbell IRQ lines (AInstanceIRQ->nvic_m7,
BInstanceIRQ->nvic_m4). This models the NXP IPCF/RPMsg mechanism faithfully:
MU = the doorbell, the SHMEM ring @0x20400000 = the RPMsg vring/payload (the
relay-bus carrier relay#177 maps onto exactly this on the on-die link).

3-core harness STILL PASSES with the MU wired (M7 banner + M4 SHMEM heartbeat,
no regression).

HONEST: an interrupt-DRIVEN doorbell (firmware drives the MU's two-sided TR/RX-IE
protocol) needs the RT1170/RT700 MU register map (TR offset, RX-IE bit, IRQ number)
— not extractable from this Renode AOT build (no model source, no robot exercising
it), so NOT blind-guessed. Asked gale for the MU register access + the gust ipc-rx
consumer (gale#65). Until then: doorbell hardware wired + SHMEM ring is the live
link; reactive handoff stays orchestration-modeled.

rivet validate (v0.18.0): PASS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@avrabe avrabe merged commit 2826dbb into main Jun 25, 2026
4 checks passed
@avrabe avrabe deleted the renode/m4-mu-doorbell branch June 25, 2026 05:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant