今天我们来探索如何在 Espressif IDF 插件里进行 JTAG 调试。如果还未成功安装与入门 Espressif IDF for VSCode,可以先参考 Espressif IDF for VSCode 爬坑之路一:ESP32 的 esp-idf 例子编译与烧录。
1. JTAG 调试前的准备
如果要在 Espressif IDF for VSCode 里启动 JTAG 调试功能,只需先按 F5 键(确保您至少已经 build 并 flash ,这样调试器才能正常工作)。 为确保可以调试设备,我们也需要在 settings.json
中设置正确的 idf.deviceInterface
和 idf.board
设置,或按 F1 并键入 ESP-IDF:Device configuration
。下面我将以图文并茂的形式来演示上述操作。
首先打开工程,然后编译和烧写。在这里我选择打开的是 /esp-idf/examples/get-started/blink
示例,打开后我们可以在按下 F1 后依次进行 ESP-IDF:Select port to use
,ESP-IDF:Build your project
,ESP-IDF:Flash your project
与 ESP-IDF:Monitor your device
。指令对应的位置如下图(按下 F1 后)。
在成功看到 monitor 打开且能看到程序在正常运行后,我们需要按下 F5 键(确保您至少已经 build 并 flash ,这样调试器才能正常工作)。然后按需要选择对应的 gcc gdb 版本即可。
接下来我们还需要按 F1 并键入 ESP-IDF:Device configuration
,在里面设置正确的 idf.deviceInterface
和 idf.board
。键入 ESP-IDF:Device configuration
并按下回车后如下图。一般 Espressif IDF for VSCode 会默认帮我们进行正确的配置,比如使用的是自带 JTAG 调试工具的 ESP32-WROVER 开发板,然后点击下图中的 Board
时发现已经默认为 board/esp32-wrover.cfg
。如果发现默认填写的内容与实际不符,大家可以按上述步骤自行更改。
由于我们在 Espressif IDF for VSCode 初始环境配置时就已经初始安装了 OpenOCD, 而且我使用的是自带 JTAG 调试器的 ESP32-WROVER 开发板,如果需要外接 JTAG 调试器,可以参考 JTAG 调试,所以到这里我们在软件上就配置好环境了。下一节我们将正式开始 JTAG 调试。
2. JTAG 调试
2.1 打开 OpenOCD
按 F1 并键入 ESP-IDF:OpenOCD Manager
,我们可以看到 Start OpenOCD
选项,直接点击此选项。
然后我们就能看到 VSCode 界面下发弹出了一个 OUTPUT
,不难看出其中有 Info : Listening on port 3333 for gdb connections
这条信息。它告诉我们 gdb 的 端口为 3333,到这里就可以再开启一个终端来进行 gdb 调试了。
2.2 进行 GDB 调试
我们先打开一个终端,然后进入到 /esp-idf/examples/get-started/blink</