J-Link在芯片低功耗模式下的调试 ​
来源: | 作者:风标电子工程师 | 发布时间: 2026-03-23 | 10 次浏览 | 🔊 点击朗读正文 ❚❚ | 分享到:

许多芯片支持低功耗模式(也常称作 “睡眠模式” 或类似名称)。当目标芯片进入此类模式后,会在等待事件、中断等信号的过程中降低功耗。

低功耗模式的具体实现由芯片设计者决定,不同芯片之间存在差异。

例如在 Cortex‑M 内核中,通常通过执行 WFI(Wait For Interrupt,等待中断) 和 WFE(Wait For Event,等待事件) 指令实现。


01
问题

遗憾的是,低功耗模式在调试过程中常会引发问题。原因在于:多数低功耗模式的实现会限制甚至完全关闭芯片的调试逻辑:

  • 部分芯片在低功耗模式下会关闭整个调试单元,导致 J-Link 与芯片断开连接。

  • 部分芯片虽保留调试单元开启,但会关闭内部 Flash 和 RAM,导致目标处于低功耗模式时,J-Link 无法执行后台内存访问。

这会让RTT几乎无法稳定工作,因为内核运行时,目标内存大多数时间无法被访问。当内核被暂停时,芯片会唤醒并退出低功耗模式,内存恢复可访问状态。


02
量产编程

J-Link / Flasher 通过调试接口连接目标芯片时,需要在芯片调试逻辑中设置特定标志位。这些标志位的副作用,可能会导致目标无法进入低功耗模式

在量产编程完成后,让目标自动进入低功耗模式是很常见的需求,尤其对于电池供电设备。

因此,在关闭调试或编程会话后,J-Link 会清除之前设置的调试标志位。但这并不代表目标会立即进入低功耗模式,通常还需要对复位引脚进行一次翻转操作。无法保证清除调试标志位后,芯片一定能回到被调试前原本的低功耗状态。

推荐流程:

  1. 通过 J-Flash 对目标进行编程

  2. 确保在:

    Options → Project settings → Production → Start application已勾选,并设置为 via reset pin(通过复位引脚)

    或采用以下方式:

  3. 通过 J-Flash 等工具对目标编程

  4. 退出 J-Flash 等工具(会自动清除调试标志位)

  5. 启动 J-Link Commander

  6. 依次执行命令:r0 然后 r1

    不要执行 connect 或其他连接命令!

  7. 退出 J-Link Commander

注意

以上所有步骤均假设:目标芯片的复位引脚已连接至 J-Link,且可由 J-Link 控制。


03
解决方案

总体而言,低功耗模式对调试的影响高度依赖于目标芯片的低功耗实现方式。因此,在对启用了低功耗模式的目标芯片进行调试时,无法保证 J-Link 功能完全正常

若在使用低功耗模式时与 J-Link 出现兼容问题,解决办法是:关闭所有低功耗模式


END