美文网首页
[Ardunio] ESP Prog JTAG调试

[Ardunio] ESP Prog JTAG调试

作者: Cocoonshu | 来源:发表于2020-01-12 15:57 被阅读0次

    官方教程: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 的用户,将使用 get-started/blink 下简单的应用程序来演示 调试会话的工作流程,同时会介绍以下常用的调试操作:

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

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

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

    相关文章

      网友评论

          本文标题:[Ardunio] ESP Prog JTAG调试

          本文链接:https://www.haomeiwen.com/subject/scaiactx.html