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.
工具与软件:
您好!
我使用的是 AM62-LP-SK EVM。
我的要求是在主域仍运行时仅复位 MCU 域。
如何实现?
我为此尝试了几种方法。
一个是、
我想在 M4F 中引发崩溃、方法是生成一个故障、如调用一个未初始化的指针。
在 MCU+SDK 中修改了针对 M4F 的 hello world 应用、以便我可以引发复位、
#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"); DebugP_log("Causing exception\r\n"); while(itr<=3) { switch(itr) { case 0: divide_by_zero(); DebugP_log("Divide exception didn work\r\n"); break; case 1: c=*ptr; DebugP_log("Dereference null pointer didn work\r\n"); break; case 2: *ptr1=10; DebugP_log("Invalid address exception didn work\r\n"); break; case 3: __asm__("udf #0"); DebugP_log("invalid instruction didn work\r\n"); break; } itr++; } DebugP_log("out of loop\r\n"); }
您好!
我已将该主题分配给正确的专家。
在专家评论的同时、您可以看看 API:
您好、Vaibhav、
我曾尝试调用 SOC_generateSwWarmResetMcuDomain()、
它似乎复位了 MCU 和主域。
我也通过启用复位隔离进行了尝试。
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(); } } }
从 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的主终端也会重新启动。
我使用的是 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 域重置的更多详细信息。
此致、
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。
[报价]