请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【源代码】STM32F103C8T6最小板搞定CMSIS-DAP和SWO功能  

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
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
: n. u* B1 }& ~9 D8 ]: s+ Y5 B( ~: Z; B1 j/ h. ?
----------------------------------------------------------------: S/ H; O# \7 U6 X
2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。
# w4 g7 I. G( ?6 x
# ?, B! x- }2 k! W10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。1 v7 N# w+ W8 J1 k$ c

BluePill

BluePill

3 e! l! Y5 r1 p, l6 a: m, T( y: x- u几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!
( u" _4 o' O) j1 j! ^! m
; q3 w  p% H2 v- |* k$ H于是我就花了一些时间,在X893包的基础上,做了如下改进:
3 _( @5 D2 n) \* p1. 升级到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功能正常。
% ?* [. G& L/ f5 V) Q$ e4. 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
HW_Connections.jpg ) w) P9 e0 L9 t# E7 S. K) W3 q$ V+ l
6 M3 ]: e9 y# |
1.SWD_Remapped.jpg
) H. p$ K& Q6 v  L( Q5 f+ Z' Z  Q5 Z" P8 d# O: f
" }; o9 ]7 q6 G* f5 v& @! J' A
STLINK-01.jpg
( U$ P) z8 A" I7 u: A
4 G, E! F6 a5 d% y# j STLINK-02.jpg
' ~7 e+ Y) e2 t# Z- V7 U2 c  Q: _+ S8 x0 _  u
STLINK-03.jpg 9 j" i) D0 {$ W" V+ t# \# M

9 C/ w: \, M) y; S Schematic(part) STLINK_V2A_V2B.jpg
) }# Z6 g% q6 e. T8 S$ M  l2 W$ q" S% _+ Q& ]3 j! m& Y& Y
Readme6.jpg
! j/ @# K' G1 i0 v% e$ I; G( 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冒充原装,无法分辨。

, y3 V, e) d7 X5 v7 j* q即使卖家声称是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

评分

参与人数 7 ST金币 +40 收起 理由
迟到的梦想 + 1 很给力!
xiaoshen-372360 + 10
toofree + 10 很给力!
我的人生我迷茫 + 1 赞一个!
玉宇swh + 2 赞一个!
wofei1314 + 8 赞一个!
子曰好人 + 8 很给力!

查看全部评分

1 收藏 45 评论417 发布时间:2018-5-31 15:47

举报

417个回答
radio2radio 回答时间:2021-1-28 18:01:27
ricklou 发表于 2021-1-27 23:00
, l3 l; i0 I) C  S/ Q- r可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...
# }- _$ R9 d) I
nRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。
2 v: W* Q& K  I. M# h你要的功能应该不是一定需要走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

. Q, H! s$ q8 i3 `
happyavr128 回答时间:2020-2-4 17:26:56
楼主大神啊!
kernerl 回答时间:2019-12-7 13:30:15
找到一个可以编译通过的文件,不过好像有个DAP_config.h这个文件的版本不一样。

CMSIS-DAP.zip

下载

1.6 MB, 下载次数: 128

radio2radio 回答时间:2018-10-14 02:01:43
FireHero 发表于 2018-10-9 17:18% ]- I+ S' M" n* m7 u7 {# h2 p
楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载$ d5 N, }6 P, Q. y
3 l% Z! W& U$ v" D. T3 Q
下载到板子上后,USB插 ...

  T, X& [  u0 J  f# V: N6 h不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。% {& y- ?  B0 Z

/ A! @3 l# r9 Y9 y0 V( j我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。2 p) A9 H6 t4 \9 Z8 }6 H! O7 s% G
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
3 \; J& A7 ~9 r- Y- n; ]4 Q" MJTAG模式没有测试。" G$ D" _9 m; w& h& z
. H; s0 j: F0 K4 u

F103-DAP-SWO-CDC-BOARD_V1.rar

下载

29.59 KB, 下载次数: 256

点评

谢谢分享  发表于 2019-3-25 00:53
漫步云端-345339 回答时间:2018-8-8 10:58:03
huangxuejia-292 发表于 2018-7-25 15:00( c: ]1 w8 c: f2 I* {1 z
改好了,调试能复位。
. H% j7 Y7 |6 K  X$ ZMSD(U盘拖放)无法复位。。。

% S2 L3 `& ^: Y你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40
, N2 U5 Q* f- i请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?
' f9 }/ m0 c% L# t- y# l6 x& V
通常不需要专门的驱动程序,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
七哥 回答时间:2018-5-31 18:06:32
强力支持,楼主厉害
yangjiaxu 回答时间:2018-5-31 20:01:24
有点儿意思啊 支持楼主
radio2radio 回答时间:2018-5-31 22:18:42
使用SWD-SWO调试程序,是Cortex-M3/M4等高级ARM芯片特有的内核CoreSight独有的。
6 S+ n' ]$ j" q* l优点:
) ~- M6 [! b* C- W  Y) \( Q" R" Q1. 对原来程序的时序影响很小。0 h+ ~. y7 O0 d# d( a/ Z) n
2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。
" U, E2 T3 d0 I0 y3. 不占用串口,却可以方便地使用【printf】功能打印输出。
( [. [  n: _2 L; [4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。
) v& B' P% _6 Y5. 其他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$ ^

6 L3 e2 j$ _4 L8 u- l1 [2 Q& w缺点:0 M! Q' b3 V# m
1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。
9 R3 Z( R5 t+ o5 I$ x5 j4 c" Z" p2. 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有限制。
$ {7 k2 e, E6 i% M5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。
* h' V  B1 S# }9 V* [+ C6. 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
/ ?- g/ w- S0 a                                                JTCK                  PB8
* j! H. z  F, [% }, D2 O4 ?) {                                                JTDO                 PB7
( T/ A+ e* o$ k) r5 R4 P                                                nRESET              PB6
! _1 W+ M0 l' p  S2 B. C3 X                                                JTDI                   PB51 w! }. r! l+ ^* W1 h. F# z3 ?: M. V
                                                nTRST                not available
* b$ H9 z% |5 U: e, ~1 k+ O! S                                                ( 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
. q# e0 F+ a+ t$ m& j( l- ARegister read:        passed
/ a) J( F! p) a; j6 f% U! d- C& O8 ORegister write:       passed
( P. K/ G$ ?. _0 A9 i; ^7 [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
8 J; {* C, C0 N: F( `3 cSWO function:           OK for printf-to-SWO, c% F7 r6 Y% R% A
Soft-Reset function:   OK for Cortex-M
# P' m" w/ ]# Y! @, t( y-----------------------------------------------------------------------------------
  U1 F' D/ G% ~2 {; i3 S6 O2 m+ P
  `2 ^4 H  ]$ _  U0 g3 Z另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。, j$ k' h5 D" [2 z# f3 C- L
6 u6 e  n! N3 j+ G( J! u/ f" M
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑 7 z6 v7 |* O( m, i, n3 k7 N
$ 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好。
/ z! k# K- Z5 U: ^160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。! Z/ o, N. w  t/ ^% v: x, f

1 \9 }# I5 D: n0 \! H1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
6 u- Y( G0 A; U& R5 O(选择SWD_REMAP后缀的)
# i* l) s8 X2 Y6 g) F3 p 1.SWD_Remapped.jpg 7 w7 j( u$ l% ?' H# |' ]0 x
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
. L7 Z6 a; S# R; a& lCMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑
# B$ A2 t1 Y! r' h) g
gzbkey 发表于 2018-6-1 17:38' ]# k: k+ N) \' o( L4 g
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别% P) H8 [) M& M+ [; A1 q
CMSIS-DAP  ...
( S; G2 ]; i1 O" Q5 }- t# i
1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。5 b  E$ G7 }" j- A2 H$ E
suncl110 回答时间:2018-6-3 08:54:11
楼主,这个只是HEX吧?有源程序,仰慕一下吗?
zwei99999999 回答时间:2018-6-3 10:08:35
wujique 回答时间:2018-6-3 12:18:09
百度或者淘宝反客科技,他们做的DAP,修改了固件,带软件复位,但是他说肯能只是针对特定内核,因为不同的内核软复位指令可能不一样。
wujique 回答时间:2018-6-3 12:44:55
官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放出来。
' X5 i; M$ m+ n, [: c+ R' l
7 {7 I! F$ q4 o# t" X1 nDAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
& K# O/ _7 F+ D8 f) k- @* z7 H* W. j/ Y. U2 y  c9 u
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。, M: E- m% b3 O$ H; q- }) r

0 ~6 H* w8 ~1 ?0 ^1 V. s* xDAP现在一个比较大的问题就是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  ]
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑
: h1 ~3 O' j; E
huangxuejia-292 发表于 2018-6-3 12:44
! E9 `& S4 \$ ^& K9 L; U2 K官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...

) N$ r9 Z) P9 x( ?" P我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。
6 n+ v* R  h) kDAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。' {, t5 S  D* o2 H
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑 , q/ ], z. g: M0 \0 Z

& ?, j# j8 U) ?& q- D/ A  H9 w今天测试过一些IC开发板,1 j* E( @# B& [/ n. v3 J- _

' T( Y1 I% a$ h7 u/ V0 d9 b, }1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。% z$ a0 u+ ]/ p& C, x5 ?6 O
2. LPC824的,正常。
! a9 {! E/ m1 B# |3. nRF51xxx的一款,正常。
! @8 s( r5 |: p- j1 d* D+ X/ y  c' Y5 y5 g# B# U* Z; |
重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。
* J; m9 _& A. t  ~建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。7 `! g$ w) e& G7 n. y7 \# ~
如果做成专用的成品小板,留意这一点,就不会有问题。
' \' g* l6 r' [, U, o3 h7 y& W$ x
简单的解决方法,  x- g* s  K2 U
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。
+ O+ b: C; Y) W! a! d; v( ]2. 在每一条数据线上面,串联一个47~100欧姆的电阻。
, e) `+ u+ Q- W, M+ u9 Z& m3 \1 Y- z0 i2 W# _* N

: s4 a0 G: {6 H# X
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。( i9 \# z5 L; v9 _
上位机关闭串口或者关闭串口工具,不会出现死机啊?' k" P: H/ v! H% \9 {! ]2 _
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。
+ z+ M, {/ B) \) f+ t3 n对了,X大神固件有个串口溢出的BUG。
- J% G/ z& D+ W我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:39
4 A/ H* y: r, Q4 Z5 y  C4 {我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
/ \$ o/ Z( g7 E' l* q上位机关闭串口或者关闭串口工具,不会出现死机啊 ...

7 ?+ T! E+ ]! j2 V3 S谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。& r3 N5 A; d2 r/ F: C$ b/ S: f
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版