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

OpenOCD学习笔记 6-如何使用FTDI芯片作为SWD或JTAG调试器相关推荐

  1. python学习笔记4(对象/引用;多范式; 上下文管理器)

    python学习笔记4(对象/引用:多范式; 上下文管理器) ### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 21. 动态类型:对象/引用 对象和引用: 对象是 ...

  2. OpenOCD学习笔记 3-配置基本知识

    一般情况下要实现一个完整的调试配置,只需要2个配置文件,比如: openocd –f interface/yourInterface.cfg –f yourBoard.cfg yourInterfac ...

  3. FPGA学习笔记(四)——串口通信之接收数据(调试过程)

    本学习笔记主要参考小梅哥B站教学视频,网址如下: https://www.bilibili.com/video/BV1va411c7Dz?p=1 使用的编译器为Vivado,HDL语言为verilog ...

  4. OpenOCD学习笔记 5-stm32f0x配置文件解析

    OpenOCD的文档东西比较多,还有很多可能与DAPLink无关,所以改为分析stm32f0x.cfg文件,逐步学习每个的含义. 1. source [find target/swj-dp.tcl] ...

  5. AutoLeaders控制组——51单片机学习笔记(蜂鸣器、AT24C02芯片)

    本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 一些内容涉及 ...

  6. 安卓学习笔记23:常用控件 - 网格视图与图像切换器

    文章目录 零.学习目标 一.网格视图 (一)概述 (二)继承关系图 (三)常用属性 二.图像切换器 (一)概述 (二)继承关系图 三.案例演示 - 选择水果 (一)运行效果 (二)涉及知识点 (三)实 ...

  7. Auto.js学习笔记2:真机连接vscode开发工具进行调试,自动开启微信app,自动切换通讯录和微信界面

    实战代码演示启动微信并切换微信和通讯录界面 申明本人使用的autojs是4.1.1版本 1. 安装autojsapp:4.1.1版本 这个不用多说,找到app安装到手机上 启动autojs的app,开 ...

  8. ROS2学习笔记(八)-- ROS2参数应用实现道路识别调试

    简介:参数也是ROS2系统中很重要的一项功能,主要是用来对节点进行配置,一般用在调试过程中,通过命令行的方式修改节点的一些配置,用以辅助调试,另外节点参数也支持导入和导出,调试好的参数可以导出到本地保 ...

  9. Kotlin学习笔记28 Flow part2 Flow引入 Flow的执行 取消 构建器 中间操作符 终端操作符 默认执行顺序 上下文相关

    参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 1  一个方法返回多个结果各种实现 /*** 一个方法返回多个结果* 方式1 返回一个集合* 特点* 1 方法本身是阻塞的 ...

最新文章

  1. “举报”阿里巴巴 Arthas,大幅降低 OOM Trouble shooting 门槛
  2. 一起学 Java(四) File、Try 、序列化、MySQL、Socket
  3. .net SerialPort
  4. 在没有IDE的情况下编译和运行Java
  5. 【计算机网络复习 数据链路层】3.5.4 CSMA-CD协议
  6. office另存为pdf的加载项_pdf怎么转换成word?打工人必备的丛林法则
  7. C语言佛,佛大c语言毕业前补考.doc
  8. 终章-剑之魂【模拟】【贪心】
  9. 82相似标准形03——不变因子、行列式因子、相抵标准形的唯一性、用求行列式因子法求标准形
  10. JavaMail简单接收邮件
  11. Linux ubuntu centos 文件目录是什么意思
  12. python html5游戏_分享八款经典HTML5小游戏源码
  13. 啦啦外卖45.4至尊版全开源独立版源码
  14. Unity3d 技巧(9) 游戏上线必备 适配Steam 安装包需要用到的资料
  15. 2019五一联赛建模心得
  16. 面试时被问到职业规划怎么回答?
  17. 计算机加入域后的用户名和密码,Windows自动改计算机名和加入域工具
  18. 用JAVA语言完成实验——猴子摘香蕉
  19. centos7密码破解
  20. [C语言]扫雷游戏(Mine Sweeper)

热门文章

  1. 电子工程师必须掌握的硬件测试仪器,你确定你都掌握了?
  2. Model 的使用说明
  3. HLSL中mul函数的使用
  4. 【2021Java最新学习路线】java审批工作流实现
  5. C#设置DataGridView行背景色无效的问题
  6. 《人工智能各领域技能树汇总整理》
  7. 【区间贪心】合理安排电视节目
  8. 【Android笔记】【壁纸一】默认壁纸及默认壁纸组件
  9. Ubunto 常见操作
  10. matlab论文大纲,数模论文大纲格式范文 数模论文大纲怎样写