打印
[AT32A403A]

jlink仿真时多次出现程序运行中断问题

[复制链接]
249|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
222223|  楼主 | 2025-6-25 16:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
请教下各位老师、大佬这种问题一般会是啥原因导致的,或是提供下定位问题的思路?拜谢!!!
开发环境:MDK V5.36仿真器:jlink
芯片:AT32F403ARCT7
问题:debug仿真时经常出现程序运行中断问题,且每次程序停止时显示在芯片驱动库的“usart_reset"函数。
jlink报错信息:
* JLink Info: T-bit of XPSR is 0 but should be 1. Changed to 1.
***JLink Error: CPU is not halted

20467685baf27e3ba0.png (30.08 KB )

20467685baf27e3ba0.png

52683685baf14a6b21.png (58.45 KB )

52683685baf14a6b21.png

使用特权

评论回复
评论
222223 2025-6-26 14:38 回复TA
@dffzh :感谢指导,已经测试过了,是mcu供电波动问题导致的 
dffzh 2025-6-26 09:38 回复TA
早上提供的方法有木有试过?怎么样? 
沙发
muyichuan2012| | 2025-6-26 08:56 | 只看该作者
如下是kimi的回答
根据你提供的截图和描述,Keil 报错 `JLink Error: CPU is not halted` 的原因及解决方法如下:

---

### **原因分析**
1. **CPU未暂停**
   - J-Link调试器尝试对目标设备执行操作(如写入寄存器、内存等),但此时 CPU 处于运行状态而未被暂停。
   - 大多数调试操作(如修改寄存器、单步执行等)需要 CPU 处于暂停状态才能安全执行。

2. **调试会话配置问题**
   - 调试器可能未正确配置,或者在执行某些命令时未自动暂停 CPU。
   - 例如:手动输入调试命令(如截图中的 `WS` 指令)时,未确保 CPU 已暂停。

3. **硬件或连接问题**
   - J-Link 与目标设备的连接不稳定,或目标设备未正确复位。
   - 调试接口(如 SWD/JTAG)可能松动或损坏。

---

### **解决方法**
#### **1. 手动暂停 CPU**
在执行调试命令前,确保 CPU 已暂停:
- 在 Keil 中点击调试工具栏的 **暂停按钮**(⏸️)。
- 或通过 J-Link 命令行输入:
  ```bash
  Halt    # 暂停 CPU
  ```

#### **2. 检查调试会话配置**
- 确保 Keil 的调试设置正确:
  - 打开 **Project → Options for Target → Debug**。
  - 确认 J-Link 配置(如设备型号、接口类型)与目标硬件匹配。
  - 勾选 **Reset and halt the target before downloading**(下载前复位并暂停目标)。

#### **3. 避免手动调试命令冲突**
- 如果需要执行手动命令(如截图中的 `WS` 指令):
  - 先暂停 CPU(使用 `Halt`)。
  - 执行命令后,重新启动 CPU(使用 `Go` 或继续运行程序)。

#### **4. 检查硬件连接**
- 确保 J-Link 调试器与目标板的连接牢固。
- 检查目标设备的电源和复位电路是否正常。
- 尝试重新插拔 J-Link 或更换调试线。

#### **5. 更新 J-Link 软件**
- 确保 J-Link 软件(J-Link Commander、Keil MDK)已更新到最新版本。
- 下载地址:[SEGGER J-Link Software](https://www.segger.com/downloads/jlink)

---

### **示例:正确的调试流程**
1. 在 Keil 中启动调试会话(点击 ⚙️ 符号)。
2. 等待 J-Link 自动复位并暂停 CPU(默认行为)。
3. 执行需要的调试命令(如查看变量、修改寄存器)。
4. 点击继续运行(▶️)或单步执行(▶️▶️)。

---

### **截图中的关键信息**
- 错误发生在执行 `WS 1, _gimbal, 0x0A` 时,表明程序试图写入寄存器 `gimbal`,但 CPU 未暂停。
- J-Link 自动修正了寄存器 `XPSR` 的 T-bit(Thumb 模式标志),但未解决核心问题(CPU 未暂停)。

---

### **总结**
错误的根本原因是 **CPU 在执行调试操作时未暂停**。通过在操作前手动暂停 CPU 或检查调试配置,可以有效解决此问题。如果问题持续,请进一步排查硬件连接或更新调试工具。

使用特权

评论回复
板凳
222223|  楼主 | 2025-6-26 14:39 | 只看该作者
muyichuan2012 发表于 2025-6-26 08:56
如下是kimi的回答
根据你提供的截图和描述,Keil 报错 `JLink Error: CPU is not halted` 的原因及解决方法 ...

感谢指导

使用特权

评论回复
地板
FractalDreamer| | 2025-6-27 09:33 | 只看该作者
感觉是硬件问题,要么jlink有问题,要么你板子有问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

1

粉丝