OpenOCD学习笔记 6 | 您所在的位置:网站首页 › FT2232HL驱动 › OpenOCD学习笔记 6 |
FTDI的设备用到的interface Driver有2个,分别位ftdi和ft232r。 【ftdi】 如果使用ftdi的interface配置,则使用的是FTDI的MPSSE模式,仅H系列芯片(FT232H、FT2232H、FT4232H)支持。这部分驱动使用的是libusb-1.0,而不是libftdi和D2XX。 默认情况下是JTAG,如果要使用SWD,则需要配置SWD_EN。 配置命令: ftdi_vid_pid [vid pid]+指定调试器的VID和PID,最多8组。例如:ftdi_vid_pid 0x0403 0xcff8 0x15ba 0x0003 ftdi_device_desc description指定调试器的描述符。 ftdi_serial serial-number指定调试器的Serial Number。 ftdi_channel channel指定FTDI设备的Channel。对应FT232H来说,只有Channel 0(默认),FT2232H/FT4232H是Channel 0和Channel 1。 ftdi_layout_init data direction指定FTDI GPIO的初始数据和方向,16bit数据宽度。参数data中1表示高电平,0表示低电平,而参数direction中1表示输出,0表示输入(注意与常规的设定不同) 以FT232H为例,其JTAG和SWD的PIN脚定义如下: # Adafruit FT232H JTAG SWD # Name Pin Name Func Func # D0 J1-3 ADBUS0 TCK SWDCLK # D1 J1-4 ADBUS1 TDO/DI SWDIO # D2 J1-5 ADBUS2 TDI/DO SWDIO # D3 J1-6 ADBUS3 TMS N/A # D4 J1-7 ADBUS4 (GPIOL0) /nSRST optional module reset # D5 J1-8 ADBUS5 (GPIOL1) /nTRST optional target reset 如果使用SWD,其IO口初始化命令:ftdi_layout_init 0x0030 0x003b direction: 0b0000'0000'0011'1011, 即除了ADBUS2脚为输出,其他用到的IO都为输出,而不使用的IO为输入。 data: 0b0000'0000'0011'0000b,即nSRST和nTRST输出高电平,其他为低电平。 ftdi_layout_signal name [-data|-ndata data_mask] [-input|-ninput input_mask] [-oe|-noe oe_mask] [-alias|-nalias name]创建一个名字为name的信号。 -data|-ndata data_mask: data_mask是对应pin脚的掩码,-ndata表示输入数据反向,-data则不反向。 -input|-ninput input_mask:表示对应pin脚是否为输入,-input表示输入,-ninput表示非输入。 -oe|-noe oe_mask:表示对应pin脚是否为输出,-oe表示输出,-noe表示非输出。 -alias|-nalias name:如果使用-alias(或-nalias),则创建的信号相同(或数据取反)到已指定的信号名称。 ftdi_set_signal name 0|1|z 输出信号 -0:输出低 -1:输出高 -z:设置为高阻态 ftdi_get_signal name读取信号 ftdi_tdo_sample_edge rising|falling-rising, TCK上升沿采样TDO,默认 -falling, TCK下降沿采样TDO
【ft232r】 FT232R/FT230X/FT231X或其他支持synchronous bitbang mode的芯片,使用RS232的信号作为GPIO。注意不支持CBUS脚。仅支持JTAG模式。 FT232R: bit 7 – RI / bit 6 – DCD / bit 5 – DSR / bit 4 – DTR / bit 3 – CTS / bit 2 – RTS / bit 1 – RXD / bit 0 - TXD 配置命令: ft232r_vid_pid vid pid指定调试器的VID和PID ft232r_serial_desc serial指定调试器的描述符。 ft232r_jtag_nums tck tms tdi tdo一次配置4个信号脚。默认0 3 1 2 或TXD CTS RXD RTS ft232r_tck_num tck配置tck脚 ft232r_tms_num tms配置tms脚 ft232r_tdi_num tdi配置tdi脚 ft232r_tdo_num tdo配置tdo脚 ft232r_trst_num trst配置trst脚 ft232r_srst_num srst配置srst脚 ft232r_restore_serial word在JTAG后恢复串口的IO口状态。低8位字节为方向设置,0x15表示TXD RTS DTR为输出,其他为输入。高8位字节为0表示禁止bitbang模式。默认值0xFFFFF表示停止发送控制字. Windows下默认的驱动是VCP,OpenOCD是通过libftdi和libusb来访问设备的,所以需要更换驱动程序为选择 WinUSB 驱动。换驱动的工具推荐使用Zadig。(推荐参考网文:使用JTAG接口调试和恢复华为ONT的准备工作)。 JTAG连接STM32F103的调试参考命令,FTDI设备选择FT230X,复制ft232r.cfg为ft230x.cfg,修改如下: interface ft232r ft232r_vid_pid 0x0403 0x6015 adapter_khz 1000 #TCK:RTS,TMS:CTS,TDI:TXD,TDO:RXD ft232r_jtag_nums 2 3 0 1 然后MCU的配置文件选择target文件夹下的stm32f1x.cfg,测试命令如下: openocd.exe -f interface\ft230x.cfg -f target\stm32f1x.cfg 打印结果如下: xPack OpenOCD, 64-bit Open On-Chip Debugger 0.10.0+dev (2019-07-17-11:28) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' FT232R nums: TCK = 2 RTS, TMS = 3 CTS, TDI = 0 TXD, TDO = 1 RXD
Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : clock speed 1000 kHz Info : JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x3) Info : JTAG tap: stm32f1x.bs tap/device found: 0x16410041 (mfg: 0x020 (STMicroelectronics), part: 0x6410, ver: 0x1) Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints Info : stm32f1x.cpu: external reset detected Info : Listening on port 3333 for gdb connections
|
CopyRight 2018-2019 实验室设备网 版权所有 |