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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。+ d7 V/ D" K. J
2018-08-29附件更新,与github相同。0 `; Y  V+ n) Z7 K% D8 V4 D
2019-12-24重要更新,速度提升,功能不变。# D& i1 m4 V: L) I# s# q7 K, H
9 c' {" Y3 F- o3 q$ x
github:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO& A0 _$ h: w; N: S
( ~2 v2 v  L+ U0 d2 @2 R+ {
----------------------------------------------------------------
6 c7 y+ J# b9 v1 k- q( R, ?* |/ z2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。
6 z+ N! V  s/ {5 k9 w6 S6 F2 N7 K3 d. ]
10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。0 R( e; l# ?1 o* l) b4 A0 o% D- l5 Q6 p, r

BluePill

BluePill

- X) O6 F6 M& T几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!$ D4 t0 {# d! l) f" ?& a+ |

+ u" P  ~4 z5 K" {9 i6 n3 r. o) M6 ^' N于是我就花了一些时间,在X893包的基础上,做了如下改进:
3 }) h. ?8 O; o* H3 w, f9 o1. 升级到CMSIS-DAP v2.0最新版。1 C; |' f5 ?. u  t* J* o
2. 实现了SWO的主要功能,即printf转发至SWO口。, s. L5 O' ~/ M) L# U6 O
3. JTAG功能正常。
; I9 T/ ]3 [2 a& R4 t+ A1 j" T4. CDC功能,使用串口2(PA2/PA3),已经改进。4 U- V8 C7 @2 J) B3 ]5 Y
5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。# N6 ?; i4 ~$ a1 }7 i
6. 针对STLINK的廉价硬件,做出了改进版本,稳定。4 |& N; \& w/ z
; r+ T1 ?) k2 X2 m
HW_Connections.jpg * z& u/ `4 ?1 |& X4 s, g9 w' z
/ D- e. o6 X2 F9 [$ q& g3 i
1.SWD_Remapped.jpg
( Q7 C! Z' c! V. |  E4 u4 Y- x9 r1 w7 l- A' p
) t/ j) J" P$ [2 R% Q6 k
STLINK-01.jpg
) E/ J, ?. G% F+ w; w/ u$ y
% n( w% h8 s4 X STLINK-02.jpg 2 h6 `( u, n4 W' j! [! @

1 g5 F0 H: q) J* O! t* P STLINK-03.jpg
' c; k& X* p: i* Y6 `  s/ r% i% }3 v4 U0 p
Schematic(part) STLINK_V2A_V2B.jpg
/ ^+ ]* l2 c) U1 \
7 T" d, H$ n7 z Readme6.jpg ; x2 |  \' w: x3 T, F8 d1 o

: a# h) f( D( K, H6 p2 E' E0 y( _8 o
9 _+ d7 M+ S% Z4 C注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。. p: n0 p, E' A( z
山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。

) L; A+ K7 _, S即使卖家声称是ST原装的,也不能完全相信。( T& r/ d1 V8 p% S

; |! O: Z+ \5 A( W% v/ m固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。6 K' ]# z- k; j, t; G
使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。- D* w1 |( M, ]7 p

* e/ `9 s+ A! a, M( w0 g( O* l5 u! e7 T- A' W/ e& y8 }

5 v) \* n! {% e

STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip

下载

3.48 MB, 下载次数: 9709

评分

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

查看全部评分

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

举报

418个回答
radio2radio 回答时间:2021-1-28 18:01:27
ricklou 发表于 2021-1-27 23:00
( D9 X1 o2 G  v) j, u* o2 r可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...

& a* H8 s0 q/ l3 H( u, enRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。
$ X$ [5 v/ A0 ]+ r. B9 b你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。
$ i  e& V) W+ g& O$ x! G
+ |, o- B: D0 S" v3 U1 C你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。 , K! X/ }* C1 s9 M$ F
或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。1 ]% i% ^6 v; Q2 d6 I8 g# j
, q- b0 n: O" ?( B$ T, g3 X
. H7 W" D# T. c( ^3 Y
happyavr128 回答时间:2020-2-4 17:26:56
楼主大神啊!
kernerl 回答时间:2019-12-7 13:30:15
找到一个可以编译通过的文件,不过好像有个DAP_config.h这个文件的版本不一样。

CMSIS-DAP.zip

下载

1.6 MB, 下载次数: 150

radio2radio 回答时间:2018-10-14 02:01:43
FireHero 发表于 2018-10-9 17:18
" c2 _7 }4 x, l楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载' k+ X& i( W7 s+ P
0 z2 O6 I2 y0 S; m+ k/ n! u0 F
下载到板子上后,USB插 ...

2 K: _+ N) s, C不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。
: p! G0 G! N; m# f7 t
( `6 S, v* y/ R我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。& t- g0 |2 i" E
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
8 o6 @" i% q5 X! b6 s/ \JTAG模式没有测试。
# c/ }: h/ ?. Z$ o; A: @" c! D: a6 Y* ?7 u* ?0 K

F103-DAP-SWO-CDC-BOARD_V1.rar

下载

29.59 KB, 下载次数: 272

点评

谢谢分享  发表于 2019-3-25 00:53
漫步云端-345339 回答时间:2018-8-8 10:58:03
huangxuejia-292 发表于 2018-7-25 15:00
' L- G0 n' ~; o# g4 |' a4 q( a/ \6 a# z改好了,调试能复位。' B# {5 A( [/ o9 V
MSD(U盘拖放)无法复位。。。
# X6 E& _- |: T+ D  T
你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40
. U! [! f. p8 ?5 s/ L& a请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?
1 L) H: G6 N# u8 T1 H  ]& u
通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。
% o( ^* V* f3 I' D7 j' N(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)! @4 O1 B1 F8 d0 A! @0 g

" ?& R1 b( f# i; Y3 SCDC功能,Win7需要安装一次驱动,文件在源码包里面有。# D/ l9 w& W7 t  Y' o
4 n( w+ R3 R. W( |' F% ^
七哥 回答时间: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独有的。
( M' x$ T2 ]; i) V- a! f7 m0 _+ o优点:2 T0 s9 ^+ H6 ~" v' N
1. 对原来程序的时序影响很小。' Q& L0 P! j& S' c. L7 [
2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。
+ Y2 i# ~: z7 z6 h7 ?3. 不占用串口,却可以方便地使用【printf】功能打印输出。
. X6 A) U0 }  b* T( C4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。
7 L3 n- D: b, K0 ?( w5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。
+ _  f+ {7 F. \- @0 a6. 烧录程序,和J-Link/ST-Link一样。8 C0 `9 n6 M( q/ @
7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。
) I0 O8 z0 u' W8. ARM开源的,随便集成到你的开发板上面。0 e* u! a5 A* Y

4 }) y9 G9 ~9 H, A缺点:; B, V0 j: I4 g( A% E/ ^
1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。. s1 v3 c! ?% E
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。
4 ~4 K" }2 O  P' u3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。
( d- T, V7 i! E4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。. a0 d) M3 ?: O
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。3 a  |( G1 ?9 {" R  T  N. R/ ^
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?
+ Q# Z, T! e0 u- r
$ Q' C2 S7 g5 }6 \! q6 U我的板子:$ c3 t$ R3 T7 E0 G& }
SWD mode:                                                        PortNo7 q5 t9 `  ?/ o* R; r7 O' \4 e
                                                SWDIO              PB9; l" Y$ C4 b$ r8 `  s8 b* O2 j
                                                SWCLK              PB8% G# [/ H9 a4 E0 H7 j3 a
                                                SWO                 PB73 B6 u: j% g3 b5 \; m  q8 L4 B# a( O# }
                                                nRESET             PB6
) f" N- m  H# y. \) m; t0 jJTAG mode:
- q" @  c; `9 c/ Z6 ^                                                JTMS                 PB93 q! f8 B" h0 r9 c: }  ]" n
                                                JTCK                  PB8
1 ~9 X9 V# S- e/ O8 Q* M( o                                                JTDO                 PB7
( W' I4 I) T$ B! A                                                nRESET              PB63 \1 u- E/ u  o, D. [4 _
                                                JTDI                   PB5
7 {$ y: i* h3 Z+ e                                                nTRST                not available6 X2 m) h" `) S+ w* L) ~
                                                
; A5 x+ {" \4 \  T6 k# hCDC Function:7 N% T" N2 b7 w
                                                UART2-TX           PA2
3 @" }! m6 A# w                                                UART2-RX           PA31 M$ O/ @6 Q' A; C! H3 H
                                                - r0 T5 D3 ~" d7 t3 \% k7 A+ k: v
------------------------------------------
. ~0 r+ S0 M* pSWD Test passed!
: H; T6 R! k4 P( \JTAG Test passed!
, j% ?) y6 o: S. u% F
9 q2 z$ D" ~/ j) T- [Individual test results:
- O5 q; h' \$ b% }; |; HExecution breakpoint: passed7 r9 G3 `; X; B/ ]& x. W
Breakpoint on read:   passed
+ \7 k2 k6 _) w, `# ~Breakpoint on write:  passed
3 z6 w4 \* u; y* _Register read:        passed( r: f) M" N* U( y+ Q6 G
Register write:       passed4 h+ X6 M! F3 Y" w% E& N; X
Memory read:          passed
$ W8 D' G0 @9 Q- p, \  bMemory write:         passed
- I. g# `5 i, F$ h1 v4 ]% iControl flow:         passed
8 k! N7 _% ~( _# a$ ?6 J& j( E  J3 G9 F
CDC function:            OK
/ F8 a8 g: s, g1 q/ j( p8 s1 e8 lSWO function:           OK for printf-to-SWO
. y: p7 W  N& cSoft-Reset function:   OK for Cortex-M+ s! F8 C. B* |$ l; W
-----------------------------------------------------------------------------------4 ^8 j' v9 g: V% Y8 b. s
3 _# f( T9 l. h( k
另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。
! [# M; ^' l$ |6 m9 M! B; i4 @/ t0 u# _- b% N* c8 ]8 M) K
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑
* l6 y& ^9 d' n6 {  E4 n2 ?0 T$ `' g+ \& F: N: {
有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。; b' b" f6 x* k: k0 F: Y( x
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。
# [) D0 t4 S1 r3 {- s" z8 {' Y160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。9 O* {7 H% K. m* u. z% e6 a: X: |; N

# |5 r- W4 R- \3 ?8 H# u1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
' I9 |) [& K/ p, z$ Y. t  o(选择SWD_REMAP后缀的)# X6 P( s& V2 |  j7 S$ s
1.SWD_Remapped.jpg
% s3 z; q3 p; ^2 k
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
) U! h; Q, T4 j! s; l( E( |CMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑 " A: w* [& L4 K* e( B
gzbkey 发表于 2018-6-1 17:38; m6 C# W+ s+ u( {8 Y
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别" h' O# p. x8 X8 z- \$ L, ?
CMSIS-DAP  ...
: B6 M( \( ~1 t7 i
1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。
6 `& Z0 h9 a6 d
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,网络上已经有人移植,但是好像没有放出来。
/ l# X; h5 ~3 D. E9 R
0 h# b/ B. Q" P+ E1 qDAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。: `4 S6 ]8 ~& E0 ^

* z! p1 n& Q$ h8 Z& a. i我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
0 G2 P8 W" N7 j" @1 s0 u$ W" P
2 J1 E! X9 L. A. EDAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。* M, W! ?4 q6 }# g$ s9 `

) F- g: r, T. e+ I" o, B; `" g9 B实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。% J: l! A1 r, S4 ?6 g& l4 p
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑 : |" r6 n! t0 C7 q) i5 ]
huangxuejia-292 发表于 2018-6-3 12:44
3 _2 z. Y5 i0 V1 x  W% [官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...

, y) }* p: o  b6 S6 _我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。
4 |* r4 M* H  A) b$ J  pDAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。
6 I  e3 i0 d( W
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑 - `+ S( T: D' B" x, _8 e+ e8 w, f
1 A' B+ K/ V& C1 d  J. z9 Z
今天测试过一些IC开发板,
2 y, g6 k! `* x$ v6 w) ?& d2 G6 t; P9 e( d. q- E3 P1 ]1 r
1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。
3 O  X' z2 Y! v$ R0 v- b  }3 U2. LPC824的,正常。- [$ ~+ g4 F  ^5 m
3. nRF51xxx的一款,正常。- ?/ y& w# F. G7 d" _1 \- F9 D
# n9 @+ _! k! }/ x3 f
重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。8 M# i. m* n1 D- P/ ?' v, P
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。8 |! V3 ]! d: p( t; y5 g; k$ a! T* Z
如果做成专用的成品小板,留意这一点,就不会有问题。- Q& X0 _4 C6 O

  O. u$ p2 u' D简单的解决方法,
/ a' h; g6 K& |$ d/ S- u1 {2 i4 l1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。- h+ E! m5 V5 {8 [- y# M
2. 在每一条数据线上面,串联一个47~100欧姆的电阻。4 w" t0 C- l) R+ B7 \, k

7 r+ G* Y% M, ^5 N, J! R+ U) R% C" w) ]6 ?2 e
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。% E$ B/ `8 @8 }. K6 C
上位机关闭串口或者关闭串口工具,不会出现死机啊?. p$ g6 b/ t; G7 L
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。
/ ]+ y* @. G' Y5 n( p对了,X大神固件有个串口溢出的BUG。  N) {% a. [$ Y( l" K
我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:39, f, t' J: j3 O. [1 d* t( k1 i
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。1 {  f' I* x0 ^$ E/ n
上位机关闭串口或者关闭串口工具,不会出现死机啊 ...
, R  R9 A( ^# A- i, O
谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。4 N, ~6 _- [# }5 B0 C4 e

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版