你好
我正在尝试使用 Segger J-Link 和 gdb 调试 i.MX93 上的 Cortex-M33 固件。我使用恩智浦的 J-Link 软件补丁建立了 SWD 连接,可以停止处理器、读取寄存器和内存等。
我的问题是,RESET处理器不起作用。寄存器的内容没有变化,所以我认为RESET被忽略了:
(gdb) 监测 regs
R0 = 40D000C0,R1 = 2001EFE3,R2 = 40D000C0,R3 = 00000000
R4 = 00000000,R5 = 00000000,R6 = FFFFFFFF,R7 = 2001EEE8
R8 = FFFFFFFF,R9 = FFFFFFFF,R10= 2000F000,R11= 00000000
R12= FFFFFFFF,R13= 2001EEE8,MSP= 2001EEE8,PSP= 00000000
R14(LR) = 0FFE219D,R15(PC) = 0FFE2248
XPSR 49000003,APSR 48000000,EPSR 01000000,IPSR 00000003
CFBP 00000000,CONTROL 00,FAULTMASK 00,BASEPRI 00,PRIMASK 00
网络安全扩展规则:
MSP_S = 2001EEE8,MSPLIM_S = 00000000
PSP_S = 00000000,PSPLIM_S = 00000000
MSP_NS = 00000000,MSPLIM_NS = 00000000
PSP_NS = FFFFFFFC,PSPLIM_NS = 00000000
CONTROL_S 00,FAULTMASK_S 00,BASEPRI_S 00,PRIMASK_S 00
CONTROL_NS 00,FAULTMASK_NS 00,BASEPRI_NS 00,PRIMASK_NS 00
(gdb) 显示器重置
重置目标
(gdb) 监视器 规则
R0 = 40D000C0,R1 = 2001EFE3,R2 = 40D000C0,R3 = 00000000
R 4 = 00000000,R5 = 00000000,R6 = FFFFFFF,R7 = 2001EEE8
R8 = FFFFFFF,R9 = 2000F000,R11= 00000000
R12= FFFFFF,R7 = R 8 = FFFFFFF,R9 =,R11= 00000000 R12= FFFFFF,R7 = = FFFFFFF,R9 =,R11= 00000000 R 12= FFFFFF,R7= = FFFFFFF 13= 2001EEE8,MSP= 2001EEE8,PSP= 00000000
R14 (LR) = 0FFE219D,R15 (PC) = 0FFE2248
XPSR 49000003、APSR 48000000、EPSR 01000000、IPSR 01000000、IPSR 00000003
CFBP 00000000、控制 00、故障掩码 00、BASEPRI 00、PRIMASK 00
网络安全扩展规则:
MSP_S = 2001EEE8,MSPLIM_S = 00000000
PSP_S = 00000000,PSPLIM_S = 00000000
MSP_NS = 00000000,MSPLIM_NS = 00000000
PSP_NS = FFFFFFFC,PSPLIM_NS = 00000000
CONTROL_S 00,FAULTMASK_S 00,BASEPRI_S 00,PRIMASK_S 00
CONTROL_NS 00,FAULTMASK_NS 00,BASEPRI_NS 00,PRIMASK_NS 00
J-Link的RESET策略是使用SYSRESETREQ而不是RESET信号,因为应该只RESET Cortex-M33内核。调试控制器是否可能没有写入 SYSRESETREQ 位所需的网络安全权限?
使用 J-Link 执行 Cortex-M33 的正确 RESET 方法是什么?
问候,
Malte
感知上,它起作用了,我再也没有丢失过处理器,但是执行时间受到了严重影响,我不明白为什么。
每次操作都要多花 10 倍的时间。
执行冷RESET,但默认情况下在ROM中有一些代码(与恩智浦建议的没有SD卡的建议相反),然后将调试器连接到正在进行的程序并覆盖内存,这样做有感知吗?
你好
可以使用这个 JLink 脚本吗?
https://kb.segger.com/images/8/86/Example_Reset_CortexM_Normal.JLinkScript
这是 CortexM 的标准策略。
此致
你好
能否分享一下您的解决方案?我目前也面临着同样的情况。
你好,克日什托夫、
如上所述,我确实设法想出了一种使用 J-Link 在 i.MX93 中进行 RESET Cortex-M33 的方法。如果这正是您想要的,我很乐意与您分享细节。请告诉我您的电子邮件地址或其他直接联系您的方式。
问候,
Malte
嗨,我刚刚发现这个话题,想知道是否有人最终找到了一些可靠的解决方案,可以将 M33 与 A55 分离。最近,我开始为即将到来的项目创建开发环境,并在触发信号软件RESET时很快遇到了同样的麻烦。自话题打开以来已经有一段时间了,SEGGER现在(v8.10)为软件提供了内置IMX目标,尽管似乎仍然无法执行单核RESET。我用 SCB(SYSRESETREQ)和 SCR 寄存器做了一些试验,但就是无法达到稳定的效果。我还快速测试了适用于 VSCode 的 MCUXpresso 插件,但没有注意到任何自定义、有效的 RESET 策略的实现。
此致,
克日什托夫
嗨,马尔凯,我对解决方案非常感兴趣,因为我也遇到了同样的问题。 能否将您的解决方案或建议发给我?非常感谢。[email protected]
顺祝商祺!
君书
你好,马尔特
非常感谢。我的邮箱是[email protected]
顺祝商祺!
尼尔斯
嗨,尼尔斯
多亏了恩智浦的技术支持,我终于找到了解决这个问题的办法。
如果您告诉我您的电子邮件地址或任何其他直接与您联系的方式,我将很乐意为您提供帮助。
亲切的问候,
Malte Kaiser
我的情况和原作者完全一样。看来恩智浦提供的jLink脚本实际上并没有执行RESET M33内核,而只是暂停了它。这使寄存器和处理器状态保持不变,如果遇到故障,如果不先通过Linux RESET 内核,我将无法继续正常调试。
除了使用jLink调试器之外,有什么办法可以触发信号RESET M33内核吗?
顺祝商祺!
尼尔斯
你好,桑凯特-帕雷赫、
(1) 在哪里可以获得 i.MX93 Cortex-M33 的恩智浦 J-Link 脚本补丁?
(2) 据 Segger 称,目前还没有在 J-Link 中支持 i.MX93 的路线图。但它会在第一/第二季度到来。还有其他调试 Cortex-M33 的可能性吗?
BR
你好@malkai、
希望你一切都好。
"恩智浦打算在i.MX93中RESET Cortex-M33内核的程序是什么?"
-> 系统重置控制器 (SRC) 负责生成所有系统复位信号和启动参数锁定。
-> 它的主要功能如下:
• 处理来自其他模块的所有全局系统 RESET 源并生成全局系统 RESET。
- 负责 MIX(片)的功率门控及其内存低功耗控制。
-> SRC 从 PAD 和熔丝位中获取 POR_B 以完成启动顺序,并提出 GPC 低功耗请求以
完成掉电/开机顺序。
请参阅第 33 章系统 RESET 控制器 (SRC)。
https://www.nxp.com/webapp/Download?colCode=IMX93RM
谢谢& ,
Sanket Parekh
你好,@Sanket_Parekhm、
谢谢您的答复。然而,这些信息无助于问题的解决。众所周知,i.MX93 中的 Cortex-M33 内核采用 Armv8-M 架构,该架构的 AIRCR 寄存器中没有 VECTRESET 位(参见 https://developer.arm.com/documentation/ddi0553/latest/ 中的 D1.2.3 ) 。因此,唯一可用的RESET请求是SYSRESETREQ,Cortex-M33内核和整个系统都不会对此做出任何反应。为什么会这样?
我已经研究过J-Link使用的RESET策略。问题是,恩智浦的修补程序只是用停止 CPU 来代替这些,就像我告诉你的那样。而且这里不能使用RESET线,因为它会RESET整个 SoC。
因此,问题仍然存在:恩智浦打算采用什么程序来RESET i.MX93中的Cortex-M33内核?
谢谢并致以诚挚的问候,
Malte Kaiser
你好@malkai,
希望你一切都好。
-> RESET选择控制目标设备的RESET操作。所有RESET选项都适用于基于 Cortex-M 处理器的设备,在 JTAG 和 SWD 模式下可用,并在RESET后停止 CPU。
-> Core-只能通过设置 VECTRESET 位来执行 Cortex-M 内核的 RESET。片上外设未RESET。对于某些 Cortex—M 设备,这种 RESET 方法是重置它们的唯一方法。但是,在大多数情况下,不推荐使用这种方法,因为大多数目标应用程序依赖于某些外围设备(PLL、外部存储器接口等)的RESET状态,如果启动后可能会混淆,但外设已经配置好了。
-> resetPin-J-Link 将其 RESET 引脚拉低以重置内核和外围设备。通常,这也会导致设备的 CPU RESET 引脚变低,从而导致 CPU 和外围设备 RESET。如果目标设备的RESET引脚未拉至低电平,则此复位方法将失败。
请参阅以下链接中的RESET策略部分。
https://community.nxp.com/
谢谢& ,
Sanket Parekh
你好,@Sanket_Parekh、
谢谢您的答复。遗憾的是,这些信息无助于解决我的问题。在此期间,我发现了很多事情:
1.恩智浦在i.MX93补丁中提供的J-Link脚本未实现RESET。它取代了重置 CPU,而只是停止 CPU。
2. 通过调试器手动将 AICR.SYSRESETREQ 写入 1 来请求 RESET 不会导致 Cortex-M33 内核 RESET。
所以,我最初的问题仍然是:通过调试器RESET Cortex-M33的可能性有多大?
感谢和问候,
Malte
你好,@malkai、
希望你一切都好。
请参考此链接,它将对您有所帮助。
https://community.nxp.com/t5/
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------
Thanks& Regards,
Sanket Parekh