RPMsg kernel space refers to the kernel drivers implementing VirtIO, RPMsg, and Remoteproc and that RPMsg user space refers to the OpenAMP implementation of VirtIO, RPMsg, and Remoteproc.
| Linux Kernel RPMsg/Remoteproc on APU + OpenAMP Library Used on RPU | OpenAMP Library Used on Linux Userspace + OpenAMP Library Used on RPU | Libmetal Library Used on Both APU and RPU | |
|---|---|---|---|
|
Linux boots RPU (RPU is a coprocessor to Linux APU host) |
Yes |
Yes |
Yes |
| Supports warm restart: Auto APU/RPU reconnect after APU restart |
Yes See |
No | User defined |
| Supports pre-defined shared memory range |
Yes |
Yes |
Yes See Shared Memory and Build Libmetal Firmware and Linux Application with Yocto Tools |
| Linux can dynamically allocate shared memory range |
Yes |
No | No |
| Supports Multiple communication channels (For example: both RPUs) |
Yes See OpenAMP Demos |
Yes See OpenAMP Demos |
Yes See OpenAMP Demos |
| Works with FSBL RPU boot | No | Yes |
Yes |
| Data Transfer Overhead | Memory copy between user application and Linux kernel, and Linux kernel space to shared memory | Memory copy between user application and shared memory |