今天學習一下 ESP32JTAG 環境的搭建,並在此記錄方便後面的使用
目錄
首先找到官方的介紹文檔
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 的時鐘頻率,外接的適配器很難達到這個速度。
第一步 從源碼安裝 openocd
獲取openocd
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
配置和構建 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 環境就配置好了
第二步 使用 GDB 進行調試
啓動 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拷貝到/etc/udev/rules.d,這樣openocd就有使用usb調試設備的權限了,不用每次sudo (配置完成後需要重啓生效)
啓動開發板和monitor監視器(可選)
連接好開發版,將JTAG相關的跳線帽連接好,正常下載啓動,使用make -j4 flash monitor下載工程並打開的監視器,查看運行狀態。
配置gdb
在你要調試的工程下面 創建一個初始化配置文件
當啓動調試器時,通常需要提供幾個配置參數和命令,爲了避免每次都在命令行中逐行輸入這些命令,我們可以新建一個配置文件,並將其命名爲
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 文件路徑
開始Debug調試
你將有如下三個終端
三個終端中分別打開了 make flash monitor 、 OPENOCD 和 GDB ,
至此就可以使用 GDB 指令開始愉快的調試了。(還可以使用 Eclipse 輔助,那就更愉快了)。
第三步 使用 Eclipse 軟件輔助調試
GDB工具雖然好用,但是因爲是命令行控制,工程比較大的時候,或者不夠熟悉GDB的時候使用起來就有些麻煩了,那麼有沒有什麼好的工具能夠幫助我們快速的使用 JTAG 進行調試呢? 目前 ESP32支持使用 Eclipse 進行 JTAG Debug 進行調試。而且官方提供了教程。
在我的下一篇文章中,我會介紹我在 Eclipse 上配置使用 JTAG 工具 進行調試的過程 :
https://blog.csdn.net/gengyuchao/article/details/100136567
使用 JTAG 進行軟件調試是非常方便的,能夠幫助我們迅速的定位問題,找到解決方案。所以 JTAG 調試工具是開發者不可或缺的好東西。