Note that 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 (e.g. both RPUs) |
Yes See OpenAMP Demos |
Yes See OpenAMP Demos |
Yes See OpenAMP Demos |
|
Works with FSBL RPU boot |
No |
Yes |
Yes See |
|
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 |
|