jtag调试
这里介绍基于arduino 环境的debug,本质也是使用OpenOCD调试环境。
目前这里只提供esp32c3 esp32s3等内置jtag调试配置方法。( 由于目前外接调试器暂未使用官方调试器尝试,使用第三方的,暂未在arduino下测试成功。)
代码
代码如下
使用platformio调试
esp32s3 platformio配置
选择esp32-s3-devkitc-1
并不需要额外为debug配置其他参数,因为默认debug_tool就是使用内置jtag已经在boards下的json文件中配置好了。
合宙esp32c3 platformio配置
由于boards下的json文件未指定内置jtag调试,这里配置debug_tool选项为 esp-builtin
使用clion点击debug一键调试
s3需要将usb jtag口连接至pc,而合宙esp32c3只有一个usb口便是jtag。

clion操作外设寄存器
加载svd文件

选择以下目录中的svd文件
如果已加载的svd不符合芯片类型,可以右键hide
修改寄存器
外设这里只有读取和复制值等功能
可以复制寄存器地址到gdb控制台进行操作

gpio操作例子
具体外设可以参考idf 指南中关联的硬件参考里面的 技术参考手册 (PDF)
这里用到三个寄存器
名称 | 地址 | 说明 |
---|---|---|
| 0x60004024 | 设置输出模式 |
| 0x60004008 | 设置为高 |
| 0x6000400c | 设置为低 |
比如在gdb 控制台操作2号引脚可以依次输入以下命令可以操作io2输出高低电平
使用arduino ide调试esp32c3和esp32s3
合宙esp32c3 arduino ide 菜单配置
由于在 arduino-esp32 boards.txt中未配置 合宙C3的Jtag选项。 导致无法指定调试使用的JTAG,为了debug不要选择AirM2M_CORE_ESP32C3
而使用通用的ESP32C3 Dev Module
。
合宙C3采用的是DIO方式外接flash,这里需要将Flash Mode
设为DIO
。
然后选择JTAG Adaptor为Integrated USB JTAG
表示使用C3内嵌的JTAG进行debug。
esp32s3 arduino ide 菜单配置
设置USB模式为JTAG, JTAG Adaptor选择Integrated USB JTAG
便可用内置jtag 调试

开始调试
s3需要将usb jtag口连接至pc,而合宙esp32c3只有一个usb口便是jtag。
点击对钩进行验证
(也就是编译,直接debug不会触发编译而是报文件找不到。)
点击debug

即可调试,注意看调试控制台的打印。
外设寄存器
查看和读取寄存器,可以在左下角找到CORTEX PERIPHERAL

可以复制各种外设寄存器的值,也可以使用编辑按钮设置。
具体外设可以参考idf 指南中关联的硬件参考里面的 技术参考手册 (PDF)