工具/软件:
我在使 IPC 在两个 R5 内核(使用 J721EXSOMXEVM)和 FreeRTOS 上使用 IPC 的载板之间始终如一地工作时遇到问题。
我确实让 IPC 回声测试 FreeRTOS 正常工作、但由于它支持的所有不同处理器和电路板、使用时很复杂。
但是、我将它用作一个更简单的应用的示例、我想证明这一点。
MCU2_0 包含它要发送到 MCU2_1 的数据、MCU2_1 将接收这些数据。 但是、这并不能始终如一地工作、具体取决于两个处理器的启动方式。 因此、 我进行了一些搜索、并发现以下论坛讨论似乎是相关的:
所以我实现了一个方法/函数,试图做什么是在该“解决方案“中概述
因此、我的每个处理器都在一项任务中实现了一项功能、该任务会执行以下操作:
-初始化所有 IPC 内容 (ipc_init、VirtIO、RPMessage_init )
- 调用一个 RPMessage_create 获取一个句柄和我的端点
- RPMessage_annouce 通用服务名称
- RPMessage_getRemoteEndPt
- RPMessage_send 一个虚拟消息(“ TestX 其中 X 是源处理器编号)
- rpmessage_recv 虚拟消息。
但是、这种同步对我来说不起作用。 我必须首先启动 MCU2_1 处理器、甚至才能越过通知并接收消息发送和接收。 然后 MPU2_1 获取已发送的消息、但 MPU2_0 绝不会获取 MPU2_1 的已发送消息。
如果我首先启动 MCU2_0、那么我永远不会得到其中任何一个的通知。
这种 IPC 必须启动的顺序和时序对我来说毫无意义。