打印
[STM32F4]

针对RTOS或裸机应用程序的JTAG调试步骤

[复制链接]
26|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kmnqhaha|  楼主 | 2025-2-27 02:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
准备工作
硬件准备:
JTAG调试器:支持STM32F4的调试器(如ST-Link、J-Link)。

开发板:STM32F4开发板(如STM32F4 Discovery)。

连接线:JTAG调试器与开发板的连接线。

软件准备:
交叉编译工具链:ARM GCC工具链(如arm-none-eabi-gcc)。

OpenOCD:开源的JTAG调试工具。

GDB:GNU调试器(如arm-none-eabi-gdb)。

应用程序镜像:编译好的固件文件(如firmware.elf)。

2. 连接JTAG调试器
将JTAG调试器连接到STM32F4开发板的JTAG接口。

STM32F4的JTAG接口通常包括以下引脚:TDI、TDO、TCK、TMS、NRST和GND。

确保JTAG调试器与PC的连接正常。

3. 配置OpenOCD
OpenOCD是用于与JTAG调试器通信的工具。

安装OpenOCD:
bash
复制
sudo apt-get install openocd
创建OpenOCD配置文件:
为STM32F4创建一个配置文件(如stm32f4.cfg),内容如下:

tcl
复制
source [find interface/stlink.cfg]  # 使用ST-Link调试器
source [find target/stm32f4x.cfg]   # STM32F4目标配置
启动OpenOCD:
bash
复制
openocd -f stm32f4.cfg
启动后,OpenOCD会监听GDB的连接(默认端口为3333)。

4. 启动GDB调试
使用GDB连接到OpenOCD,加载应用程序镜像和符号表。

启动GDB:
bash
复制
arm-none-eabi-gdb firmware.elf
连接到OpenOCD:
在GDB中运行以下命令:

bash
复制
target remote :3333
加载应用程序镜像:
bash
复制
load
设置断点:
在应用程序的关键函数(如main)设置断点:

bash
复制
break main
开始调试:
运行以下命令启动调试:

bash
复制
continue
5. 调试应用程序
通过GDB可以逐步调试应用程序,查看寄存器和内存状态。

常用GDB命令:
break <function>:在指定函数设置断点。

step:单步执行。

next:执行下一行代码。

print <variable>:打印变量值。

info registers:查看寄存器状态。

backtrace:查看函数调用栈。

6. 调试RTOS(如FreeRTOS)
如果运行的是RTOS(如FreeRTOS),可以使用RTOS-aware的GDB插件(如pyocd或OpenOCD的RTOS支持)来调试任务和调度器。

启用RTOS支持:
在GDB中加载RTOS插件:

bash
复制
monitor arm semihosting enable
monitor arm semihosting_fileio enable
查看任务状态:
bash
复制
info threads

使用特权

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

本版积分规则

43

主题

227

帖子

1

粉丝