RPMsg
RPMsg (обмен сообщениями удаленного процессора) — это протокол , обеспечивающий межпроцессорную связь внутри многоядерных процессоров.
Фон
[ редактировать ]Современные SoC обычно используют гетерогенные процессоры в конфигурациях асимметричной многопроцессорной обработки (AMP), на каждом из которых может работать отдельный экземпляр операционной системы . Обычно SoC имеют центральный многоядерный процессор под управлением ОС высокого уровня , например Linux , в конфигурации симметричной многопроцессорности (SMP), а также дополнительные удаленные процессоры, на которых работают различные варианты операционной системы реального времени . Эти удаленные процессоры часто используются для разгрузки ресурсоемких задач центрального процессора приложений или для доступа к аппаратным блокам, которые в противном случае были бы недоступны центральному процессору. RPMsg облегчает связь между различными процессорами в системе, предоставляя средства отправки межпроцессорных сообщений туда и обратно.
Реализации
[ редактировать ]RPMsg присутствует в ядре Linux , [1] [2] было продемонстрировано в Zephyr (операционная система) , [3] [4] FreeRTOS , [5] Каденс XOS, [6] ПотокX , [7] QNX [8] а также доступен как отдельный компонент для систем на базе микроконтроллеров . [9] [10] Большинство реализаций RPMsg разрабатываются с открытым исходным кодом . [2] [9] [10] [11]
История
[ редактировать ]RPMsg был разработан для ядра Linux Охадом Бен-Коэном из Wizery. [12] [13] [14] [15] [16] и был объединен с Linux 3.4 20 мая 2012 года. [17] Впервые он был использован Google в Android Ice Cream Sandwich на телефоне Galaxy Nexus , чтобы обеспечить разгрузку ресурсоемких мультимедийных задач на OMAP4 : с ядер ARM Cortex-A9, на которых работает ядро Linux, на ARM Cortex-A9. Ядра M3 под управлением ОС TI-RTOS . С тех пор несколько компаний-производителей полупроводников добавили поддержку RPMsg, в том числе Texas Instruments . [18] СТМикроэлектроника , [19] Ксилинкс , [11] [20] НХП Полупроводники , [10] Ренесас Электроникс [21] и Nordic Semiconductor . [22]
Доступ к пользовательскому пространству
[ редактировать ]RPMsg предоставляет базовую структуру для отправки кадровых сообщений между разнородными процессорами, но для эффективного предоставления функциональности RPMsg пользовательскому пространству требуется драйвер более высокого уровня. Некоторые из этих драйверов встроены в ядро Linux, другие предоставляются в ответвлении ядра поставщика SoC, а третьи доступны вне дерева.
Имя драйвера | Описание | Форк ядра | Официальный сайт |
---|---|---|---|
imx_rpmg_tty | Предоставляет конечную точку RPMsg как виртуальный TTY на /dev/ttyRPMSGx . Может использоваться везде, где желательно последовательное соединение.
|
Linux-IMX | [1] |
rpmsg_char | Предоставляет конечную точку RPMsg как символьное устройство на /dev/rpmsgX , позволяя приложениям пользовательского пространства отправлять и получать необработанные пакеты RPMsg с помощью стандартных операций файлового ввода-вывода.
|
магистраль | Н/Д |
rpmsg_ctrl | Предоставляет интерфейс управления по адресу /dev/rpmsg_ctrlX это позволяет приложениям пользовательского пространства создавать конечные точки RPMsg.
|
магистраль | Н/Д |
rpmsg-net | Предоставляет конечную точку RPMsg как виртуальный сетевой интерфейс Ethernet с именем rpmsgX . Может использоваться для соединения двух ЦП на уровне 2 и выше.
|
из дерева | [2] |
rpmsg-sysfs | Предоставляет примитивы управления шиной rpmsg пользовательскому пространству через sysfs. | из дерева | [3] |
Ссылки
[ редактировать ]- ^ «Среда обмена сообщениями удаленного процессора (rpmsg) — документация по ядру Linux» . www.kernel.org . Проверено 25 февраля 2022 г.
- ^ Jump up to: а б «Linux/Documentation/staging/rpmsg.rst — Перекрестная ссылка Linux — Bootlin» . lxr.bootlin.com . Проверено 4 сентября 2019 г.
- ^ Проект Зефир (20 февраля 2019 г.). «Проект Zephyr демонстрирует инновации в области Интернета вещей во встроенном мире» . Проект Зефир . Проверено 5 марта 2022 г.
- ^ Компонент RPMsg , NXP Micro, 16 февраля 2022 г. , получено 5 марта 2022 г.
- ^ Компонент RPMsg , NXP Micro, 16 февраля 2022 г. , получено 5 марта 2022 г.
- ^ Компонент RPMsg , NXP Micro, 16 февраля 2022 г. , получено 5 марта 2022 г.
- ^ Компонент RPMsg , NXP Micro, 16 февраля 2022 г. , получено 5 марта 2022 г.
- ^ Компонент RPMsg , NXP Micro, 16 февраля 2022 г. , получено 5 марта 2022 г.
- ^ Jump up to: а б «Руководство пользователя RPMsg-Lite: Компонент RPMsg» . nxpmicro.github.io . Проверено 27 сентября 2016 г.
- ^ Jump up to: а б с «NXPmicro/rpmsg-lite» . Гитхаб . Проверено 27 сентября 2016 г.
- ^ Jump up to: а б «Xilinx Wiki — OpenAMP» . www.wiki.xilinx.com . Проверено 27 сентября 2016 г.
- ^ «Представляем общую структуру AMP/IPC [LWN.net]» . lwn.net . Проверено 24 февраля 2022 г.
- ^ «LKML: Охад Бен-Коэн: [GIT PULL] добавление rpmsg и RemoteProc в версию 3.3» . lkml.org . Проверено 24 февраля 2022 г.
- ^ «LKML: Охад Бен-Коэн: [ОБНОВЛЕНИЕ 0/7] Представляем общую структуру AMP» . lkml.org . Проверено 24 февраля 2022 г.
- ^ «Общая платформа AMP/IPC для Linux» . www.phoronix.com . Проверено 24 февраля 2022 г.
- ^ «kernel/git/torvalds/linux.git — дерево исходного кода ядра Linux» . git.kernel.org . Проверено 3 июля 2022 г.
- ^ «Linux_3.4 — новички в ядре Linux» . kernelnewbies.org . Проверено 3 июля 2022 г.
- ^ «3.6.2.3. Краткое руководство по RPMsg — Документация по процессорному SDK Linux для AM65X» . программное обеспечение-dl.ti.com . Проверено 25 февраля 2022 г.
- ^ «Обзор платформы Linux RPMsg — stm32mpu» . wiki.st.com . Проверено 25 февраля 2022 г.
- ^ Абоэльхассан, Мустафа О.Э.; Бартик, Ондрей; Новак, Марек (ноябрь 2017 г.). «Встраиваемые многоядерные системы для смешанно-критичных приложений с протоколом RPMSG на базе xilinx ZYNQ-7000» . 2017 7-я Международная конференция IEEE по системам управления, вычислениям и инженерии (ICCSCE) . стр. 162–167. doi : 10.1109/ICCSCE.2017.8284398 . ISBN 978-1-5386-3897-2 . S2CID 46746400 .
- ^ «Ренесас РПМсг» .
- ^ «nRF5340: многопротокольный RPMsg — документация nRF Connect SDK 1.9.99» . http://developer.nordicsemi.com . Проверено 5 марта 2022 г.