ESP32S3 vscode 使用 system view工具调试

1.OpenOCD 调试

硬件准备

搭建完IDF框架后,OpenOCD已经下载,ESP32S3通过JTAG接口连接使用OpenOCD进行调试。ESP32-S3 内置 JTAG 电路,无需额外芯片即可调试。只需要引出D+/D-连接到电脑usb。
在这里插入图片描述
如果出现JTAG报错LIBUSB_ERROR_NOT_FOUND。
参考官网:https://docs.espressif.com/projects/esp-idf/zh_CN/release-v4.4/esp32s3/api-guides/jtag-debugging/configure-builtin-jtag.html

vscode操作

1. OpenOCD配置文件
用vscode打开待调试的项目文件夹,在.vscode文件夹内编辑launch.json。
在这里插入图片描述
编辑如下:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "espidf",
      "name": "Launch",
      "request": "launch",
      "MIMode":"gdb",
      "miDebuggerPath": "${command:espIdf.getXtensaGdb}",
      "program": "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf",
      "windows": {
        "program": "${workspaceFolder}\\build\\${command:espIdf.getProjectName}.elf"
      },
      "cwd": "${workspaceFolder}",
      "environment": [{ "name": "PATH", "value": "${config:idf.customExtraPaths}" }],
      "setupCommands": [
        { "text": "set remotetimeout 100" },
        { "text": "target extended-remote :3333" },
        { "text": "set remote hardware-watchpoint-limit 2"},
        { "text": "mon reset halt" },
        { "text": "thb app_main" },
        { "text": "flushregs" }
      ],
      "externalConsole": false,
      "logging": {
        "engineLogging": true
      }
    }
  ]
}

2. 配置settings.json
在.vscode文件夹内找到settings.json
在这里插入图片描述
增加openocd配置如下:

  "idf.openOcdConfigs": [
    "board/esp32s3-builtin.cfg"
  ],

3. 启动OpenOCD
将需要调试的固件提前下载到esp设备中,然后选择JTAG方式
在这里插入图片描述
在vscode左侧菜单栏中选择“运行和调试”,点击运行配置好的Launch。
在这里插入图片描述
运行成功之后就可以单步调试
在这里插入图片描述

2.system view调试

工具下载

官网下载链接:
https://www.segger.com/products/development-tools/systemview/

工作原理

systemview是通过jlink工具可直接对arm内核单片机实时调试和录制,可以直观的看到rtos系统中各线程的运行逻辑,方便查看rtos多线程编程时各个线程的运行情况是否按照预期运行。

对于esp32来说无法直接通过systemview进行实时追踪,但是可以通过缓存文件,在通过systemview工具打开进行分析。虽然不能实时查看,但是对于偶发性bug,以及自己编写的线程之间的切换关系分析具有很好的帮助。esp32内置记录systemview兼容的跟踪信息代码,开启这个功能后通过OpenOCD可在工程文件夹内导出跟踪信息文件。开启方式如下:
打开vscode 工程设置界面,在Component config > Application Level Tracing > FreeRTOS SystemView Tracing开启
在这里插入图片描述
在这个设置界面可手动开启/关闭需要记录的一些事件,具体操作参考esp32官网:
https://docs.espressif.com/projects/esp-idf/zh_CN/release-v4.4/esp32s3/api-guides/app_trace.html#app-trace-system-behaviour-analysis-with-segger-systemview

调试操作步骤

  1. 将上述systemview追踪功能设置开启后,编译并下载程序至目标板。

  2. 下载成功之后按照上一章节OpenOCD调试的步骤启动OpenOCD调试,此时先不要运行程序。

  3. 打开cmd输入telnet localhost 4444回车,终端会自动连接上目标板。
    连接成功后会显示
    在这里插入图片描述

  4. 在终端输入 esp sysview start file://pro-cpu.SVDat file://app-cpu.SVDat
    开启追踪以及要输出的文件
    在这里插入图片描述

  5. 在vscode界面运行程序即可开始记录追踪信息
    在这里插入图片描述

  6. 当运行完成之后退出vscode的OpenOCD调试

在这里插入图片描述
7. 在项目工程文件夹内找到下面两个文件

在这里插入图片描述
8. 用systemview打开这两个文件,esp32S3是双核的所以会有两个内核的追踪信息文件,一般应用程序追踪信息都在
pro-cpu.SVDat
在这里插入图片描述
到这里就可以分析刚才录制的文件中各个线程的运行以及切换信息了。

问题分析

1. OpenOCD运行报错
LIBUSB_ERROR_NOT_SUPPORTED
windows的usb驱动不正确,需要用Zadig工具将驱动转换为WinUSB驱动类型
2. telnet指令不识别
在windows开启和关闭功能里面开启telnet客户端
在这里插入图片描述

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值