MacOS¶
在 macOS 上,同时使用 FT2232 的 JTAG 接口和串口还需另外进行其它操作。当操作系统加载 FTDI 串口驱动的时候,它会对 FT2232 芯片的两个通道做相同的操作。但是,这两个通道中只有一个是被用作串口,而另一个用于 JTAG,如果操作系统已经为用于 JTAG 的通道加载了 FTDI 串口驱动的话,OpenOCD 将无法连接到芯片。有两个方法可以解决这个问题:
在启动 OpenOCD 之前手动卸载 FTDI 串口驱动程序,然后启动 OpenOCD,再加载串口驱动程序。
修改 FTDI 驱动程序的配置,使其不会为 FT2232 芯片的通道 B 进行自我加载,该通道用于 ESP-WROVER-KIT 板上的 JTAG 通道。
手动卸载驱动程序¶
使用 USB 线连接 ESP-WROVER-KIT。
卸载串口驱动
sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
有时,您可能还需要卸载苹果的 FTDI 驱动:
sudo kextunload -b com.apple.driver.AppleUSBFTDI
运行 OpenOCD:
.. include:: esp32.inc
:start-after: run-openocd
:end-before: ---
在另一个终端窗口,再一次加载 FTDI 串口驱动:
sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
注解
如果你需要重启 OpenOCD,则无需再次卸载 FTDI 驱动程序,只需停止 OpenOCD 并再次启动它。只有在重新连接 ESP-WROVER-KIT 或者切换了电源的情况下才需要再次卸载驱动。
你也可以根据自身需求,将此过程包装进 shell 脚本中。
修改 FTDI 驱动¶
简而言之,这种方法需要修改 FTDI 驱动程序的配置文件,这样可以防止为 FT2232H 的通道 B 自动加载串口驱动。
注解
其他板子可能将通道 A 用于 JTAG,因此请谨慎使用此选项。
警告
此方法还需要操作系统禁止对驱动进行签名验证,因此可能无法被所有的用户所接受。
使用文本编辑器打开 FTDI 驱动的配置文件(注意 sudo):
sudo nano /Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist
找到并删除以下几行:
FT2232H_B
CFBundleIdentifier
com.FTDI.driver.FTDIUSBSerialDriver
IOClass
FTDIUSBSerialDriver
IOProviderClass
IOUSBInterface
bConfigurationValue
1
bInterfaceNumber
1
bcdDevice
1792
idProduct
24592
idVendor
1027
保存并关闭文件
禁用驱动的签名认证:
点击苹果的 logo,选择 “Restart…”
重启后当听到响铃时,立即按下键盘上的 CMD+R 组合键
进入恢复模式后,打开终端
运行命令:
csrutil enable --without kext
再一次重启系统
完成这些步骤后,可以同时使用串口和 JTAG 接口了。
想要进一步设置调试环境,请前往 运行 OpenOCD 章节。