[Ardunio] ESP Prog JTAG调试

官方教程:https://docs.espressif.com/projects/esp-idf/zh_CN/v3.3.1/api-guides/jtag-debugging/index.html#jtag-debugging-introduction

本文主要讲述如何安装 ESP32 的 OpenOCD 调试环境,并介绍如何使用 GDB 来调试 ESP32 的应用程序。本文适用于:

  • ESP32

需要的调试硬件有:

  • ESP Prog


安装ESP prog驱动

官方说明:https://github.com/espressif/esp-iot-solution/blob/master/documents/evaluation_boards/ESP-Prog_guide_cn.md

ESP-Prog 采用 FTDI 公司的 FT2232HL 为 USB Bridge Controller 芯片,可通过配置将 USB 2.0 接口转换为支持多种工业标准的串行和并行接口。ESP-Prog 使用 FT2232HL 默认的双异步串行接口模式,用户只需在电脑上安装相应的 FT2232HL 驱动程序即可使用。

注:电脑端识别出两个端口,端口序号大的是 Program 接口,序号小的是 JTAG 接口。

连接设备

ESP32/8266与ESP Prog连接需遵从如下引脚连接:

序号 ESP 引脚 ESP Prog
1 RST/EN TRST_N
2 MTDO / GPIO15 TDO
3 MTDI / GPIO12 TDI
4 MTCK / GPIO13 TCK
5 MTMS / GPIO14 TMS

安装OpenOCD

Linux

OpenOCD下载地址:https://github.com/espressif/openocd-esp32/releases

  1. 选择PC机对应的架构下载
  2. 然后解压出压缩包里的openocd-esp32目录
  3. 将其拷贝到~/esp/openocd-esp32目录

Windows

[待定]

MacOS

[待定]

测试OpenOCD

cd ~/esp/openocd-esp32
bin/openocd -s share/openocd/scripts -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp-wroom-32.cfg

如输出如下信息,则OpenOCD成功工作:

Open On-Chip Debugger  v0.10.0-esp32-20191114 (2019-11-14-14:15)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
none separate
adapter speed: 20000 kHz
WARNING: boards/esp-wroom-32.cfg is deprecated, and may be removed in a future release.
Info : Configured 2 cores
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Error: type 'esp32' is missing virt2phys
Info : ftdi: if you experience problems at higher adapter clocks, try the command "ftdi_tdo_sample_edge falling"
Info : clock speed 20000 kHz
Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : esp32: Debug controller 0 was reset.
Info : esp32: Core 0 was reset.
Info : Listening on port 3333 for gdb connections
Info : esp32: Debug controller 0 was reset.
Info : esp32: Core 0 was reset.
Info : esp32: Debug controller 1 was reset.
Info : esp32: Core 1 was reset.
Info : Target halted. CPU0: PC=0x4008094C (active)
Info : Target halted. CPU1: PC=0x40081EF6

启动调试器

ESP32 的工具链中带有 GNU 调试器(简称 GDB) xtensa-esp32-elf-gdb,它和其它工具链软件存放在同一个 bin 目录下。除了直接在命令行终端中调用并操作 GDB 外,还可以在 IDE (例如 Eclipse,Visual Studio Code 等)中调用它,在图形用户界面的帮助下间接操作 GDB,无需在终端中输入任何命令。

关于以上两种调试器的使用方法,详见以下链接。

  • 在 Eclipse 中使用 GDB
  • 在命令行中使用 GDB

建议首先检查调试器是否能在 命令行终端 下正常工作,然后再转到使用 Eclipse 等 集成开发环境 下进行调试工作。

调试范例

本节适用于不熟悉 GDB 的用户,将使用 get-started/blink 下简单的应用程序来演示 调试会话的工作流程,同时会介绍以下常用的调试操作:

  1. 浏览代码,查看堆栈和线程
  2. 设置和清除断点
  3. 手动暂停目标
  4. 单步执行代码
  5. 查看并设置内存
  6. 观察和设置程序变量
  7. 设置条件断点

此外还会提供 在命令行终端进行调试 的案例。

在演示之前,请设置好 ESP32 目标板并加载 get-started/blink 至 ESP32 中。

你可能感兴趣的:([Ardunio] ESP Prog JTAG调试)