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.

[参考译文] AM2434:AM2434 上的多核应用开发

Guru**** 2931100 points

Other Parts Discussed in Thread: LP-AM243, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1651492/am2434-multi-core-application-development-on-am2434

器件型号: AM2434
主题中讨论的其他器件: LP-AM243SysConfig

您好团队:

我目前正在使用 LP-AM243 LaunchPad 开发多核应用、让不同的软件组件在不同的内核上运行。

我正在使用 mcu_plus_sdk_am243x_12_00_00_26 SDK 进行开发。 在学习和实现过程中、我参考了 SDK 中提供的 ipc_notify_echo 示例。

使用的参考文档:
https://software-dl.ti.com/processor-industrial-sw/esd/ind_comms_sdk/am243x/09_02_00_08/mcu_plus_sdk/docs/api_guide_am243x/EXAMPLES_DRIVERS_IPC_NOTIFY_ECHO.html

但是、当我尝试如文档中所述运行示例时、应用程序无法按预期执行、并且我遇到问题(与所述流程相比,它无法正常运行/产生意外行为)。

我希望得到以下方面的指导:

  1. 在 LP-AM2434 上开发和运行多核应用的正确工作流程是什么?
  2. 应该如何使用 MCU_PLUS_SDK_am243x_12_00_00_26 在不同的内核上构建、加载和执行单独的应用程序
  3. 正确运行 ipc_notify_echo 示例而不出现错误的正确步骤是什么?
  4. 是否必须遵循任何必要的 SysConfig 设置、系统工程配置或引导序列要求?
  5. 任何确保内核之间可靠 IPC 通信的调试指南或最佳实践都会有所帮助。

我正在尝试确保正确理解该器件上的多核引导流程和 IPC 通信机制。

感谢您的支持。

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

    您好、

    此处使用的文档参考 SDK 09.02。 对于 SDK v12.0、请参阅 MCU+SDK

     请详细说明您执行了哪些所有步骤?

    如果有错误消息、请附加错误消息。

    此致、

    Tushar

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

    尊敬的 Tushar:

    感谢您的答复。

    我理解我引用的文档来自 SDK 09.02。 但是、在比较 SDK 09.02 和 SDK 12.00 中的 IPC Notify Echo 示例文档后、我没有观察到示例流程或说明中有任何显著差异、因此在使用 MCU+ SDK AM243x v12.00.00.26 时将其用作参考。

    关于我执行的步骤:

    1. ipc_notify_echo 从 MCU+ SDK AM243x v12.00.00.26 导入并构建示例。
    2. 工程编译成功、不会出现任何编译或链接错误。
    3. 使用 CCS 将生成的应用程序加载到 LP-AM2434 LaunchPad 上。

    但是、在加载并运行应用程序后、执行似乎保留在 vApplicationIdleHook(void) 函数中、并且无法按预期继续。 因此、我无法观察示例文档中所述的 IPC 通知交换。

    我随附了屏幕截图、其中显示了运行代码之前和运行代码之后的应用程序状态、以供参考。

    此外、我希望澄清以下几点:

    • 在 LP-AM2434 上开发和运行多核应用的推荐工作流程是什么?
    • 如何使用 MCU+ SDK AM243x v12.00.00.26 在不同的内核上构建、加载和执行各个独立的应用程序?
    • ipc_notify_echo 成功运行示例的正确步骤是什么?
    • 是否有任何必须遵循的必要 SysConfig 设置、系统工程配置或引导序列要求?
    • 是否有任何调试指南或最佳实践来验证内核之间的 IPC 通信并对其进行故障排除?

    感谢您的支持。 我期待着你的指导。

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

    您好、

    您还需要在所有其他内核上运行应用程序。 我只能看到您正在运行 R5F0-0 内核应用程序、其余所有内核仍在 main() 函数调用处停止。

    请运行所有内核并更新结果。

    此致、

    Tushar

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

    您好、
    我遵循您的建议、在所有内核上手动运行该应用。  

    运行所有内核后、应用程序似乎不会按预期执行。 相反、执行最终在停止 HOSTexit()。 我随附了显示此行为的屏幕截图、以供参考。

    我还尝试在停止后再次手动恢复执行、并附加了显示结果状态的其他屏幕截图。

    此时、我不确定我的设置中是否存在错误、或者是否缺少执行序列中所需的步骤。 请您就以下内容提供建议?

    • HOSTexit() 对于该 ipc_notify_echo 示例、是否需要在该处停止?
    • 手动运行所有内核后、是否需要执行任何额外步骤?
    • 多核 IPC 示例是否必须遵循特定的加载或执行序列?
    • 我是否应该验证任何配置设置、SysConfig 选项或系统工程设置?

    我附上了下面的相关屏幕截图以供您查看。

    感谢您的帮助。 我期待您提供有关后续故障排除步骤的指导。

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

    您好、

    从上面看、您的代码似乎已成功执行。 您能否尝试打开所有 UART COM 端口并检查日志是否来?

    此致、

    Tushar

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

    尊敬的 Tushar:

    感谢您的建议。

    我打开了所有可用的 UART COM 端口并能够观察到预期输出。 日志指示 IPC Notify Echo 示例在所有内核上成功执行、并以消息“All tests have passed!!“完成。 输出如下所示以供参考:

    [r5F1-1] 0.000101s: [IPC Notify echo] 远程核心等待来自主核心的消息...!!!
    [IPC Notify echo] 主内核启动消息交换!!!
    [m4f0-0] 0.000020s: [IPC Notify echo] 远程内核正在等待来自主内核的消息...!!!
    [r5f0-1] 6.090101s : [IPC Notify echo] 远程内核等待来自主内核的消息...!
    [r5f0-1] 8.397116s : [IPC Notify echo] 远程内核已回显所有消息!!!
    [r5F1-0] 4.339102s : [IPC Notify echo] 远程内核正在等待来自主内核的消息...!!!
    [r5F1-0] 6.64618s : [IPC Notify echo] 远程内核已回显所有消息!!!
    [r5F1-1] 5.025214s : [IPC Notify echo] 远程内核已回显所有消息!!!
    [IPC Notify echo ] 主内核从 4 个远程内核接收到的所有回传消息!!!
    发送到每个内核的[IPC Notify echo]消息= 1000000
    [IPC Notify echo] 远程内核数量= 4
    所有测试均已通过!!
    [m4f0-0] 3.501311s : [IPC Notify echo] 远程内核已回传所有消息!!!

    之前、我只在监视 CCS 控制台、没有检查 UART 终端。 根据 UART 输出、该示例似乎正常运行。

    现在我想更好地了解 IPC 通信的实现:

    1. 哪些函数负责将消息从一个内核发送到另一个内核?
    2. 如何在链接在一起并同步的不同内核上运行主要功能?
    3. 在示例工程中、我可以在哪里自定义传输的数据或修改通信流?
    4. 您是否建议查看任何关键源文件、API 或文档以更详细地了解 IPC Notify 机制?

    感谢您的帮助。 我感谢关于 IPC 示例内部工作的任何指导。

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

    请参阅 IPC_Guide 以详细了解 IPC。