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.

[参考译文] AM620-Q1:AM62x 重置 M4F

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1431670/am620-q1-am62x-resetting-m4f

器件型号:AM620-Q1

工具与软件:

您好!

我使用的是 AM62-LP-SK EVM。

我的要求是在主域仍运行时仅复位 MCU 域。

如何实现?

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

    我为此尝试了几种方法。

    一个是、

    我想在 M4F 中引发崩溃、方法是生成一个故障、如调用一个未初始化的指针。

    在 MCU+SDK 中修改了针对 M4F 的 hello world 应用、以便我可以引发复位、  

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <stdio.h>
    #include <kernel/dpl/DebugP.h>
    #include "ti_drivers_config.h"
    #include "ti_drivers_open_close.h"
    #include "ti_board_open_close.h"
    __attribute__((noinline)) int divide_by_zero()
    {
    volatile float a=0.0;
    volatile float b=5.0;
    return b/a;
    }
    void hello_world_main(void *args)
    {
    volatile int c;
    volatile int*ptr=NULL;
    volatile int *ptr1;
    ptr1= (int*)0xFFFFFFFF;
    int itr=0;
    DebugP_log("Hello World!\r\n");
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    除以0访问空指针/无效内存未引起任何故障。 我不明白为什么?  
    注意:我在编译时未进行优化、因此编译器不会优化代码
    但是、我可能会观察到只有案例3导致了故障、  它会进入 HwiP_hardFault_handler (void)函数、使其一直保持 while 循环。
    --------------------------------------------------------
    第二、
    我使用了看门狗来实现复位、但它复位了整个 SOC。

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

    您好!

    我已将该主题分配给正确的专家。

    在专家评论的同时、您可以看看 API:  

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

    您好、Vaibhav、


    我曾尝试调用  SOC_generateSwWarmResetMcuDomain()、
    它似乎复位了 MCU 和主域。

    我也通过启用复位隔离进行了尝试。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    void hello_world_main(void *args)
    {
    for(uint32_t count = 0; count < 10u; count++)
    {
    ClockP_sleep(1);
    DebugP_log("I am running (MCU) !!:- %d\r\n", count);
    if (count == 5u)
    {
    /* Reset */
    // DebugP_log("Resetting Main domain !!\r\n");
    //SOC_generateSwWarmResetMainDomainFromMcuDomain();
    DebugP_log("Trying to reset only MCU domain !!\r\n");
    SOC_generateSwWarmResetMcuDomain();
    }
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    从 M4F UART 终端登录:

    我正在运行(MCU)!!:- 1.
    我正在运行(MCU)!!:- 2.
    我正在运行(MCU)!!:- 3.
    我正在运行(MCU)!!:- 4.
    我正在运行(MCU)!!:- 5.
    正在尝试仅复位 MCU 域!!
    [IPC RPMSG ECHO]版本:Rel.MCUSDK.09.02.01.01+(2024年5月12日22:05:58):
    [IPC RPMSG ECHO]远程核心在端点13等待消息...!!!
    [IPC RPMSG ECHO]远程核心在端点14等待消息...!!!

    用于 A53的主终端也会重新启动。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价用户 id="622881" url="~/support/processors-group/processors/f/processors-forum/1431670/am620-q1-am62x-resetting-m4f "]

    我使用的是 AM62-LP-SK EVM。

    我的要求是在主域仍运行时仅复位 MCU 域。

    如何实现?

    [报价]

    您好 Kanishk、

    这是不可能的。

    AM62X 器件不支持仅进行 MCU 复位。

    在 AM62X 中、MCU 内核可配置为安全内核。

    在 MCU 内核配置为安全内核后、通过 MAIN 或 MCU CTRL MMR 寄存器进行主域复位。

    其余的是通过主域(而不是 MCU 域)进行分页。 因此、MCU 内核完全隔离。

    如果您在 Isoalition MCU 内核(而不是隔离式 MCU 内核)中执行 MCU WarmReset、则复位效果会在这两个域中传播。

    请查看常见问题解答、了解有关在隔离 MCU 内核(而不是隔离 MCU 内核)中如何影响主域和 MCU 域重置的更多详细信息。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1407057/faq-reset-topic-on-am64x-am243-am62x-soc

    此致、

    Anil。

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

    Anil、您好!

    明白了! 感谢您的澄清。  

    因此、无法单独复位 M4F。 但是、

    我的核心目标是 了解如果 M4F 中发生过早复位/崩溃会发生什么情况?  
    **它是否会影响 A53的操作?**
    这就是我尝试单独重置 M4的原因。

    故意在 M4F 中注入碰撞呢 (我尝试过的内容、在  本线程的第1个聊天中介绍)。 但是、我不会导致 M4F 崩溃。 我还可以尝试其他什么方法吗?或者我是否遗漏了一些东西?

    您对此有何看法?

    谢谢!

    Kanishk

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

    您好、

    除了上述问题、我确实需要对 LPSC 本地重置做出一些澄清。

    我在 AM62X 系列手册中遇到这种情况、

    手册中说某些 LPSC 可以
    可用于为 A53和 R5以及 M4F 内核等处理器提供本地复位功能。  

    此 API 的功能  中的 lpsc_module_set_local_reset ()  PSC.c 是什么? 还有  Sciclient_pmSetModuleRst ()—sciclient_pm.h 中的这个 API 呢?

    我们可以使用这些 API 中的任何一个在本地复位 M4F 吗?

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

    您好!

    只需检查是否遵循了该线程即可。

    谢谢!

    Kanishk

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

    您好 Kanishk、

    我的核心目标是 了解如果 M4F 中过早发生复位/崩溃、将会发生什么情况?  
    **它是否会影响 A53的操作?**
    这就是我试图单独重置 M4的原因。

    而对于 M4F 内核来说、这是无法实现的。

    但该方法也适用于 A53用途。

    例如、在 M4F 内核中检测到 Linux 崩溃。

    因此、M4F 可以重置主域内核、而不是 M4F 内核。

    [报价 userid="622881" url="~/support/processors-group/processors/f/processors-forum/1431670/am620-q1-am62x-resetting-m4f/5491082 #5491082"] 故意在 M4F 中注入碰撞呢 (我尝试过的内容、在  本线程的第1个聊天中介绍)。 但是、我不会导致 M4F 崩溃。 是否有其他方法可以尝试或我是否遗漏了一些东西?

    如果您注入碰撞、控制将进入异常状态。

    请帮助我获取有关您如何注入异常的更多详细信息、以及核心状态是什么?

    e2e.ti.com/.../quote]

    请查看常见问题解答以了解本地 CPU 复位。

    用于本地 CPU 复位的 Sciclient_pmSetModuleRst API。

    该 API 也用于 SBL。

    此致、

    Anil。

    [报价]