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.

[参考译文] R5-AM243X:单个 MCU-PLUS-SDK 内核是否可能进行软件复位?

Guru**** 2392905 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1501295/mcu-plus-sdk-am243x-possibility-of-a-software-reset-of-a-singular-r5-core

器件型号:AM243X - MCU-PLUS-SDK

工具/软件:

您好专家、

我想弄清楚是否以及如何能够在 AM243x 的 MAIN 域中复位单个 R5内核。 与使用 CCS 进行调试类似、我希望复位一个 CPU 内核、加载固件并再次启动该内核。 但不在调试中、但在运行期间由 SoC 的另一个内核触发。

因此、我更喜欢的结果是:
-使用内核 R5 0-1触发复位

-重置内核 R5 0-0

-再次加载固件并重新启动内核 R5 0-0

-保留主域的其余部分(MSRAM 数据、...)

此致

Robin

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

    您好、

    我正在查看您的查询 ,你可能会期望在一两天内回复.

    此致、

    Anil.

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

    您好、

    谢谢你,我会等待你的答复。

    此致、

    Robin

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

    您好:

    有什么关于这个话题的新闻吗?

    此致、  

    Robin

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

    您好、Robin、

    对延迟的回复表示歉意。

    是的、您可以执行 CPU 复位、此复位不会影响其他内核。

    但是、在实时用例中、这种复位可能会导致您的应用程序出现问题。

    例如、如果执行 CPU 复位、内核将从头开始重新启动。 如果要将 DMA 与外设一起使用、则需要重新初始化 DMA 通道。 DM 内核将不再接受 DMA 通道分配、您可能会遇到 SCI_CLIENT 错误。

    您能否说明为什么要从 R5F0_1复位 R5F0_0内核?

    另外、您打算在什么时候复位 R5F0_0?

    此致、

    Anil.

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

    您好 Anil、

    感谢您的回答。 您还能说明如何使用软件触发此复位吗?

    我知道在跑步过程中可能会有这样做的风险、我只是想看看它是如何工作的。 在正常操作期间、复位的时间应在我的控制范围内。

    此致、

    Robin

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

    您好、Robin、

    尝试以下 API、当我们调用值为1的第一个 API 时、内核始终处于复位状态。

    当您调用值为0的第二个相同 API 时、内核释放 Reset。  

    retVal = Sciclient_pmSetModuleRst(TISCI_DEV_R5FSS0_CORE0, 1, SystemP_WAIT_FOREVER);
    if(0 != retVal)
    {
    DebugP_log("[Error] Sciclient Reset Assertion failed!!!\r\n");
    DebugP_assert(FALSE);
    }
    retVal = Sciclient_pmSetModuleRst(TISCI_DEV_R5FSS0_CORE0, 0, SystemP_WAIT_FOREVER);
    if(0 != retVal)
    {
    DebugP_log("[Error] Sciclient Reset Deassert failed!!!\r\n");
    DebugP_assert(FALSE);
    }

    此致、

    Anil.

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

    尊敬的 Anil:

    感谢您提供这些 API 调用。 我测试了它们、它们可以正常工作。

    但我还有一个问题:
    是否可以将固件重新加载到保持复位状态的内核中、我该如何操作?

    我实际上想要在该内核上重置部分应用程序并重新启动它。

    此致、
    Robin

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

    你好、Robbin、  

     当执行 CPU 本地复位时、PC 指向复位地址、而从复位地址、应该加载应用程序。

    这是不是发生了? 如果没有发生这种情况、请检查 PC 值? 它应该指出本地 CPU 复位地址、因为本地 CPU 复位不会复位存储器内容、所以我们不会清除任何 RAM 内容。

    请确保需要将以下逻辑集成到您的示例中。

    例如、如果执行 CPU 重置、内核将从头开始重新启动。 如果要将 DMA 与外设一起使用、则需要重新初始化 DMA 通道。 DM 内核将不再接受 DMA 通道分配、您可能会遇到 SCI_CLIENT 错误。

    此致、

    Anil.