2018-06-30重要更新,附件换成了源代码。. E. `+ D9 M0 A) Y 2018-08-29附件更新,与github相同。" P6 c* d( V1 C( o8 W- S+ V 2019-12-24重要更新,速度提升,功能不变。3 m: x# V( D; V) t H5 g6 ? M& j# `! E8 F+ V' a github:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO 8 ]: s+ Y5 B( ~: Z; B1 j/ h. ? ----------------------------------------------------------------: S/ H; O# \7 U6 X 2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。 10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。1 v7 N# w+ W8 J1 k$ c BluePill 几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!! 于是我就花了一些时间,在X893包的基础上,做了如下改进: 1. 升级到CMSIS-DAP v2.0最新版。6 D" O, b# w9 o% J) U x 2. 实现了SWO的主要功能,即printf转发至SWO口。5 |2 l7 P r- u) o* \: F5 o) K& O8 | 3. JTAG功能正常。 4. CDC功能,使用串口2(PA2/PA3),已经改进。# D% r6 X% C) J4 K; y 5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。2 m) w" ]& N) L, U: g Z5 f: J9 ? 6. 针对STLINK的廉价硬件,做出了改进版本,稳定。) V- C* z& m& H( n/ x( E/ K * b" T8 Z5 a( S% t+ q 6 M3 ]: e9 y# | + Z' Z Q5 Z" P8 d# O: f " }; o9 ]7 q6 G* f5 v& @! J' A : _+ S8 x0 _ u $ q" S% _+ Q& ]3 j! m& Y& Y ( U: r- `0 x- ~/ R& } / ~: [ v( b6 v/ Q9 V/ X; Q+ p5 ~8 Q 注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。9 \! `8 N; h& k 山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。 即使卖家声称是ST原装的,也不能完全相信。3 J O) t9 \- `# A2 E/ a4 o' Q+ L 3 P- G5 `' |5 z5 @% E S) A 固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。$ A0 \ \/ T4 E# M# | 使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。/ v7 _6 S" o: }+ N) Q ; o4 d O6 g! s5 N$ F( W , ?2 Q' ~% ?5 n ' U9 o) m7 c- ~( ? |
STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip
下载3.48 MB, 下载次数: 9656
小马哥STM32F103开源小四轴RoboFly全部资料大放送
STM32固件库分享,超全系列整理
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32F107VCT6官方原理图和PCB
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
基于STM32F10xx存储器和系统架构经验分享
基于STM32F1的CAN通信之BH1750
基于STM32F1的CAN通信之OLED
基于STM32F1的CAN通信之之串口IAP
nRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。
你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。 L7 o' t- Y( M! B
+ @$ H$ j B+ A* Z1 ]
你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。 . e/ k* }! C% E% U4 g
或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。2 o+ F9 L% }% S, @$ A4 h
' X0 {# r1 E. `0 W+ c! s
CMSIS-DAP.zip
2019-12-7 13:28 上传
点击文件名下载附件
1.6 MB, 下载次数: 128
不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。% {& y- ? B0 Z
我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。2 p) A9 H6 t4 \9 Z8 }6 H! O7 s% G
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
JTAG模式没有测试。" G$ D" _9 m; w& h& z
. H; s0 j: F0 K4 u
F103-DAP-SWO-CDC-BOARD_V1.rar
2018-10-14 02:01 上传
点击文件名下载附件
29.59 KB, 下载次数: 256
点评
你是用的STM32做的DAPLINK吗
通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。. t) c' K$ B8 `& n5 r/ M7 i9 ]* {( I
(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)+ d" G' X) _* m3 e/ n
2 [! c+ h% }9 [; @' d2 N5 k
CDC功能,Win7需要安装一次驱动,文件在源码包里面有。2 s' ^8 J ~) i4 z' H2 C% t" G
. y' @6 z1 M l9 \+ E& B
优点:
1. 对原来程序的时序影响很小。0 h+ ~. y7 O0 d# d( a/ Z) n
2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。
3. 不占用串口,却可以方便地使用【printf】功能打印输出。
4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。- c, Z8 j0 Z2 k, p O: @) g, u
6. 烧录程序,和J-Link/ST-Link一样。4 }/ X! i1 s. e. K. z* i9 k9 t$ E( d
7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。& v, J3 t* \1 N" z
8. ARM开源的,随便集成到你的开发板上面。1 k) R" B/ R* g$ ^
缺点:0 M! Q' b3 V# m
1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。) Z2 h3 l- X" c* O3 d2 e
3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。 u* n5 J. ^' R8 I$ X# z
4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?3 {! Y" v8 n# G* H4 R1 P/ }( H
9 S5 ]/ g" B9 t! f
我的板子:" @; l& H' s8 x3 o* d
SWD mode: PortNo/ p0 K8 t" |. T4 [$ s) J
SWDIO PB9, U2 h( q: e0 i+ u& g( y2 [
SWCLK PB8$ B0 p( u- h- |2 V! F! C
SWO PB72 M* t1 R" D2 y( R( N4 K
nRESET PB6" [ u& n. M* Z/ @
JTAG mode:8 O7 i7 n2 N4 }& Y: s7 P; m
JTMS PB9
JTCK PB8
JTDO PB7
nRESET PB6
JTDI PB51 w! }. r! l+ ^* W1 h. F# z3 ?: M. V
nTRST not available
( s! E1 {0 R% S# \3 g- b
CDC Function:9 w: B/ p+ K/ _2 _
UART2-TX PA2! A# H. n( \2 K4 z- s6 {6 y/ X
UART2-RX PA3$ ~7 ~! m2 E! w' r
R! o1 ]2 X& }* p3 Y" u u5 O
------------------------------------------/ e& t* E4 m4 K
SWD Test passed!6 W5 } l8 Q) r) v9 w6 |
JTAG Test passed!, _. g& X h. R& D; ]0 f P
4 _8 q6 Y; N5 D9 f8 q
Individual test results:$ B8 p9 L) P3 o, y6 W% ^7 J
Execution breakpoint: passed8 X% Y) k8 U4 {
Breakpoint on read: passed# w0 h+ \6 X# F( H9 E
Breakpoint on write: passed
Register read: passed
Register write: passed
Memory read: passed8 `9 M" n7 G i5 t5 K
Memory write: passed) o6 \! b' e) @9 q3 Y
Control flow: passed' k) o3 i/ p% q4 K/ e+ y
( E+ [- b: `$ K8 r- A
CDC function: OK
SWO function: OK for printf-to-SWO, c% F7 r6 Y% R% A
Soft-Reset function: OK for Cortex-M
-----------------------------------------------------------------------------------
另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。, j$ k' h5 D" [2 z# f3 C- L
6 u6 e n! N3 j+ G( J! u/ f" M
$ b0 c; y+ c- v# s1 q
有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。* h+ Q. T) H% K4 D9 s/ `5 l7 e
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。
160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。! Z/ o, N. w t/ ^% v: x, f
1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
(选择SWD_REMAP后缀的)
CMSIS-DAP v2.0 有没有软件复位???
1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。5 b E$ G7 }" j- A2 H$ E
DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
* W. j/ Y. U2 y c9 u
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。, M: E- m% b3 O$ H; q- }) r
DAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。6 a% g/ F6 S$ A* w/ ?" t
% O; h/ [1 F5 U2 R1 r
实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。6 n5 [' ?" T) b( T8 y" K ]
我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。
DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。' {, t5 S D* o2 H
今天测试过一些IC开发板,1 j* E( @# B& [/ n. v3 J- _
1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。% z$ a0 u+ ]/ p& C, x5 ?6 O
2. LPC824的,正常。
3. nRF51xxx的一款,正常。
/ y c' Y5 y5 g# B# U* Z; |
重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。7 `! g$ w) e& G7 n. y7 \# ~
如果做成专用的成品小板,留意这一点,就不会有问题。
, o3 h7 y& W$ x
简单的解决方法, x- g* s K2 U
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。
2. 在每一条数据线上面,串联一个47~100欧姆的电阻。
& m3 \1 Y- z0 i2 W# _* N
上位机关闭串口或者关闭串口工具,不会出现死机啊?' k" P: H/ v! H% \9 {! ]2 _
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。
对了,X大神固件有个串口溢出的BUG。
我可以寄两个我的样品给你看看,不过我没有引出SWO。
谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。& r3 N5 A; d2 r/ F: C$ b/ S: f