...
Protocol | Features/Notes | VIRTIO Compat | OS Support | Material | Developed By | Used By | License(s) |
---|---|---|---|---|---|---|---|
remoteproc/rpmsg | Upstream Linux kernel implementation, assumes Linux master, tight coupling between remoteproc/rpmsg. | Limited - rpmsg depends on remoteproc for platform-specific transport mechanism. | Linux, Binary FW (ELF) | TI/Wizery/Linaro | GPL-2.0 | ||
OpenAMP remoteproc/rpmsg | Implementation of remoteproc/rpmsg on top of the OpenAMP libmetal framework. Focus on decoupling remoteproc/rpmsg, allowing non-Linux master cores. Interest in exploring rpmsg protocol implementation on alternative transport mechanisms (e.g. socket, UART, SPI, PCIe). | Limited - with plans to extend | Linux, Zephyr, FreeRTOS, Bare metal | https://drive.google.com/file/d/198kbwHojBHeM8QFnmSJd7dz5FLCpXPM9/view https://www.openampproject.org/ | Linaro/OpenAMP project (Xilinx, ST, Wind River) | Xilinx, ST, Wind River |
|
rpmsg-lite | Lightweight RPMSG implementation targeting resource-constrained MCUs. Usable as transport layer for e.g. eRPC. MISRA C-2012 adherence, good basis for ISO26262 | Limited - transport mechanism implemented in platform-specific code. | Bare metal, FreeRTOS, QNX, ThreadX, Zephyr, XOS | NXP | BSD-3-Clause | ||
IPCF | No updates in Linux SHM driver in 3-4 years | N | Linux, AUTOSAR, FreeRTOS, Zephyr, Bare metal | NXP | BSD-3-Clause | ||
ICCOM | Open issues:
| N | Linux, ??? | Bosch |
| ||
NvSciIpc | General IPC/stream framework that supports secure buffer sharing between threads, processes, VMs (inter-SoC), and across SoCs (via PCIe) | N | Linux, QNX | NVIDIA |
|
please list more ...
Observations
- In-kernel remoteproc/rpmsg is tightly coupled, and assumes a Linux-based master booting a slave core/OS (not suitable for > ASIL B).
- In-kernel rpmsg depends on remoteproc / remoteproc platform drivers provide the transport.
- Current rpmsg implementations do not make use of virtio backends for abstracted transport and control mechanisms (virtio-scmi, net/vsock, mmio, etc).
- Current remoteproc/rpmsg protocols are not defined in the OASIS VIRTIO spec, only generally through documentation and a number of papers (need alignment/collaboration with Linaro/OASIS)
- OpenAMP driving new work on rpmsg protocol standardization, abstraction, and new transport mechanisms, as well as devicetree integration (good opportunity for AGL/Linaro collab)
- rpmsg-lite currently provides the best starting point for RTOS→Linux processor control and the shortest path to ISO26262, could also benefit from the advancements being made in OpenAMP.