Skip to main content

使用 OpenOCD 和 gdb 进行调试

请使用 OpenOCD 4.0 或更新版本。

本示例假设您在计算机和调试设备(或开发板)之间使用了 Segger J-Link 兼容的 JTAG 适配器。也可以使用 SWD(ST-Link)适配器,若使用此适配器,请使用 OpenOCD 0.7 或更新版本。

使用与您的硬件匹配的配置文件启动 OpenOCD 服务器:

openocd -f interface/jlink.cfg -f target/stm32.cfg

或者,如果您使用的是 SWD:

openocd -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg

在第二个窗口中,启动一个与 OpenOCD 的交互会话:

telnet localhost 4444

这似乎是必要的,以避免后续出现“目标未停止”的错误和其他问题:

reset_config trst_and_srst

停止目标(ARM 处理器):

reset halt

如果您尚未通过例如 dfu-util 等工具烧录二进制文件,可以通过 JTAG 进行烧录:

reset init
flash write_image erase dso-lib.hex 0 ihex
reset halt

在第三个窗口中,启动 gdb 或 gdbtui:

arm-none-eabi-gdb
(gdb) file dso-lib.elf
(gdb) target remote localhost:3333"
(gdb) load dso-lib.elf

现在您应该可以运行和调试:

(gdb) set $pc = Reset_Handler
(gdb) display/i $pc
(gdb) stepi

技术支持与产品讨论

如果您有任何技术问题,请将问题提交到我们的 论坛
感谢您选择我们的产品!我们致力于为您提供不同的支持,以确保您使用我们的产品时体验顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...