使用 OpenOCD 进行单步调试

Posted tidyjiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 OpenOCD 进行单步调试相关的知识,希望对你有一定的参考价值。

虽然不喜欢进行单步调试,但是不可否认它的重要性,所以也尝试了一下,以帮助后来有需要的小伙伴。

关于 ESP32 的更多博客,请查看 【ESP32 系列博客 - 目录

【安装 OpenOCD】

本人使用的是 Linux 环境,所以第一步请按照你的平台所对应的方法安装 OpenOCD,然后再继续后续操作。

为了更好地适配 ESP32,乐鑫对 OpenOCD 进行了一些改动,所以我们必须通过源码安装 OpenOCD,这会显得略微有点复杂。否则的话,直接一条命令 sudo apt-get install openocd 就能进行安装。

先从乐鑫官方的 GitHub 仓库下载源码:

git clone --recursive https://github.com/espressif/openocd-esp32.git && cd openocd-esp32

OpenOCD 依赖于 libftdi 和 libusb 这两个库,否则再执行 ./configure 时将会报错。使用如下的命令进行安装:

sudo apt-get install libftdi-dev libusb-1.0-0-dev

然后检查依赖包、编译、安装:

./bootstrap
./configure --enable-openjtag_ftdi
make && sudo make install

注意,执行完make命令后,会在相对当前目录下生成可执行文件src/openocd。 如果你的系统中已安装了其它版本的 OpenOCD,则不要执行后面的 sudo make install 命令进行安装,因为它会覆盖你之前的版本。不过如果是这样的话,每次执行 openocd 命令的时候需要使用它的绝对或相对路径(而不要用环境变量中的 openocd)。

【配置 OpenOCD】

通常,OpenOCD 运行时需要使用两个配置文件。
ESP-IDF 里面包含了一个默认的配置文件,具体路径是 $IDF_PATH/docs/api-guides/esp32.cfg。我使用的 JTAG 适配器是 Jlink,所以我将该配置文件里面的这一行改成这样了:

#source [find interface/ftdi/tumpa.cfg]
source [find interface/jlink.cfg]

【硬件接线】

TDI --- 18 --- SD3
TDO --- 21 --- SD0
TCK --- 20 --- CLK
TMS --- 17 --- SD2
GND ---------- GND

【使用命令行进行单步调试】

【使用 Eclipse 进行单步调试】

【参考文档】

以上是关于使用 OpenOCD 进行单步调试的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 Eclipse/OpenOCD 进行调试时出现“程序文件不存在”

OpenOCD 通过 JTAG 调试树莓派

OpenOCD 通过 JTAG 调试树莓派

STM32 OpenOCD调试

ESP32 系列博客 - 目录

OpenOCD-JTAG调试