器件型号:MCU-PLUS-SDK AM64X-AM64X
我正在使用的器件 SDK 11.00.0.15 、并且我正在使用 TI IPC 中包含的 RPMessage 实施。
我尝试使用自己的回调OnRPMessage () 在一系列端点 ID 中注册多个本地端点。
但是、我面临以下问题:
即使我循环使用多个端点 ID、中的所有条目gIpcRpmsgCtrl.localEndPtObj[]最终都指向同一个 RPMessage 对象。
因此、端点的行为并非独立的。
for (int i = 0 ; i < 7 ; i++)
{
RPMessage_CreateParams_init(&createPrms);
createPrms.localEndPt = i;
createPrms.recvCallback = RPMessage_User_Callback_Handler;
status = RPMessage_construct(&gIpcRpmsgCtrl.controlEndPtObj, &createPrms);
if (SystemP_SUCCESS != status)
{
break;
}
}
controlEndPtObj是gIpcRpmsg_Ctrl TI Message_Object 中定义的唯一 RPR。 因为我通过了测试 同一对象controlEndPtObj () 每次:
RPMessage_construct()将相同的指针存储在中localEndPtObj[i]- 因此、所有条目的结尾相同:
localEndPtObj[4] → &controlEndPtObj
localEndPtObj[5] → &controlEndPtObj
localEndPtObj[6] → &controlEndPtObj
...
因此、多个端点无法独立运行。
问题:
RPMessage 的设计是否使每个本地端点都必须有自己的专用 RP Message_Object 实例?
如果是:
1.我应该为用户定义的端点分配一个 RPr Message_Object 数组是正确的吗?
2.是否有任何官方或推荐的方法来创建具有回调的多个端点?
3.是否可以扩展 Ipc Rpmsg_Ctrl、例如:
CRPMessage_Object userEndPtObj[RPMESSAGE_MAX_LOCAL_ENDPT];
并将&userEndPtObj[i]传递到 RPMessage_construct ()?
或者 TI 是否建议使用不同的设计来处理多个定制端点?
此致、
Hoshina Hiroki