This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RPMessage - AM64X:多个 MCU-PLUS-SDK 端点都映射到 localEndPtObj[]中的同一对象

Guru**** 2873830 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1629592/mcu-plus-sdk-am64x-multiple-rpmessage-endpoints-all-mapped-to-the-same-object-in-localendptobj

器件型号: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;
    }
}
这里controlEndPtObjgIpcRpmsg_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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我已经检查了驱动程序代码、是的、此处的理解是正确的。 gIpcRpmsgCtrl 对象只有一个  controlEndPtObj 对象 、如果每次使用相同的 Message_Object 作为 Message_Object 的 localEndPtObj   指向此对象、该对象都会被覆盖。

    2. 是否有任何官方或推荐的方法来创建具有回调的多个端点?
    4. 或者 TI 是否建议使用不同的设计来处理多个自定义端点?

    您可以参考 SDK 中提供的 rpmsg_echo 示例。 我们为不同的端点创建了不同的 RP Message_Object。

    [引述 userid=“649787" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1629592/mcu-plus-sdk-am64x-multiple-rpmessage-endpoints-all-mapped-to-the-same-object-in-localendptobj。]3. 是否可以扩展 Ipc Rpmsg_Ctrl、例如:

    是的、这应该起作用。 如果您遇到任何问题、请告知我们。

    此致、

    Tushar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tushar-san:

    非常感谢您查看代码。


    特别是 rpmsg_echo 示例的注释:

    /* RPMessage_Object MUST be global or static */
    static RPMessage_Object gRecvMsgObject;
    内容非常丰富、帮助我清楚地了解了这个问题。
    我非常感谢您的支持以及您花时间了解详细信息。
    此致、
    Hoshina Hiroki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您的支持以及您花时间了解详细信息。

    很高兴知道以上内容。 感谢您发送编修。

    此致、

    Tushar