CH347是一款USB转多接口芯片,可在OpenOCD中增添对应接口,实现OpenOCD操作CH347,进行调试下载等应用。

一、CH347简介

CH347是一款国产USB2.0(480Mbps)转接芯片,可以通过USB转出UART、SPI、JTAG、I2C以及8路GPIO等接口。其JTAG时钟频率最高可为72Mbps且频率可调。

二、OpenOCD简介

OpenOCD是一款开源的片上调试器软件,提供了片上编程和调试功能,若需要添加新的调试器接口,可在源码中通过修改相关配置文件,并添加对应操作硬件的实现代码后编译即可实现新接口的使用。

三、为OpenOCD添加接口

OpenOCD需要识别并操作CH347,则需要添加如下文件:

1、tcl/target中添加CH347.cfg设备文件CH347.cfg

adapter driver ch347
ch347 vid_pid 0x1a86 0x55dd
adapter speed 10000

2、src/jtag/driver/ch347.c文件,设备驱动文件,提供给JTAG core操作的接口

可从仓库获取,仓库地址:https://github.com/WCHSoftGroup/ch347

四、修改配置文件

configure.ac

a.m4_define([USB1_ADAPTERS]中添加CH347接口
m4_define([USB1_ADAPTERS],[[[ftdi], [MPSSE mode of FTDI based devices], [FTDI]],[[ch347], [Mode 3 of the CH347 devices], [CH347]],[[stlink], [ST-Link Programmer], [HLADAPTER_STLINK]],[[ti_icdi], [TI ICDI JTAG Programmer], [HLADAPTER_ICDI]],[[ulink], [Keil ULINK JTAG Programmer], [ULINK]],[[usb_blaster_2], [Altera USB-Blaster II Compatible], [USB_BLASTER_2]],[[ft232r], [Bitbang mode of FT232R based devices], [FT232R]],[[vsllink], [Versaloon-Link JTAG Programmer], [VSLLINK]],[[xds110], [TI XDS110 Debug Probe], [XDS110]],[[cmsis_dap_v2], [CMSIS-DAP v2 Compliant Debugger], [CMSIS_DAP_USB]],[[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]],[[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]],[[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]],[[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],[[usbprog], [USBProg JTAG Programmer], [USBPROG]],[[aice], [Andes JTAG Programmer], [AICE]]])b.AC_ARG_ENABLE 部分,添加内容如下:AC_ARG_ENABLE([ch347],AS_HELP_STRING([--enable-ch347], [Enable building support for CH347]),[build_ch347=$enableval], [build_ch347=no])c.AS_IF 部分,添加内容如下:AS_IF([test "x$build_ch347" = "xyes"], [AC_DEFINE([BUILD_CH347], [1], [1 if you want CH347.])], [AC_DEFINE([BUILD_CH347], [0], [0 if you don't want CH347.])])d.AM_CONDITIONAL 部分,添加内容如下:AM_CONDITIONAL([CH347], [test "x$build_ch347" = "xyes"])

src/jtag/interfaces.c

a.添加编译选项
#if BUILD_CH347 == 1
extern struct adapter_driver ch347_adapter_driver;
#endifb.在jtag接口列表结构体adapter_drivers中添加,此处由配置脚本来启用对应接口驱动
#if BUILD_CH347 == 1&ch347_adapter_driver,
#endif

/src/jtag/drivers/Makefile.am

a.添加编译支持
if CH347
DRIVERFILES += %D%/ch347.c
endif

五、编译

1、使用cygwin进行编译,cygwin编译依赖大概如下:

2、Cygwin进入修改好的源码目录下,进行如下步骤

1、执行./bootstrap
2、执行./configure --prefix=/home/OpenOCD/CH347 --enable-ch347 --host=i686-w64-mingw32 CFLAGS='-g -o0'
3、执行make install
4、到/home/OpenOCD/CH347文件夹下可看见编译后文件,其中bin文件下为OpenOCD可执行文件。

3、执行./configure后显示已经支持该接口,此处只编译部分接口。

至此,接口添加操作完毕,使用Windows终端,通过OpenOCD可看见已扫描到FPGA ID信息,接着即可愉快开始下一步操作了。

【2】CH347应用--在OpenOCD添加CH347-USB转JTAG接口相关推荐

  1. linux连接win7的打印机驱动,openWrt用CUPS当打印服务器支持多台打印机,USB打印机设置电脑添加网络USB打印机方法...

    打印机对於日常生活来说,很重要吧!呵呵-没错啊!尤其我们的 Linux 主机如果未来还要作为 Printing server 的话,那么自然就得要先创建好打印机的连线啦!在本章里面我们仅谈论一下如何让 ...

  2. Android添加iPod USB PCM音频

    在Apple的MFI文档中说明了,USB接口的播放器是需要接入USB的HID接口以及USB PCM接口. 驱动部分暂时先不说了,直接说framwork部分的添加PCM接口部分的事情了. 1.在andr ...

  3. 高速USB转JTAG/SPI/I2C/UART/GPIO应用

    高速USB转接芯片CH347是一款集成480Mbps高速USB接口.JTAG接口.SPI接口.I2C接口.异步UART串口.GPIO接口等多种硬件接口的转换芯片. 接口示意图: 应用示意图: JTAG ...

  4. 科普 | USB 协议与接口

    关于 USB 接口,首先要分清协议和物理接口.相同的物理接口(形态)可能搭载不同的协议,而同一协议也可能用在不同形态的接口上. 下面直接给出 USB 协议和物理接口. 一.USB 协议   USB 2 ...

  5. libusb usb设备访问接口库

    libusb 是一个用C语言开发的跨平台的USB设备访问接口库. 驱动开发向来是内核开发中工作量最多的一块,随着USB设备的普及,大量的USB设备的驱动开发也成为驱动开发者手头上做的最多的事情.本文主 ...

  6. ATL--创建简单的ATL之dll工程,添加类和类的接口并在MFC中调用

    资源打包 开发环境 Windows Server 2012 VS2010 Sp1 番茄助手 创建ATL简单dll工程 1.打开VS2010,新建ATL COM 项目,步骤:"文件" ...

  7. Android+usb+spi,Android设备如何使用USB的硬件接口

    你知道Android设备如何使用USB的硬件接口吗?下面将由学习啦小编带大家来解答这个疑问吧,希望对大家有所收获! 如何处理硬件接口问题 最近业界的发展显示,智能手机/便携系统与自动化系统或机械系统之 ...

  8. usb网卡转接口被识别为光盘

    如何解决我们的usb网卡转接口被识别为光盘 在正常情况下查进入的时候会有光盘驱动,只要点击安装即可识别为网卡 但是被我卸载了,我只能命令行msconfig来进行安全引导后再重启 重启后就会自动安装,后 ...

  9. FTDI FT2232H USB TO JTAG学习笔记(一)基础概念

    文章目录 一.FT2232H 和 JTAG 简介 1.1 FT2232H 1.2 JTAG 二.MPSSE 配置 2.1 MPSSE简介 2.2 串行协议配置 参考文献 注:转载请注明出处 记录下学习 ...

  10. USB TYPE C接口拆解及定义、USB3.1标准说明

    FROM:http://www.lulian.cn/article-279-cn.html USB TYPE C接口以其纤薄.正反可插拔等诸多优势,得到了广泛运用,我们先看看USB TYPE C接头拆 ...

最新文章

  1. [转]Apache Commons IO入门教程
  2. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
  3. Java从键盘输入若干数_用java编程序:从键盘输入若干个整数,输出这些数中大于其平均值的数。...
  4. linux memcpy 效率,memcpy每秒字节速率
  5. GARFIELD@01-25-2005
  6. es6学习 http://es6.ruanyifeng.com/
  7. 在ubuntu linux 中编写一个自己的bash脚本
  8. 暑假作业点评:运动会管理系统设计说明书
  9. STM32F072RB 实作笔记(一)- Keil 安装
  10. 中间件——《中间件技术原理及应用》考试复习重点
  11. [亲测可用]Premiere Pro 2020视频剪辑软件,premiere2020软件安装包
  12. 热炉法则:规章制度面前人人平等 | 每天成就更大成功
  13. redis 默认过期策略_redis过期策略
  14. 红烧鸡翅(简单又好吃)
  15. 1、解读中台 -- 什么是中台
  16. 【短视频运营】查找对标账号 ( 关键词搜索 | 第三方工具查找 | 对标账号学习 | 视频文案 | #话题 | 评论内容 | 历史视频 )
  17. c语言合并wav文件,如何将两个WAV文件合并/合并为一个WAV文件?
  18. 记录来到结算页面的客户
  19. 《Java程序设计》第二周学习总结
  20. 计算机毕业设计房地产客服管理系统xns程序

热门文章

  1. linux离线安装nettools,CentOS最小安装之安装net-tools并配置网络
  2. 2021,我的海内外博士申请总结!
  3. 计算机网络之TCP最大连接限制
  4. 笔记44-JQuery高级笔记
  5. TPS65217DRSLR 电源管理IC 设计用于便携式设备
  6. 编译原理-18-语法分析实验代码示例
  7. 【智能制造】制造业信息化与工业4.0
  8. 永久代,方法区 和 元空间之间的关系
  9. 分开奇数和偶数(C语言实现)
  10. Android日历操作