您好,
我们发现,当使用 Debug.SetConnectMode(CM_ATTACH_HALT) 将 Ozone (J-Link) 连接到处于关机或深度关机模式的 LPC5528 或 LPC55S28 时,SWD 连接行为不一致。我们在两块运行 LPC5528 的“相同”定制板和一块运行 LPC55S28 的 NXP 评估板上重现了不同的结果(均为 1B 版本),因此希望澄清预期的调试邮箱恢复流程。
设置
MCU:LPC5528 和 LPC55S28
调试探针:J-Link
工具:Ozone,Debug.SetConnectMode(CM_ATTACH_HALT)
测试的电源模式:掉电和深度掉电(通过 POWER_EnterPowerDown() / POWER_EnterDeepPowerDown() 进入)
观察结果 1 — 板 A,定制板,LPC5528,掉电和深度掉电
DM-AP IDCODE始终无法解析;重试4次后连接彻底失败,未发生重置:
InitTarget() start
ERROR: Wrong DM-AP IDCODE detected: 0xFFFFFFFF
InitTarget() end - Took 101msConnection failed.观察结果 2 — 板 B,定制板,LPC5528,掉电和深度掉电
DM-AP IDCODE 读取 0x00000000 第一次尝试失败后,第二次尝试报告了明确的调试邮箱恢复消息并成功:
InitTarget() start
ERROR: Wrong DM-AP IDCODE detected: 0x00000000
InitTarget() end - Took 101ms
ConfigTargetSettings() start
InitTarget() start
CPU halted successfully after enabling debug access
InitTarget() end - Took 7.40ms
Found SW-DP with ID 0x6BA02477
...
Connected to target device.观察 3 — NXP 评估板,LPC55S28,掉电和深度掉电
DM-AP IDCODE 也读取 0x00000000 第一次尝试失败,但第二次尝试成功了。 没有 打印“启用调试访问”消息后,程序直接进入正常的AP扫描:
InitTarget() start
ERROR: Wrong DM-AP IDCODE detected: 0x00000000
InitTarget() end - Took 112ms
ConfigTargetSettings() start
InitTarget() start
InitTarget() end - Took 3.93ms
Found SW-DP with ID 0x6BA02477
Scanning AP map to find all available APs
AP[0]: AHB-AP (IDR: 0x84770001, ADDR: 0x00000000)
...
Connected to target device.在所有能够到达目标设备的情况下,设备都会因连接而发生可观察的副作用——重置,因此设备会退出掉电/深度掉电状态。
补充信息
问题
提前感谢!
宝拉
Hello
睡眠、深度睡眠、断电或深度断电模式下不支持调试模式;此信息来自LPC552x 用户手册第 13.3.1 章;
要将调试器连接到 LPC55S28,必须先将其唤醒,如果处于掉电模式,则需要使用 RESET;当设备处于掉电模式时,无法连接调试会话;
DM-AP ID 寄存器读取 0xFFFFFFFF 与 0x00000000 之间的区别可能是,0x00000000 是命令成功返回的响应(如UM11126第 50.5.7.2.1 章表 1064 中所述),而 0xFFFFFFFF 是未检测到的响应。
观察结果 1 看起来很奇怪,可能是因为设备仍处于关机模式而没有响应,或者您无法正确进入 DM-AP,因此无法进行调试;作为一种选择,您可以咨询一下是否是板 A 的硬件问题,因为板 B 可以成功连接。
此致敬礼,路易斯