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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。) x( `4 `& P6 d
2018-08-29附件更新,与github相同。
4 j* @+ l4 L" a/ \, o" z/ F+ ]# _2019-12-24重要更新,速度提升,功能不变。' |% C- k4 g7 @8 M, P

+ ]9 m) B4 n  v( ]' F5 G# jgithub: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也能马上自动开始运行。
5 s7 o# z4 z  z# X1 r4 @
% L8 Y! I) ]1 I6 D; K- f' u10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。" J" T6 k* w7 ~' i, j$ K& x0 `, L

BluePill

BluePill
' s* y/ Z, b4 r4 ?" U
几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!
4 R/ W. I1 |5 r
0 l% T! U1 m. X, M5 h" ~于是我就花了一些时间,在X893包的基础上,做了如下改进:' ^3 Z+ ]+ {) S5 d) L
1. 升级到CMSIS-DAP v2.0最新版。
/ R8 T! g: h& d4 x* o2 \3 n! c2. 实现了SWO的主要功能,即printf转发至SWO口。4 ^# P+ ?& W6 B' A) ]
3. JTAG功能正常。
1 W1 A: _# [0 z) S4 A: h$ C4. CDC功能,使用串口2(PA2/PA3),已经改进。
; W9 D0 h3 {. P  k& s$ J5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。
" ^9 ?0 r" E. h6 G' D& P6. 针对STLINK的廉价硬件,做出了改进版本,稳定。6 m/ m3 m4 \2 h# `4 L& [( _" L
; A& @# H4 P5 A8 Z0 F7 t
HW_Connections.jpg
! k; |% K0 |; \7 J1 q9 I
1 s! k8 Y2 E( d1 `  c4 j# V 1.SWD_Remapped.jpg ' {8 }' X0 Q) f: N% E

5 Y# U4 V. e3 J6 P
1 U( J6 j0 C/ k4 { STLINK-01.jpg
6 T) a7 s$ I- d1 [, v2 }# |9 |  X2 m
STLINK-02.jpg
8 t. Z" Y, G+ o
! [' s3 y: b; K1 m7 L5 \( h; g STLINK-03.jpg / B" ?2 Y$ J/ t: c0 d

6 d0 ]* k  v* t. n Schematic(part) STLINK_V2A_V2B.jpg
: J. R: x( O/ [: l
8 S9 J+ }% z5 g1 b* ]. ^, x0 z Readme6.jpg
+ r& I# p5 B1 {
* t) z* s8 R2 i/ e3 v2 t: A( [% ]$ R: R! N+ V! ]
注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。
% F% d9 d  n; i  q山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。

; a3 Y- u( [4 T9 g5 M; O, d即使卖家声称是ST原装的,也不能完全相信。
4 V; J2 {+ M4 p) C$ E  v- V
4 C1 w% d5 R/ N" F2 I固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。
$ W9 {; N9 F" ?8 k9 c使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。5 s1 h: m1 i3 @8 @% I0 v- e

1 {. U( Y$ R5 u, ?
+ V& e4 v: e# m2 G: ?, _& e* y" T4 A5 n; H& M. [1 s

STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip

下载

3.48 MB, 下载次数: 9720

评分

参与人数 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* \( D0 k7 {) }* K" {  V
可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...

$ r! h7 t" a( t* \* d. }nRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。
* _3 |3 A2 \0 i你要的功能应该不是一定需要走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
happyavr128 回答时间:2020-2-4 17:26:56
楼主大神啊!
kernerl 回答时间:2019-12-7 13:30:15
找到一个可以编译通过的文件,不过好像有个DAP_config.h这个文件的版本不一样。

CMSIS-DAP.zip

下载

1.6 MB, 下载次数: 152

radio2radio 回答时间:2018-10-14 02:01:43
FireHero 发表于 2018-10-9 17:18
5 q$ K% H! g: A  r$ O3 e楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载
1 ^- ^$ x5 J# ?3 L( k. w( t9 y& p% S  K3 r9 e2 M4 S4 I
下载到板子上后,USB插 ...

2 ~& U" b4 l2 o0 x% P不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。/ c: V& I; S( R3 B) V* L+ V
! `& @6 l) _5 b. n
我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。
, q0 P6 I. M% M5 {# _" O3 p附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
9 t- g$ x' Z" B8 B; NJTAG模式没有测试。; d. F  b$ y9 r

) R' N7 S. n9 R

F103-DAP-SWO-CDC-BOARD_V1.rar

下载

29.59 KB, 下载次数: 277

点评

谢谢分享  发表于 2019-3-25 00:53
漫步云端-345339 回答时间:2018-8-8 10:58:03
huangxuejia-292 发表于 2018-7-25 15:00- _! D3 ]0 a+ m$ ?, A
改好了,调试能复位。7 z/ T, _" b7 U, ?: U- i' Y
MSD(U盘拖放)无法复位。。。
" R  i% r1 C! j
你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40! y+ b6 I% j7 I* s9 T
请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?

/ q& m4 K7 N) X) w  v" T2 b通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。( J( z6 x5 U1 D' Q
(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)/ k8 @: e" t9 h3 i4 y2 A

) g: T) ^' V' G# c8 w1 V5 r4 yCDC功能,Win7需要安装一次驱动,文件在源码包里面有。
% y& d# a- g: A4 h+ l" B
4 k$ h) l4 l( w0 p' \' d5 l/ z
七哥 回答时间: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. g/ _5 ^: Q4 n- O
优点:) ?: c3 K( S: r. d( O4 R( D
1. 对原来程序的时序影响很小。
4 [# m7 {. K- U2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。6 m# ^* u! D! S: G! y
3. 不占用串口,却可以方便地使用【printf】功能打印输出。
, Q' `9 Z' M# J4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。
, A7 _5 b7 p2 A* E5. 其他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元。
" @( a8 P3 P; h; v8. ARM开源的,随便集成到你的开发板上面。1 x& y7 G# |. v- b5 c& |

# L# Q) l. p# ?, Q/ |. U' B- W缺点:
2 ?% v4 [$ e! t3 p7 Z. f1. 速度比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功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。
) T) K; r# ?9 e% Y9 |% K" w4. 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
我的板子:
8 h  d0 m6 W/ Q. f. ZSWD mode:                                                        PortNo0 g! k3 q/ i0 f" c' L
                                                SWDIO              PB9
4 ]* y( C" Y! }9 i5 L4 E9 _                                                SWCLK              PB8! d- X* y7 Y$ c2 N% I: e0 d
                                                SWO                 PB7
- P6 _) Z  p. \0 w                                                nRESET             PB61 N/ @) ^6 D; w
JTAG mode:
6 X# s4 @& c8 t6 U                                                JTMS                 PB9
- P" ?5 b8 d$ K                                                JTCK                  PB8  _$ {' C5 j! |& C! T
                                                JTDO                 PB7
$ h- f- _" U! S8 T4 [                                                nRESET              PB6
6 d! ?) J1 w6 F                                                JTDI                   PB5& A0 l+ d& o+ v& _
                                                nTRST                not available
0 Z  ?/ f% |: C0 r( H                                                
3 @/ J; {" e  M6 q9 v! i1 n1 U0 [9 F9 SCDC Function:
& r2 T1 B' }/ J  b; J: g                                                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!
, W$ r) D& U! d( e' ~2 z* X5 L0 g, E7 Z3 [' _$ v0 `/ [
Individual test results:' O2 p9 L2 z: J1 i1 i3 G4 y6 v$ w
Execution breakpoint: passed
& k7 B. \! f8 l; H4 q+ W* gBreakpoint on read:   passed
* |9 B, h) A4 k4 ?5 J/ L* BBreakpoint on write:  passed
- x% @  \: Z7 l+ }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
! H7 ]! f. g" n* YControl 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楼附件包里面的驱动程序。
% J" ~( p9 U) v* M6 W& o
' J  C. W/ G* \$ a0 ]7 S
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑
0 `4 b( D' `+ v' f/ 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! ]

: O7 s, a; z9 z2 ]1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
: v, Z! v: s* R8 `' j# K/ Q(选择SWD_REMAP后缀的)7 f3 m# {4 M! I* H2 j3 Y
1.SWD_Remapped.jpg
, C, O* s3 I1 i9 B4 I# V
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别6 N1 a2 O  f9 ]. E  \' {) S! M
CMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑 ) Q( ^( q5 ]# k
gzbkey 发表于 2018-6-1 17:38% r7 k2 o& h9 L1 x  c6 p: e
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别( I9 g  R' }8 r9 ~6 @; l; f9 y
CMSIS-DAP  ...
3 v6 o5 m* k0 e9 g& w, M! x
1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。5 `" X9 s6 L6 p) t% [! ^
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,网络上已经有人移植,但是好像没有放出来。5 i1 M8 N2 k8 q9 K8 V8 ]

" \' b$ h1 G) x  Z5 IDAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
/ H. q; s! j& m5 @3 e" {3 W* g+ {' Q
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
+ @5 ~) B5 e( Y$ ~: 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# ^
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑 # B, w6 E+ E7 t2 S. G/ K0 b
huangxuejia-292 发表于 2018-6-3 12:448 a& o6 z, y  H# h, e: H+ b
官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...
$ ?; U9 A1 ^- U7 k3 h$ p8 O% A
我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。
4 l" M$ F% _* Y& L0 h& xDAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。# Z3 g: y- w% N' ]
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑 . m! r) p/ Q+ s

' i2 D0 P! v) w! {; I" U) i今天测试过一些IC开发板,
  T2 P. l# O2 K# Q, s4 l& ]& ?1 f+ O, m  e( s$ o9 _
1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。1 O9 @2 h4 R) R
2. LPC824的,正常。
1 ?& D0 s4 P' _" z6 a6 q7 h3. nRF51xxx的一款,正常。
/ j1 G6 h' L0 m5 Z9 [+ f% _+ D4 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
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
0 O& O) {( |, U7 D- M, f- t& @( n上位机关闭串口或者关闭串口工具,不会出现死机啊?
: i6 [: X) b+ Q- B/ S! f+ _( dCDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。8 T! v- ]3 f# u: \8 N+ t
对了,X大神固件有个串口溢出的BUG。
; n- x6 F4 L" v$ k1 _8 R我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:39
( q. n: U2 S9 k* d3 Y% f4 |我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。1 j2 Y: P. E' |3 J
上位机关闭串口或者关闭串口工具,不会出现死机啊 ...

& L0 C  F! R( f! J  v$ f! s谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。
+ V. j0 C4 @  u; p4 z

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版