Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

RPMsg

From Wikipedia, the free encyclopedia
Inter-processor communication protocol
This article is about Remote Processor Messaging. For Restricted Permission Message, seeRpmsg.

RPMsg (Remote Processor Messaging) is aprotocol enabling inter-processor communication insidemulti-core processors.

Background

[edit]

ModernSoCs usually employ heterogeneous processors inAsymmetric multiprocessing (AMP) configurations, each of which may be running a different instance of anOperating system. Typically,SoCs have a central multi-core processor running a high-levelOS, such asLinux, in aSymmetric multiprocessing (SMP) configuration, and additional remote processors running various flavors of aReal-time operating system. These remote processors are often used to offloadCPU-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.

Implementations

[edit]

RPMsg is present in theLinux kernel,[1][2] has been demonstrated inZephyr (operating system),[3][4]FreeRTOS,[5] Cadence XOS,[6]ThreadX,[7]QNX[8] and is also available as a stand-alone component formicrocontroller-based systems.[9][10] Most of the RPMsg implementations are developed asopen-source.[2][9][10][11]

History

[edit]

RPMsg was developed for the Linux kernel by Ohad Ben-Cohen ofWizery[12][13][14][15][16] and was merged to Linux 3.4 on 20 May 2012.[17] It was first used byGoogle, inAndroid Ice Cream Sandwich, on theGalaxy Nexus phone, to enable offloading of cpu-intensive multimedia tasks on theOMAP4: from the ARM Cortex-A9 cores, running the Linux Kernel, to the ARM Cortex-M3 cores, running theTI-RTOS OS. Several semiconductor companies have since added support for RPMsg, includingTexas Instruments,[18]STMicroelectronics,[19]Xilinx,[11][20]NXP Semiconductors,[10]Renesas Electronics[21] andNordic Semiconductor.[22]

User-space access

[edit]

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 NameDescriptionKernel ForkOfficial website
imx_rpmsg_ttyExposes an RPMsg endpoint as a virtual TTY at/dev/ttyRPMSGx. Can be used wherever a serial-like connection is desirable.linux-imx[1]
rpmsg_charExposes 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.mainlineN/A
rpmsg_ctrlExposes a control interface at/dev/rpmsg_ctrlX that allows RPMsg endpoints to be created by user-space applications.mainlineN/A
rpmsg-netExposes an RPMsg endpoint as a virtual Ethernet network interface namedrpmsgX. Can be used to connect the two CPUs using at layer 2 and above.out of tree[2]
rpmsg-sysfsExposes rpmsg bus control primitives to userspace via sysfs.out of tree[3]

References

[edit]
  1. ^"Remote Processor Messaging (rpmsg) Framework — The Linux Kernel documentation".www.kernel.org. Retrieved2022-02-25.
  2. ^ab"Linux/Documentation/staging/rpmsg.rst - Linux Cross Reference - Bootlin".lxr.bootlin.com. Retrieved2019-09-04.
  3. ^Project, Zephyr (2019-02-20)."The Zephyr Project Demonstrates IoT Innovation at Embedded World".Zephyr Project. Retrieved2022-03-05.
  4. ^RPMsg Component, NXP Micro, 2022-02-16, retrieved2022-03-05
  5. ^RPMsg Component, NXP Micro, 2022-02-16, retrieved2022-03-05
  6. ^RPMsg Component, NXP Micro, 2022-02-16, retrieved2022-03-05
  7. ^RPMsg Component, NXP Micro, 2022-02-16, retrieved2022-03-05
  8. ^RPMsg Component, NXP Micro, 2022-02-16, retrieved2022-03-05
  9. ^ab"RPMsg-Lite User's Guide: RPMsg Component".nxpmicro.github.io. Archived fromthe original on 2017-02-09. Retrieved2016-09-27.
  10. ^abc"NXPmicro/rpmsg-lite".GitHub. Retrieved2016-09-27.
  11. ^ab"Xilinx Wiki - OpenAMP".www.wiki.xilinx.com. Retrieved2016-09-27.
  12. ^"Introducing a generic AMP/IPC framework [LWN.net]".lwn.net. Retrieved2022-02-24.
  13. ^"LKML: Ohad Ben-Cohen: [GIT PULL] adding rpmsg and remoteproc to 3.3".lkml.org. Retrieved2022-02-24.
  14. ^"LKML: Ohad Ben-Cohen: [PATCH 0/7] Introducing a generic AMP framework".lkml.org. Retrieved2022-02-24.
  15. ^"A Generic AMP/IPC Framework For Linux".www.phoronix.com. Retrieved2022-02-24.
  16. ^"kernel/git/torvalds/linux.git - Linux kernel source tree".git.kernel.org. Retrieved2022-07-03.
  17. ^"Linux_3.4 - Linux Kernel Newbies".kernelnewbies.org. Retrieved2022-07-03.
  18. ^"3.6.2.3. RPMsg Quick Start Guide — Processor SDK Linux for AM65X Documentation".software-dl.ti.com. Retrieved2022-02-25.
  19. ^"Linux RPMsg framework overview - stm32mpu".wiki.st.com. Retrieved2022-02-25.
  20. ^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.ISBN 978-1-5386-3897-2.S2CID 46746400.
  21. ^"Renesas RPMsg".
  22. ^"nRF5340: Multiprotocol RPMsg — nRF Connect SDK 1.9.99 documentation".developer.nordicsemi.com. Retrieved2022-03-05.


Stub icon

Thiscomputer-programming-related article is astub. You can help Wikipedia byadding missing information.

Retrieved from "https://en.wikipedia.org/w/index.php?title=RPMsg&oldid=1335168555"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp