В настоящее время я работаю над проектом, в котором рассматривается возможность использования RPMsg для реализации связи между процессорами под управлением Linux/RTOS. . Таким образом, я прочитал следующие две страницы ядра Linux:
https://www.kernel.org/doc/html/latest/ ... eproc.html
https://www.kernel.org/doc/html/latest/ ... rpmsg.html
и просмотрел здесь часть исходного кода ядра:
https://github.com/torvalds/linux/tree/ ... vers/rpmsg
Однако у меня все еще есть несколько вопросов, связанных с адресами конечных точек, которые никогда не использовались об/минсг. Кажется, что создание нескольких конечных точек для устройства было бы лучшим вариантом для платформы, но на страницах API рекомендуется использовать RPMSG_ADDR_ANY для создания адресов для конечных точек.
Почему это так? Чтобы избежать использования кода драйвера адреса, который уже используется шиной rpmsg?
При вызове rpmsg_create_ept() возвращается указатель rpmsg_endpoint, но насколько далеко как я смог видеть, эта структура имеет только локальный адрес. Как можно получить адрес назначения для передачи на удаленный процессор? Я предполагаю, что как только этот адрес будет получен, его можно будет отправить через именованное служебное сообщение, так что конечный результат будет выглядеть так:
Код: Выделить всё
CPU_A
ept_1: src = 1, dst = 3
ept_2: src = 2, dst = 4
CPU_B
ept_3: src = 3, dst = 1
ept_4: src = 4, dst = 2
Подробнее здесь: https://stackoverflow.com/questions/793 ... nel-driver