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.

[参考译文] TMDS64EVM:增加优化选项会使 ipc_rpmsg 不稳定

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1520586/tmds64evm-increasing-optimization-options-makes-ipc_rpmsg-unstable

器件型号:TMDS64EVM

工具/软件:


您好、TI 支持团队。

我对 AM64上的 ipc_rpmsg 有疑问。
SDK 为 MCU_PLUS_SDK_am64x_09_01_00_41。
使用示例 ipc_rpmsg_echo_am64x-evm_a53ss0-0_nortos_gcc-AArch64。

但是、我正在使用 armclang 编译 CA53工程以创建固件。
armclang 的版本为6.6。

利用优化选项-O0、CA53和 CR5之间的内核间通信可以正常工作、
但当选项更改为-O3时、它有时会停止正常工作。
它不是从 RPMessage_recv 中出来的。 似乎信标未发布、正在等待很长时间。

为了使 IPC rpmsg 即使在优化选项设置为-O3时也能正常工作、我应该对 ipc_rpmsg.c 等进行哪些修改?
我尝试了在 ipc_rpmsg.c 中将变量(gIpcRpmsgctrl)标记为易失性、但这并没有改善情况。
我想使用优化选项-O3、因此希望能就应该更改源代码的哪些部分提供一些建议。

请告诉我 ipc_rpmsg 代码中是否有因优化而不起作用的部分。

此致、
今泉清正。

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

    其他信息。
    更改了优化选项的文件如下:
    ipc_rpmsg.c
    ipc_rpmsg_vring.c
    ipc_notify_v0.c
    ipc_notify_v0_cfg.c

    此致、

    今泉清正。

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

    您好 Kiyomasa-san、以下是问题评论

    -我们的 ipc_rpmsg_echo 开箱即用 (OOB)演示只有启用-03 ? 或者、是否有任何其他变化?

    -作为一个测试,你能把 'recvMsg'数组更改为'volatile '吗?

    FYI、下面的线程报告了一个类似的问题(在他们使用 ipc_rpmsg_echo_linux 的情况下)、用户发现问题是由另一个模块中的越界问题导致的。  

    (+) AM62A7:偶尔进入 HwiP_DATA_ABORT_HANDLER 中断服务函数-处理器论坛-处理器- TI E2E 支持论坛

    要想知道是否在您的情况下、这个问题是通过我们的 OOB 演示触发的

    谢谢您、

    Paula

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

    您好 Paula Carrillo

    感谢您的答复。

    recvMsg'数组使其变为易失性代码的哪个部分?

    它不能单独与 ipc_rpmsg_echo 示例工程配合使用。
    我已将 ipc_rpmsg_echo 代码添加到程序中、并将其用作参考。
    我已将以下与 ipc_rpmsg_echo 相关的源代码添加到我的工程中、该工程正在运行。
    我没有更改以下源代码。
    ipc_rpmsg.c
    ipc_rpmsg_vring.c
    ipc_notify_v0.c
    ipc_notify_v0_cfg.c

    我将内联和全局变量标记为 volatile 作为测试。
    我会从现在开始检查操作、但可能没有太大改善。

    此致、

    今泉清正。

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

    尊敬的 Kiyomasa-San:

    从 examples\drivers\ipc\ipc_rpmsg_echo\ipc_rpmsg_echo.c 中、您可以找到:  

    char recvMsg[MAX_MSG_SIZE]
    您可以尝试将其更改为 Volatile
    请告诉我们您的测试进展如何。
    谢谢您、
    Paula