Plan your shared memory layout. The regions must meet these requirements:
- Not overlap with Linux kernel memory or any other reserved region
- Be contiguous or at least in a DDR range accessible by both APU and RPU
- Use
no-map: 1to prevent Linux from using the memory for other purposes
The following table lists sizing guidelines:
| Region | Minimum Size | Recommended | Constraint |
|---|---|---|---|
Firmware (ddrboot/rproc0) |
Depends on ELF size | 384 KB | Must fit the entire compiled ELF |
Resource Table (rsctbl) |
256 B | 256 B | Fixed size |
| Each VRing | 16 KB | 16 KB | Depends on num buffers × alignment; 16 KB supports 8
buffers at 4 KB alignment |
| Shared buffer | 64 KB minimum | 256 KB–1 MB | Depends on message throughput requirements |
The following address layout convention
applies:
Base + 0x000000 Resource Table (0x100 bytes) -- or combined rproc0 on legacy
Base + 0x000100 Firmware DDR region -- ddrboot (on newer SoCs)
Base + 0x060000 VRing0 (0x4000)
Base + 0x064000 VRing1 (0x4000)
Base + 0x068000 Shared buffer pool
For the default overlays, Base = 0x09800000.
Tip: If you need a larger firmware region, for example,
for a complex Zephyr application, increase the
ddrboot size and shift
the vring and buffer addresses accordingly. Make sure the ddrboot end
address does not overlap vdev0vring0.