Linux App RPMsg Driver VirtIO IPI HW Zephyr OpenAMP Zephyr App
│ │ │ │ │ │
├─write("/dev/ttyRPMSG0")─► │ │ │ │
│ │ │ │ │ │
│ ├─Allocate buffer───► │ │ │
│ │ │ │ │ │
│ ├─Update VRing0─────► │ │ │
│ │ │ │ │ │
│ │ ├─Kick IPI─────► │ │
│ │ │ │ │ │
│ │ │ ├─IRQ 0x41───────────► │
│ │ │ │ │ │
│ │ │ │ ├─Process VRing0─►
│ │ │ │ │ │
│ │ │ │ │ ┌───────────┤
│ │ │ │ │ │Callback │
│ │ │ │ │ │invoked │
│ │ │ │ │ └───────────►
│ │ │ │ │ │
│ │ │ │ ◄─rpmsg_send()───┤
│ │ │ │ │ │
│ │ │ │ ├─Update VRing1──┤
│ │ │ │ │ │
│ │ │ ◄────Kick IPI────────┤ │
│ │ │ │ │ │
│ │ ◄──IRQ 0x39────┤ │ │
│ │ │ │ │ │
│ ◄─Process VRing1────┤ │ │ │
│ │ │ │ │ │
◄───read() returns data───┤ │ │ │ │
│ │ │ │ │ │