CH347应用 USB转JTAG/SWD功能之:开源项目OpenOCD实现对STM32固件下载

OpenOCD简介

OpenOCD(Open On-Chip Debugger)作为开源的硬件调试器,使用标准的JTAG接口与芯片进行通信,可对嵌入式芯片进行下载和调试,支持各种不同的硬件平台,如ARM、MIPS、Cortex-M、Cortex-A、Cortex-R、PowerPC和RISC-V等架构的微控制器和处理器。

CH347介绍

CH347是一款高速USB总线转接芯片,通过USB总线提供异步串口、I2C同步串行接口、SPI同步串行接口和JTAG接口等。芯片资源如下:

  1. 2个高速串口,最高波特率达9Mbps
  2. 1个2线I2C接口
  3. 1个4线SPI接口,最高速率60MHz
  4. 1个JTAG接口
  5. 1个SWD接口

芯片封装分为T/F两种,CH347F可实现多功能同时使用,CH347T则需要进行相应模式切换。
芯片详情:
https://blog.youkuaiyun.com/qq_43010294/article/details/141712680

OpenOCD的编译

这里主要介绍Linux系统下的编译,Windows系统可直接下载沁恒提供的release版本(https://github.com/WCHSoftGroup/ch347/releases/tag/CH347_OpenOCD_Release)

#克隆仓库
git clone https://github.com/WCHSoftGroup/ch347.git
#进入目录,创建一个输出文件夹
cd ch347/;mkdir output;cd OpenOCD_SourceCode_CH347/
#运行编译脚本,YOUR_OUTPUT_PATH为刚创建的输出文件夹路径
./bootstrap
./configure --enable-ch347 --prefix=YOUR_OUTPUT_PATH
#执行结果如下,可看到已经成功使能CH347,接下来直接make install
OpenOCD configuration summary
--------------------------------------------------
MPSSE mode of FTDI based devices        yes (auto)
ST-Link Programmer                      yes (auto)
TI ICDI JTAG Programmer                 yes (auto)
Keil ULINK JTAG Programmer              yes (auto)
Altera USB-Blaster II Compatible        yes (auto)
Bitbang mode of FT232R based devices    yes (auto)
Versaloon-Link JTAG Programmer          yes (auto)
TI XDS110 Debug Probe                   yes (auto)
CMSIS-DAP v2 Compliant Debugger         yes (auto)
OSBDM (JTAG only) Programmer            yes (auto)
eStick/opendous JTAG Programmer         yes (auto)
Olimex ARM-JTAG-EW Programmer           yes (auto)
Raisonance RLink JTAG Programmer        yes (auto)
USBProg JTAG Programmer                 yes (auto)
Espressif JTAG Programmer               yes (auto)
Mode 3 of the CH347 devices             yes
CMSIS-DAP Compliant Debugger            yes (auto)
Nu-Link Programmer                      yes (auto)
Cypress KitProg Programmer              yes (auto)
Altera USB-Blaster Compatible           yes (auto)
ASIX Presto Adapter                     yes (auto)
OpenJTAG Adapter                        yes (auto)
Linux GPIO bitbang through libgpiod     no
SEGGER J-Link Programmer                no
Bus Pirate                              yes (auto)
Use Capstone disassembly framework      no

#make install
make install
#等待编译完成...
s,^./tcl,,'); do \
	j="/home/develop_pro/CH347_Linux/ch347/output/share/openocd/scripts/$i" && \
	mkdir -p "$(dirname $j)" && \
	/usr/bin/install -c -m 644 ./tcl/$i $j; \
done
...
#进入输出目录确认OpenOCD执行文件

基于STM32F1的固件烧写

OpenOCD的使用离不开cfg文件的指定,对于MCU来说一般需要准备两个cfg文件,分别对应目标板与烧录器:
目标板cfg :我们可在output/share/openocd/scripts/target目录下找到stm32f1x.cfg文件,对于其他没有包含在文件夹下的设备可自行书写cfg。
烧录器cfg

#指定CH347设备
adapter driver ch347
#指定为jtag方式,若使用swd下载,替换为transport select swd
transport select jtag
#设置TCK时钟频率
adapter speed 1000

烧写hex

./openocd -f ch347.cfg  -f stm32f1x.cfg -c "program led.hex" -c reset
Open On-Chip Debugger 0.12.0+dev-g28f72ea-dirty (2024-05-11-14:22)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
adapter speed: 1000 kHz
Info : CH347 Open Succ.
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: 0x06414041 (mfg: 0x020 (STMicroelectronics), part: 0x6414, ver: 0x0)
Info : [stm32f1x.cpu] Cortex-M3 r1p1 processor detected
Info : [stm32f1x.cpu] target has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32f1x.cpu on 3333
Info : Listening on port 3333 for gdb connections
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: 0x06414041 (mfg: 0x020 (STMicroelectronics), part: 0x6414, ver: 0x0)
[stm32f1x.cpu] halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x080008bc msp: 0x20000688
** Programming Started **
Info : device id = 0x10036414
Info : flash size = 512 KiB
Warn : Adding extra erase range, 0x080009f8 .. 0x08000fff
** Programming Finished **
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: 0x06414041 (mfg: 0x020 (STMicroelectronics), part: 0x6414, ver: 0x0)
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
^Cshutdown command invoked
Info : Close the CH347.

注:program烧录命令 、-c reset为下载后复位

FPGA的固件烧写

至于FPGA的烧录可参考:

https://blog.youkuaiyun.com/qq_43010294/article/details/138678402
CH347应用–USB TO JTAG进行FPGA调试下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值