OpenOCD学习笔记 6-如何使用FTDI芯片作为SWD或JTAG调试器
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调试器相关推荐
- python学习笔记4(对象/引用;多范式; 上下文管理器)
python学习笔记4(对象/引用:多范式; 上下文管理器) ### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 21. 动态类型:对象/引用 对象和引用: 对象是 ...
- OpenOCD学习笔记 3-配置基本知识
一般情况下要实现一个完整的调试配置,只需要2个配置文件,比如: openocd –f interface/yourInterface.cfg –f yourBoard.cfg yourInterfac ...
- FPGA学习笔记(四)——串口通信之接收数据(调试过程)
本学习笔记主要参考小梅哥B站教学视频,网址如下: https://www.bilibili.com/video/BV1va411c7Dz?p=1 使用的编译器为Vivado,HDL语言为verilog ...
- OpenOCD学习笔记 5-stm32f0x配置文件解析
OpenOCD的文档东西比较多,还有很多可能与DAPLink无关,所以改为分析stm32f0x.cfg文件,逐步学习每个的含义. 1. source [find target/swj-dp.tcl] ...
- AutoLeaders控制组——51单片机学习笔记(蜂鸣器、AT24C02芯片)
本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 一些内容涉及 ...
- 安卓学习笔记23:常用控件 - 网格视图与图像切换器
文章目录 零.学习目标 一.网格视图 (一)概述 (二)继承关系图 (三)常用属性 二.图像切换器 (一)概述 (二)继承关系图 三.案例演示 - 选择水果 (一)运行效果 (二)涉及知识点 (三)实 ...
- Auto.js学习笔记2:真机连接vscode开发工具进行调试,自动开启微信app,自动切换通讯录和微信界面
实战代码演示启动微信并切换微信和通讯录界面 申明本人使用的autojs是4.1.1版本 1. 安装autojsapp:4.1.1版本 这个不用多说,找到app安装到手机上 启动autojs的app,开 ...
- ROS2学习笔记(八)-- ROS2参数应用实现道路识别调试
简介:参数也是ROS2系统中很重要的一项功能,主要是用来对节点进行配置,一般用在调试过程中,通过命令行的方式修改节点的一些配置,用以辅助调试,另外节点参数也支持导入和导出,调试好的参数可以导出到本地保 ...
- Kotlin学习笔记28 Flow part2 Flow引入 Flow的执行 取消 构建器 中间操作符 终端操作符 默认执行顺序 上下文相关
参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 1 一个方法返回多个结果各种实现 /*** 一个方法返回多个结果* 方式1 返回一个集合* 特点* 1 方法本身是阻塞的 ...
最新文章
- “举报”阿里巴巴 Arthas,大幅降低 OOM Trouble shooting 门槛
- 一起学 Java(四) File、Try 、序列化、MySQL、Socket
- .net SerialPort
- 在没有IDE的情况下编译和运行Java
- 【计算机网络复习 数据链路层】3.5.4 CSMA-CD协议
- office另存为pdf的加载项_pdf怎么转换成word?打工人必备的丛林法则
- C语言佛,佛大c语言毕业前补考.doc
- 终章-剑之魂【模拟】【贪心】
- 82相似标准形03——不变因子、行列式因子、相抵标准形的唯一性、用求行列式因子法求标准形
- JavaMail简单接收邮件
- Linux ubuntu centos 文件目录是什么意思
- python html5游戏_分享八款经典HTML5小游戏源码
- 啦啦外卖45.4至尊版全开源独立版源码
- Unity3d 技巧(9) 游戏上线必备 适配Steam 安装包需要用到的资料
- 2019五一联赛建模心得
- 面试时被问到职业规划怎么回答?
- 计算机加入域后的用户名和密码,Windows自动改计算机名和加入域工具
- 用JAVA语言完成实验——猴子摘香蕉
- centos7密码破解
- [C语言]扫雷游戏(Mine Sweeper)