使用 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 进行单步调试】
【参考文档】
- http://wiki.jackslab.org/ESP32_JTAG
- http://iot-fans.xyz/esp/esp-idf-zh/api-guides/openocd.html
- OpenOCD + Segger JLink + ESP32
- 如何使用 J-Link 调试 ESP32
以上是关于使用 OpenOCD 进行单步调试的主要内容,如果未能解决你的问题,请参考以下文章