• 【2】CH347应用--在OpenOCD添加CH347-JTAG接口


            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

    1. adapter driver ch347
    2. ch347 vid_pid 0x1a86 0x55dd
    3. adapter speed 10000

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

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

    四、修改配置文件

    configure.ac

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

    src/jtag/interfaces.c

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

    /src/jtag/drivers/Makefile.am

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

    五、编译

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

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

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

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

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

  • 相关阅读:
    服务器端口,服务器远程端口修改操作
    阿里云大数据专业认证(ACP),值得报名吗?
    有什么docker容器可以监视本地请求的码
    把jar包打到本地仓库然后上传到私服
    React Native for Arcgis 地图开发 LocationDisplayCtrl (十四)
    glibc: mprotect: 使用
    【狂神说Java】Mybatis-plus
    .NET 云原生架构师训练营(权限系统 代码实现 ActionAccess)--学习笔记
    Element Plus 解决组件显示英文问题
    Conda常用命令及Pycharm使用虚拟环境
  • 原文地址:https://blog.csdn.net/OIDCAT/article/details/126876159