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 See Building Linux Applications Using OpenAMP RPMsg in Linux Userspace |
Yes |
Supports warm restart: Auto APU/RPU reconnect after APU restart |
Yes See |
No | User defined |
Supports pre-defined shared memory range |
Yes |
Yes See Building Linux Applications Using OpenAMP RPMsg in Linux Userspace |
Yes See Shared Memory and Enable Linux Demo Application Using Libmetal with PetaLinux 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 |