2018-06-30重要更新,附件换成了源代码。. W: H5 \9 U/ c! D) ^" ~ 2018-08-29附件更新,与github相同。( R1 t5 x' @! ~( I/ I 2019-12-24重要更新,速度提升,功能不变。 ! M, s' @# N6 ?4 b github:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO ----------------------------------------------------------------; p* ^5 H; t1 o! V1 R: B 2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。 * r4 s1 @9 ^% m, H 10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。- D5 `3 i0 U- y! P- d* B+ B BluePill 几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!& \) P7 w; m1 W4 H# l 于是我就花了一些时间,在X893包的基础上,做了如下改进: 1. 升级到CMSIS-DAP v2.0最新版。" E7 n' m/ O9 H( N+ y7 { 2. 实现了SWO的主要功能,即printf转发至SWO口。 3. JTAG功能正常。 4. CDC功能,使用串口2(PA2/PA3),已经改进。+ O( D" K @; P 5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。 6. 针对STLINK的廉价硬件,做出了改进版本,稳定。 * O5 M- _9 u2 ^ & G$ f8 w9 G5 s0 c3 ^6 p 5 t4 F" K o5 l | 1 K0 W3 o+ _0 l# q . f/ v) U1 c* W* k 注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。 山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。 即使卖家声称是ST原装的,也不能完全相信。 固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。: _+ R% _8 Y j& a& |7 @, n 使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。- C# d& X2 X/ `3 M% f ' c6 K) K! V/ p ( ` s- ~; ]* |8 C# m |
STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip
下载3.48 MB, 下载次数: 9709
【MCU实战经验】+STM32F103的uCOSII详细移植
游名科技:STM32F103+TMC2160:86步进电机和驱动一体原理图/PCB...
小马哥STM32F103开源小四轴RoboFly全部资料大放送
在高容量 STM32F103xx 微控制器中实现 ADPCM 算法
STM32F103标准库开发---SPI实验---读写 W25Q128 外部 Flash
RT-Thread在STM32F103RC上移植
STM32固件库分享,超全系列整理
【原创】STM32F103的SPI2的配置函数,DMA发送和接收!
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
基于STM32F103做CAN的收发通信经验分享
nRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。( c$ U" \: [; O/ T8 M
你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。
你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。 : `: }2 Q% ], q& X- F- Y, L" V8 r
或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。 U3 `4 v, }2 b$ I% {
CMSIS-DAP.zip
2019-12-7 13:28 上传
点击文件名下载附件
1.6 MB, 下载次数: 150
不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。
我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
JTAG模式没有测试。
F103-DAP-SWO-CDC-BOARD_V1.rar
2018-10-14 02:01 上传
点击文件名下载附件
29.59 KB, 下载次数: 272
点评
你是用的STM32做的DAPLINK吗
通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。
(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)8 i: C* I N- N, D# i' J; J
CDC功能,Win7需要安装一次驱动,文件在源码包里面有。" _9 |. z O2 c
优点:6 \6 \7 O. Q1 `* M/ e% F& Y
1. 对原来程序的时序影响很小。
2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。7 S) Q# F* l- B
3. 不占用串口,却可以方便地使用【printf】功能打印输出。: N0 {) e# H" b+ n* f1 j2 v
4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。/ ^( }9 O5 U! {# m. }# n: F- A
6. 烧录程序,和J-Link/ST-Link一样。
7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。
8. ARM开源的,随便集成到你的开发板上面。( K# a4 Y" q# ?: r
缺点:
1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。% A* ^% Z, Y5 @ i, P% C8 g, {
3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。" m! W; X9 r( N! m6 c
4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。5 O( k. j4 Q2 k$ N4 a/ q
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。 a, K0 r; |! Q# [1 X5 p# D
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?) }8 ]& O) ^- f9 P) D- h
我的板子:
SWD mode: PortNo2 ^# C( Q, N) R; M$ w% V% i
SWDIO PB9( h$ u9 j1 m. P; M0 j
SWCLK PB84 d0 ^" \" v- L: \9 M4 z( D
SWO PB7+ C; G4 r. |, J$ G
nRESET PB6+ G8 V$ i1 Z& Z1 ]+ d1 P
JTAG mode:
JTMS PB9
JTCK PB8
JTDO PB7
nRESET PB61 z# G" p% E& s. Y6 Q. C+ e3 T
JTDI PB5
nTRST not available
CDC Function:
UART2-TX PA2: \$ H3 B! O7 P. T* Y% l
UART2-RX PA3
------------------------------------------/ d7 c& r6 ~; X5 o1 d7 Z2 v
SWD Test passed!
JTAG Test passed!1 [! j. ?$ ~4 n5 u6 T/ m
% @4 j, \( |7 `
Individual test results:3 d" E3 F4 D& S. {% B
Execution breakpoint: passed/ ~8 i- P- i) u' r0 ^2 \$ V
Breakpoint on read: passed4 e' d4 T M% M( d" N8 X w) `
Breakpoint on write: passed
Register read: passed$ \' p& }: m/ Y/ p
Register write: passed2 H8 G2 n7 B: e2 u7 I2 C
Memory read: passed0 @ x+ Z; p. W
Memory write: passed
Control flow: passed7 t4 f# |; v1 A+ r. m
CDC function: OK0 I" q3 S( m- N N {( |
SWO function: OK for printf-to-SWO; ]$ s7 e! Y/ Y0 y- m1 L. D$ t
Soft-Reset function: OK for Cortex-M
-----------------------------------------------------------------------------------
v* n" a3 U2 x, P# Y( c# W: f& k. @
另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。7 i# ~$ B, a5 V T. n3 C
. y, t$ w+ b7 f: c
有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。; J' q! [$ ]- w% c( m9 {
160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。, X& E1 q$ W/ g# w3 @- C" D5 A
1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
(选择SWD_REMAP后缀的)
CMSIS-DAP v2.0 有没有软件复位???
1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。6 A w$ R0 a" w) ]+ [: c, S
, Z: ?$ W r0 b9 [6 ~
DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
- i! b3 P. f6 U _$ t8 A
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
DAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。
* N/ _2 z" } N1 L1 T$ l: y
实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。
我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。2 L/ U9 V0 R* F
DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。$ _* }' D" p3 L) @, }7 S3 K; P9 b% `
8 T! g6 |* o, \4 Z7 d( V
今天测试过一些IC开发板,
1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。
2. LPC824的,正常。
3. nRF51xxx的一款,正常。
重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。2 C# n' p# a! C' i n
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。
如果做成专用的成品小板,留意这一点,就不会有问题。3 y3 f: x& Y4 \1 A M, ]4 k6 S) `
简单的解决方法,
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。
2. 在每一条数据线上面,串联一个47~100欧姆的电阻。
" c4 w; P; X* i3 D3 L
上位机关闭串口或者关闭串口工具,不会出现死机啊?' s! J) M! l- o3 }- |
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。4 G& o+ f: e+ C5 y$ y3 B. b
对了,X大神固件有个串口溢出的BUG。
我可以寄两个我的样品给你看看,不过我没有引出SWO。
谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。: }* j# v' A* e! b( [0 W