ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

ESP-IDF 基于 FT2232H 的 JTAG 调试接口配置指南:ESP-WROVER-KIT 与 ESP32-S2-Kaluga-1 的 USB 驱动与硬件设置

ESP-IDF 基于 FT2232H 的 JTAG 调试接口配置指南:ESP-WROVER-KIT 与 ESP32-S2-Kaluga-1 的 USB 驱动与硬件设置 ESP-IDF 基于 FT2232H 的 JTAG 调试接口配置指南ESP-WROVER-KIT 与 ESP32-S2-Kaluga-1 的 USB 驱动与硬件设置【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf导读本文介绍如何在 ESP-IDF 中为内置 FT2232H JTAG 适配器的官方开发板如 ESP-WROVER-KIT、ESP32-S2-Kaluga-1配置 JTAG 调试接口涵盖板载跳线/DIP 开关设置、USB 驱动安装以及 Windows、Linux、macOS 三套操作系统的完整配置流程。读完本文你将掌握如何通过一根 USB 线同时打通 JTAG 调试通道与 UART 串口通道使 OpenOCD 能够正常连接芯片为后续 GDB 调试奠定基础。本文主体内容整理自 configure-ft2232h-jtag.rst并辅以 index.rst 及目标芯片.inc片段中的源码级细节。背景为什么开发板自带 JTAG 只需要一根 USB 线所有版本的 ESP-WROVER-KIT 与 ESP32-S2-Kaluga-1 开发板都内置了 JTAG 功能。根据 index.rst 的说明这种单 USB 线直连的能力来自板载FT2232H 芯片它提供两个 USB 通道一个用于 JTAG另一个用于 UART 连接。FT2232H 的 JTAG 接口工作时钟可达20 MHz这个速度用外接 JTAG 适配器很难达到这也是官方推荐使用这类开发板作为入门调试方案的原因。要让板载 JTAG 真正工作需要完成两件事硬件配置通过跳线jumper或 DIP 开关启用 JTAG 功能USB 驱动配置让 OpenOCD 既能访问 JTAG 通道又能访问用于烧录应用程序的 UART 通道。此外本节内容同样适用于其他基于 FT2232 的 JTAG 适配器——开发板使用的是 FT2232 适配器下面的驱动配置步骤具有通用性。第一步配置硬件跳线与 DIP 开关ESP-WROVER-KIT设置 JP8 跳线根据 esp32.inc 中devkit-hw-config片段的定义ESP-WROVER-KIT 需要按照 JP8 的丝印说明设置跳线来启用板载 JTAG 功能具体跳线位置请参考 ESP-WROVER-KIT 官方硬件文档。ESP32-S2-Kaluga-1检查 SW5 DIP 开关根据 esp32s2.inc 的说明ESP32-S2-Kaluga-1出厂默认不需要额外的硬件配置即可进行 JTAG 调试。但如果遇到问题请检查原理图中标注为SW5 的 JTAG DIP 开关确保标有 TCK、TDO、TDI、TMS 的开关都处于ON位置。校验 JTAG 引脚未被其他硬件占用在开始驱动配置前请确认目标芯片用于 JTAG 通信的引脚没有连接到其他可能干扰 JTAG 工作的外设。以 ESP32 为例esp32.inc 中jtag-pins片段给出的引脚映射如下ESP32 引脚JTAG 信号MTDO / GPIO15TDOMTDI / GPIO12TDIMTCK / GPIO13TCKMTMS / GPIO14TMS如果这些引脚被复用到了其他外设通常需要重新烧录一份不占用 GPIO12~GPIO15 的固件才能恢复 JTAG相关细节可参考 tips-and-quirks.rst 中的jtag-debugging-tip-jtag-pins-reconfigured一节。第二步配置 USB 驱动按操作系统分步操作硬件配置完成后需要安装并配置 USB 驱动使 OpenOCD 能够与开发板上的 JTAG 接口以及用于烧录的 UART 接口通信。请按照你所用操作系统对应的章节操作。Windows连接开发板使用标准 USB A 转 Micro USB B 线缆将开发板连接到电脑然后给开发板上电。等待驱动自动安装等待 Windows 识别开发板的 USB 端口并自动安装驱动。如果没有自动安装请从 FTDI 官网下载 D2XX 驱动https://ftdichip.com/drivers/d2xx-drivers/并手动安装。安装乐鑫专用驱动从乐鑫的 Windows USB 驱动发布页https://github.com/espressif/esp-win-usb-drivers/releases下载开发板对应驱动。解压驱动文件后右键选择安装驱动参考微软官方 INF 文件安装说明。这一步会把Dual RS232-HS (Interface 0)的驱动替换为乐鑫提供的驱动。验证此时开发板的 JTAG 接口应该已经对 OpenOCD 可见可以继续进入运行 OpenOCD的调试环境搭建步骤见下文。Windows 手动更换驱动备用方案如果上述驱动安装失败或 OpenOCD 仍然无法工作可以手动更换驱动若驱动已正常工作此步骤可跳过从 https://zadig.akeo.ie/ 下载 Zadig 工具并运行。在 Zadig 中进入Options菜单勾选List All Devices。检查设备列表应能看到两个开发板专属的 USB 条目Dual RS232-HS (Interface 0)和Dual RS232-HS (Interface 1)。驱动名称为FTDIBUS (vxxxx)USB ID 为0403 6010。第一个设备Dual RS232-HS (Interface 0)连接到目标芯片的 JTAG 端口。需要把它的原始驱动FTDIBUS (vxxxx)替换为WinUSB (v6xxxxx)选中 Dual RS232-HS (Interface 0)将附加驱动重装为 WinUSB (v6xxxxx)如上图所示。重要提示不要更改第二个设备Dual RS232-HS (Interface 1)的驱动。它连接到目标芯片的串口UART用于向芯片 flash 上传应用程序。如果误改串口烧录将不可用。Linux连接并上电使用标准 USB A 转 Micro USB B 线缆连接开发板到电脑给板上电。确认设备被识别打开终端执行ls -l /dev/ttyUSB*检查开发板的 USB 端口是否被系统识别。预期输出类似user-namecomputer-name:~/esp$ ls -l /dev/ttyUSB* crw-rw---- 1 root dialout 188, 0 Jul 10 19:04 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 Jul 10 19:04 /dev/ttyUSB1配置访问权限为了给 OpenOCD 支持的 USB 设备设置访问权限需要把乐鑫 OpenOCD 仓库中的udev 规则文件60-openocd.rules复制到/etc/udev/rules.d目录。生效并验证注销并重新登录然后给开发板重新上电使改动生效。再次在终端执行ls -l /dev/ttyUSB*确认文件所属组已经从dialout变为plugdevuser-namecomputer-name:~/esp$ ls -l /dev/ttyUSB* crw-rw-r-- 1 root plugdev 188, 0 Jul 10 19:07 /dev/ttyUSB0 crw-rw-r-- 1 root plugdev 188, 1 Jul 10 19:07 /dev/ttyUSB1如果看到类似结果且你的用户属于plugdev组则配置完成。接口编号说明编号较小的/dev/ttyUSBn接口用于 JTAG 通信另一个接口连接到目标芯片的串口UART用于向 flash 上传应用程序。完成以上步骤后开发板的 JTAG 接口即可被 OpenOCD 使用可以继续进入运行 OpenOCD环节。macOS在 macOS 上同时使用 FT2232 的 JTAG 与串口功能需要额外的处理。问题根源在于当系统加载 FTDI 串口驱动时会同时加载 FT2232 芯片的两个通道但这两个通道中只有一个被用作串口另一个用于 JTAG。如果系统为 JTAG 所用的那个通道加载了 FTDI 串口驱动OpenOCD 将无法连接芯片。有两种解决办法手动卸载 FTDI 串口驱动在启动 OpenOCD 之前卸载串口驱动启动 OpenOCD 后再重新加载修改 FTDI 驱动配置让驱动不对 FT2232 芯片的通道 A 自动加载ESP-WROVER-KIT 上通道 A 用于 JTAG。方式一手动卸载驱动从 FTDI 官网https://ftdichip.com/drivers/vcp-drivers/安装 FTDI 驱动。将 USB 线缆连接到开发板。卸载串口驱动sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver某些情况下还需要同时卸载 Apple 自带的 FTDI 驱动macOS 10.15sudo kextunload -b com.apple.driver.AppleUSBFTDImacOS 10.15sudo kextunload -b com.apple.DriverKit-AppleUSBFTDI警告如果在错误的通道上使用串口FTDI 驱动会导致内核崩溃kernel panic。以 ESP-WROVER-KIT 为例通道 A 用于 JTAG通道 B 用于串口。运行 OpenOCD命令示例见下文运行 OpenOCD小节。在另一个终端窗口中重新加载 FTDI 串口驱动sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver如果只是需要重启 OpenOCD无需再次卸载 FTDI 驱动——只需停止 OpenOCD 再重新启动即可。只有在开发板重新连接或电源被切换时才需要重新卸载驱动。这一步操作如果需要反复执行也可以封装成 shell 脚本来简化流程。方式二修改 FTDI 驱动配置这种方式的思路是修改 FTDI 驱动的配置文件阻止驱动为 FT2232H 的通道 B 加载。注意其他开发板可能用通道 A 或通道 B 中的某一个做 JTAG使用此方案前请先确认你的板子通道分配谨慎操作。警告这种方式还需要禁用驱动的签名验证kext 签名校验并非所有用户都能接受。用文本编辑器打开 FTDI 驱动配置文件注意需要使用sudosudo nano /Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist找到并删除以下配置段这段配置描述了通道 B即bInterfaceNumber为1的接口keyFT2232H_B/key dict keyCFBundleIdentifier/key stringcom.FTDI.driver.FTDIUSBSerialDriver/string keyIOClass/key stringFTDIUSBSerialDriver/string keyIOProviderClass/key stringIOUSBInterface/string keybConfigurationValue/key integer1/integer keybInterfaceNumber/key integer1/integer keybcdDevice/key integer1792/integer keyidProduct/key integer24592/integer keyidVendor/key integer1027/integer /dict保存并关闭文件。禁用驱动签名验证打开 Apple 标志菜单选择重新启动...重启后听到启动提示音时立即按住CMDR进入恢复模式后打开终端执行命令csrutil enable --without kext再次重启。完成以上步骤后串口与 JTAG 可以同时使用。驱动配置完成之后运行 OpenOCD开发板配置完成并连接到电脑后即可启动 OpenOCD。打开终端并按 ESP-IDF 环境设置说明配置好环境Windows 见环境设置、Linux/macOS 见环境设置章节然后传入板级配置文件运行。以 ESP-WROVER-KIT 为例来自 esp32.inc 的run-openocd片段命令为openocd -f board/esp32-wrover-kit-3.3v.cfg该命令在 Windows、Linux、macOS 上均可使用。预期的正常输出大致如下日志节选自 esp32.inc 的run-openocd-output片段user-namecomputer-name:~/esp/esp-idf$ openocd -f board/esp32-wrover-kit-3.3v.cfg Open On-Chip Debugger v0.10.0-esp32-20190708 (2019-07-08-11:04) Licensed under GNU GPL v2 ... none separate adapter speed: 20000 kHz force hard breakpoints 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 was reset (pwrstat0x5F, after clear 0x0F). Info : esp32: Core was reset (pwrstat0x5F, after clear 0x0F).日志中adapter speed: 20000 kHz即对应前文提到的 FT2232H 20 MHz 工作时钟。常见排错指引来自 index.rst权限错误请参考 OpenOCD README 中关于 Permissions delegation 的说明位于~/esp/openocd-esp32目录。找不到配置文件例如Cant find board/esp32-wrover-kit-3.3v.cfg检查OPENOCD_SCRIPTS环境变量是否设置正确——OpenOCD 通过该变量查找-f参数指定的文件同时确认文件确实存在于指定路径。JTAG 错误例如输出全是...all ones或...all zeroes检查 JTAG 连接确认除目标芯片引脚外没有其他信号接到 JTAG并确认所有部件供电正常。不同开发板/适配器需要传入不同的配置文件。下表整理了 esp32.inc 中openocd-cfg-files片段列出的 ESP32 常用 OpenOCD 配置文件配置文件说明board/esp32-wrover-kit-3.3v.cfg适用于带 3.3 V ESP32-WROOM-32 模块或 ESP32-WROVER-B / ESP32-WROVER-E 模块的 ESP-WROVER-KITboard/esp32-wrover-kit-1.8v.cfg适用于带 1.8 V ESP32-WROVER 模块的 ESP-WROVER-KITboard/esp32-ethernet-kit-3.3v.cfg适用于带 3.3 V ESP32-WROVER-B / ESP32-WROVER-E 模块的 ESP-Ethernet-KITtarget/esp32.cfgESP32 目标配置文件可与某个interface/配置文件配合使用target/esp32-solo-1.cfgESP32-SOLO-1 模块的目标配置文件与esp32.cfg的区别是只配置一个 CPUinterface/ftdi/esp_ftdi.cfgESP-WROVER-KIT 与 ESP-Prog 开发板的 JTAG 适配器配置文件OpenOCD 正常启动后即可继续上传应用程序并进行 GDB 调试具体流程可参考 index.rst 的 Upload Application for Debugging 小节与 using-debugger.rstEclipse、命令行、idf.py三种调试方式。补充ESP-IDF 中的其他 JTAG 配置路径内置 USB JTAG无需外部适配器对于支持 USB Serial/JTAG 的芯片如 ESP32-C3/C6/H2 等可参考 configure-builtin-jtag.rst 配置芯片自带的 USB JTAG 通道。外部 JTAG 适配器如果使用 ESP-Prog 等外部调试器连接 JTAG 引脚请参考 configure-other-jtag.rst。常见问题与技巧跳线、引脚复用、启动命令等调试技巧汇总在 tips-and-quirks.rst。小结配置 FT2232H 板载 JTAG 的核心要点可以归纳为三条硬件使能ESP-WROVER-KIT 设置 JP8 跳线ESP32-S2-Kaluga-1 检查 SW5 DIP 开关默认已使能并确保 JTAG 引脚未被其他外设占用驱动匹配Windows 下将 Interface 0JTAG 通道切换为 WinUSB 驱动而保留 Interface 1UART不动Linux 下配置 udev 规则与plugdev组权限macOS 下需处理 FTDI 串口驱动与 JTAG 通道的冲突卸载驱动或修改 Info.plist验证连通执行openocd -f board/board.cfg观察是否成功枚举到目标芯片的 TAP 并显示 20 MHz 时钟。完成以上配置后FT2232H 的 JTAG 通道即可稳定服务于 OpenOCD/GDB 调试链路与 UART 烧录通道互不干扰。【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表