
2018-06-30重要更新,附件换成了源代码。) x( `4 `& P6 d 2018-08-29附件更新,与github相同。 2019-12-24重要更新,速度提升,功能不变。' |% C- k4 g7 @8 M, P github:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO( J: O( o5 ?! _2 O- v: _5 E" X 7 K% s- C! b( I7 U ----------------------------------------------------------------0 k" [1 [6 k5 T. y8 R6 Q 2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。 10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。" J" T6 k* w7 ~' i, j$ K& x0 `, L BluePill ![]() 几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!! 于是我就花了一些时间,在X893包的基础上,做了如下改进:' ^3 Z+ ]+ {) S5 d) L 1. 升级到CMSIS-DAP v2.0最新版。 2. 实现了SWO的主要功能,即printf转发至SWO口。4 ^# P+ ?& W6 B' A) ] 3. JTAG功能正常。 4. CDC功能,使用串口2(PA2/PA3),已经改进。 5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。 6. 针对STLINK的廉价硬件,做出了改进版本,稳定。6 m/ m3 m4 \2 h# `4 L& [( _" L ; A& @# H4 P5 A8 Z0 F7 t ![]() ![]() ![]() , v2 }# |9 | X2 m ![]() ![]() ![]() ![]() : A( [% ]$ R: R! N+ V! ] 注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。 山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。 即使卖家声称是ST原装的,也不能完全相信。 固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。 使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。5 s1 h: m1 i3 @8 @% I0 v- e & e* y" T4 A5 n; H& M. [1 s |
STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip
下载3.48 MB, 下载次数: 9720
nRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。
你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。4 ~. b j1 s+ s
7 N7 H+ p0 H% Z$ }" W" k
你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。 - C" Z% b5 f' l8 x& u" G7 n2 M
或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。2 S! B# O; ^6 p) Q: A B. K
7 ~- q- X3 r" H c6 l5 j. S" |8 Y' `
1 Y" m$ {. y* a2 p0 Z
CMSIS-DAP.zip
2019-12-7 13:28 上传
点击文件名下载附件
1.6 MB, 下载次数: 152
不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。/ c: V& I; S( R3 B) V* L+ V
! `& @6 l) _5 b. n
我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
JTAG模式没有测试。; d. F b$ y9 r
F103-DAP-SWO-CDC-BOARD_V1.rar
2018-10-14 02:01 上传
点击文件名下载附件
29.59 KB, 下载次数: 277
点评
你是用的STM32做的DAPLINK吗
通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。( J( z6 x5 U1 D' Q
(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)/ k8 @: e" t9 h3 i4 y2 A
CDC功能,Win7需要安装一次驱动,文件在源码包里面有。
优点:) ?: c3 K( S: r. d( O4 R( D
1. 对原来程序的时序影响很小。
2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。6 m# ^* u! D! S: G! y
3. 不占用串口,却可以方便地使用【printf】功能打印输出。
4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。; g0 ` @1 F. o m
6. 烧录程序,和J-Link/ST-Link一样。0 Y6 U) ?# X/ L/ v3 f) k/ T* S' h
7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。
8. ARM开源的,随便集成到你的开发板上面。1 x& y7 G# |. v- b5 c& |
缺点:
1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。- C. @: m/ @# B# |7 `" |
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。# D& X s, f3 w; t% a
3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。
4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。$ S$ S2 U' h2 _
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。! n/ z6 V7 {" y+ B, |/ G" [ \
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖? k0 A: N( _: c! w: }- }
* J+ T* j' u$ _2 t* q) C
我的板子:
SWD mode: PortNo0 g! k3 q/ i0 f" c' L
SWDIO PB9
SWCLK PB8! d- X* y7 Y$ c2 N% I: e0 d
SWO PB7
nRESET PB61 N/ @) ^6 D; w
JTAG mode:
JTMS PB9
JTCK PB8 _$ {' C5 j! |& C! T
JTDO PB7
nRESET PB6
JTDI PB5& A0 l+ d& o+ v& _
nTRST not available
CDC Function:
UART2-TX PA2' m5 o. X4 z) W l z- {4 e; }: J% A
UART2-RX PA3" ^7 Z3 r8 ^% Q: ~
/ K+ b0 v) F% `- x, b; s
------------------------------------------4 F6 ?. [& G# K3 o
SWD Test passed!0 N& H8 U. u9 ]- P: q9 F( |
JTAG Test passed!
5 L0 g, E7 Z3 [' _$ v0 `/ [
Individual test results:' O2 p9 L2 z: J1 i1 i3 G4 y6 v$ w
Execution breakpoint: passed
Breakpoint on read: passed
Breakpoint on write: passed
Register read: passed. t; V8 Z* D {
Register write: passed5 w' k) J4 I' ]5 K9 |5 Z
Memory read: passed9 I9 r: k4 V9 o* C
Memory write: passed
Control flow: passed- Y0 x4 ]8 t O: \ }
1 [ h9 \; x4 P+ m" E
CDC function: OK" H( S. G: W7 t; c4 @! b' _4 ~
SWO function: OK for printf-to-SWO6 S5 W" g. x) ]. I% A9 e& o! S4 I
Soft-Reset function: OK for Cortex-M( p4 ?. P0 U) t4 [/ c
-----------------------------------------------------------------------------------9 w. `/ w5 i- _) c! s
& [+ S/ K' I2 R5 O' h
另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。
/ f1 `& R* f! E! P
有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。& S% |) h9 T1 D
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。# p/ W, }( {, ?5 P
160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。' l2 ]' w3 q7 ~6 l+ y0 c0 r! ]
1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
(选择SWD_REMAP后缀的)7 f3 m# {4 M! I* H2 j3 Y
CMSIS-DAP v2.0 有没有软件复位???
1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。5 `" X9 s6 L6 p) t% [! ^
DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
5 @3 e" {3 W* g+ {' Q
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
$ ~: n! X0 {' a, s- A
DAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。5 i( N! M" x/ h e4 i
0 ?+ l1 s/ w9 c E5 z
实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。1 Z3 w5 N" |- b# ^
我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。
DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。# Z3 g: y- w% N' ]
今天测试过一些IC开发板,
& ?1 f+ O, m e( s$ o9 _
1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。1 O9 @2 h4 R) R
2. LPC824的,正常。
3. nRF51xxx的一款,正常。
4 u; N" Q6 t* t
重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。) m- P$ H/ x; q
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。: J: q4 @) x2 h3 e4 z! N# k
如果做成专用的成品小板,留意这一点,就不会有问题。. M0 @' S4 G5 z2 S! U' v3 f/ z
; e+ [ c; p3 t( F
简单的解决方法,+ q; `6 }6 T6 g! v# C8 R
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。. J9 F9 s3 t3 ~$ H, X* h
2. 在每一条数据线上面,串联一个47~100欧姆的电阻。( z, T+ O O, I2 r& l V
" L2 G7 k. @2 U" C* w
0 c' C( ], V5 o3 c; F
上位机关闭串口或者关闭串口工具,不会出现死机啊?
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。8 T! v- ]3 f# u: \8 N+ t
对了,X大神固件有个串口溢出的BUG。
我可以寄两个我的样品给你看看,不过我没有引出SWO。
谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。