今天学习一下 ESP32JTAG 环境的搭建,并在此记录方便后面的使用
如果你使用 ESP-IDF v4.0 以上版本,并使用 install.sh 进行安装过,该安装会自动完成以下安装过程!!!!!
目录
第一步 从源码安装 openocd
获取openocd
安装编译依赖
构建 OpenOCD
设置 OPENOCD_SCRIPTS 环境变量
检查安装版本和路径
第二步 使用 GDB 进行调试
启动 OpenOCD
启动开发板和monitor监视器(可选)
配置gdb
开始Debug调试
第三步 使用 Eclipse 软件辅助调试
首先找到官方的介绍文档
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/api-guides/jtag-debugging/index.html
这里我使用的是 ESP-WROVER-KIT 开发板,因为它板载了 JTAG 调试接口,无需使用外部的 JTAG 硬件适配器和额外的线缆来连接 JTAG 与 ESP32。ESP-WROVER-KIT 采用 FT2232H 提供的 JTAG 接口,可以稳定运行在 20 MHz 的时钟频率,外接的适配器很难达到这个速度。
cd ~/esp
git clone --recursive https://github.com/espressif/openocd-esp32.git
sudo apt-get install make
sudo apt-get install libtool
sudo apt-get install pkg-config
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install texinfo
sudo apt-get install libusb-1.0
配置和构建 OpenOCD 的流程如下:
cd ~/esp/openocd-esp32
./bootstrap
./configure
make
//如果没有安装其他的openocd 在执行下面安装
sudo make install
OPENOCD_SCRIPTS
环境变量这样 OpenOCD 才能找到配置文件
cd ~/esp/openocd-esp32
export OPENOCD_SCRIPTS=$PWD/tcl
推荐将环境变量写入 .sh 文件中,放到 etc/profile.d 目录下,这样就不需要每次使用前再设置环境变量了
例如我在 etc/profile.d 目录下 创建了 esp32_tools.sh 文件 内容是:
#OPENOCD_SCRIPTS
export OPENOCD_SCRIPTS=~/esp/openocd-esp32/tcl
openocd --version
echo $OPENOCD_SCRIPTS
这样 OPENOCD 环境就配置好了
连接JTAG
sudo openocd -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp-wroom-32.cfg
注意如果不是用sudo可能会出现失败的问题,启动 OpenOCD 之后要保持此窗口打开
补充:openocd需要使用usb,
建议(需要)把/usr/local/share/openocd/contrib/60-openocd.rules ( idf 4.0 自动安装的路径是 .espressif/tools/openocd-esp32/v0.10.0-esp32-20190708/openocd-esp32/share/openocd/contrib/60-openocd.rules ) 拷贝到 /etc/udev/rules.d ,这样openocd就有使用usb调试设备的权限了,不用每次sudo (配置完成后需要重启生效)
连接好开发版,将JTAG相关的跳线帽连接好,正常下载启动,使用make -j4 flash monitor下载工程并打开的监视器,查看运行状态。
在你要调试的工程下面 创建一个初始化配置文件
当启动调试器时,通常需要提供几个配置参数和命令,为了避免每次都在命令行中逐行输入这些命令,我们可以新建一个配置文件,并将其命名为
gdbinit
:
target remote :3333
set remote hardware-watchpoint-limit 2
mon reset halt
flushregs
thb app_main
c
然后运行在终端中输入以下内容,启动 GDB:
xtensa-esp32-elf-gdb -x gdbinit build/blink.elf
这里的 build/blink.elf 请切换到你工程的 elf 文件路径
你将有如下三个终端
三个终端中分别打开了 make flash monitor 、 OPENOCD 和 GDB ,
至此就可以使用 GDB 指令开始愉快的调试了。(还可以使用 Eclipse 辅助,那就更愉快了)。
GDB工具虽然好用,但是因为是命令行控制,工程比较大的时候,或者不够熟悉GDB的时候使用起来就有些麻烦了,那么有没有什么好的工具能够帮助我们快速的使用 JTAG 进行调试呢? 目前 ESP32支持使用 Eclipse 进行 JTAG Debug 进行调试。而且官方提供了教程。
在我的下一篇文章中,我会介绍我在 Eclipse 上配置使用 JTAG 工具 进行调试的过程 :
https://blog.csdn.net/gengyuchao/article/details/100136567
使用 JTAG 进行软件调试是非常方便的,能够帮助我们迅速的定位问题,找到解决方案。所以 JTAG 调试工具是开发者不可或缺的好东西。