Modern SoCs usually employ heterogeneous processors in Asymmetric multiprocessing (AMP) configurations, each of which may be running a different instance of an Operating system. Typically, SoCs have a central multi-core processor running a high-level OS, such as Linux, in a Symmetric multiprocessing (SMP) configuration, and additional remote processors running various flavors of a Real-time operating system. These remote processors are often used to offload CPU-intensive tasks from the main application processor, or to access hardware blocks otherwise inaccessible by the central processor. RPMsg facilitates communication between the various processors in the system, by providing means of sending inter-processor messages back and forth.
RPMsg provides a basic framework for sending framed messages between heterogenous processors, but a higher level driver is required to expose RPMsg functionality to user space in a useful way. Some of these drivers are mainlined in the Linux kernel, others are provided in a SoC vendor's kernel fork, and yet others are available out of tree.
Driver Name
Description
Kernel Fork
Official website
imx_rpmsg_tty
Exposes an RPMsg endpoint as a virtual TTY at /dev/ttyRPMSGx. Can be used wherever a serial-like connection is desirable.
linux-imx
rpmsg_char
Exposes an RPMsg endpoint as a character device at/dev/rpmsgX, allowing a userspace applications to send and receive raw RPMsg packets via standard file I/O operations.
mainline
N/A
rpmsg_ctrl
Exposes a control interface at /dev/rpmsg_ctrlX that allows RPMsg endpoints to be created by user-space applications.
mainline
N/A
rpmsg-net
Exposes an RPMsg endpoint as a virtual Ethernet network interface named rpmsgX. Can be used to connect the two CPUs using at layer 2 and above.
out of tree
rpmsg-sysfs
Exposes rpmsg bus control primitives to userspace via sysfs.
↑Aboelhassan, Mustafa O. E.; Bartik, Ondrej; Novak, Marek (November 2017). "Embedded multi-core systems for mixed-critical applications with RPMSG protocol based on xilinx ZYNQ-7000". 2017 7th IEEE International Conference on Control System, Computing and Engineering (ICCSCE). pp.162–167. doi:10.1109/ICCSCE.2017.8284398. ISBN978-1-5386-3897-2. S2CID46746400.
This page is based on this Wikipedia article Text is available under the CC BY-SA 4.0 license; additional terms may apply. Images, videos and audio are available under their respective licenses.