04 ESP32-Code Debugging-Summary Of Several Debugging Methods
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
* 工欲善其事,必先利其器.
一. JTAG 二. 日志系统 三. Core Dump
这里先介绍第一种调试方法-JTAG调试,JTAG是从STM32转过来的开发者的第一反应,这里放在最前面介绍.但是对于双核多任务的ESP32应用程序,并非最优的调试方法.
关于调试环境的搭建,参考乐鑫官方文档即可,有中文版详细配置过程:
ESP-WROVER-KIT板载了JTAG功能(FT2232),但是需要连接4个跳线帽接通线路,如下图:
ESP32 Core Board V2 没有JTAG插口,如果需要硬件调试,需要准备:
按照如下方式连接:
断点设置:
调试运行
查看、修改内存
查看代码
```
i threads:查看当前所有线程
thread N:查看编号N线程的代码
bt(或backtrace):查看上一层,查看当前函数调用处(仅查看,未跳出)
l:打印停止点处代码
l 30, 40:打印第30-40行代码
help xxx:查看指令xxx的帮助
(gdb) x /1wx 0x3FF44004 0x3ff44004: 0x00000000 #返回0x00000000
(gdb) set {unsigned int}0x3FF44004=0x00000004
cd ~/esp/openocd-esp32 bin/openocd -s share/openocd/scripts -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp-wroom-32.cfg
```
OpenOCD:
创建一个Server接收 gdb debugger 的连接请求
通过JTAG适配器与ESP32 交互,控制设备运行状态
xtensa-esp32-elf-gdb debugger:
作为一个client,连接OpenOCD
与用户交互,接收用户的 debug 命令(s\n等指令),发送到OpenOCD
eclipse
-图形化方式调用xtensa-esp32-elf-gdb debugger,包装命令行
在gdb中可以使用monitor发送openOCD的命令,例如monitor reset;halt
FT2232 是多协议 USB 转串口桥接器.在这里替换了cp2102,并且可以同时提供 USB-to-JTAG ,USB-to-Serial 接口功能,便利开发人员的应用开发与调试.具体配置信息可以查阅
ESP32 使用标准的 JTAG 接口,支持STM32常用的J-Link,,但是不支持ST-Link,也不支持SWD接口:
官方描述: 在软件方面,OpenOCD 支持相当多数量的 JTAG 适配器,可以参阅 OpenOCD 支持的(尽管上面显示的器件不太完整),这个页面还列出了兼容 SWD 接口的适配器,但是请注意,ESP32 目前并不支持 SWD.此外那些被硬编码为只支持特定产品线的 JTAG 适配器也不能在 ESP32 上工作,比如用于 STM32 产品家族的 ST-LINK 适配器.