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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。. W: H5 \9 U/ c! D) ^" ~
2018-08-29附件更新,与github相同。( R1 t5 x' @! ~( I/ I
2019-12-24重要更新,速度提升,功能不变。
8 @0 [# f4 H2 E: m! M, s' @# N6 ?4 b
github:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO
3 z% @$ s4 v9 [2 W5 X7 I
* K1 ?4 |3 ~5 f5 M----------------------------------------------------------------; p* ^5 H; t1 o! V1 R: B
2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。
- k0 ]2 v( \) w$ X6 n  B* r4 s1 @9 ^% m, H
10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。- D5 `3 i0 U- y! P- d* B+ B

BluePill

BluePill

/ Q7 {. J/ A9 k) z9 r% W! I% a几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!& \) P7 w; m1 W4 H# l

. U, w& Z" E$ O. e& L于是我就花了一些时间,在X893包的基础上,做了如下改进:
) q- L; h1 j( E4 k1. 升级到CMSIS-DAP v2.0最新版。" E7 n' m/ O9 H( N+ y7 {
2. 实现了SWO的主要功能,即printf转发至SWO口。
' x7 O1 f0 V/ ?1 u( |% a& R3. JTAG功能正常。
6 f, z0 z' y. H- k2 q( p4. CDC功能,使用串口2(PA2/PA3),已经改进。+ O( D" K  @; P
5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。
* F# ]) d3 D% u6. 针对STLINK的廉价硬件,做出了改进版本,稳定。
8 g2 P$ @: d, a, ?* O5 M- _9 u2 ^
HW_Connections.jpg
2 G. Y  d: ?5 }7 [
- v" H0 z4 w$ F/ U. a/ N 1.SWD_Remapped.jpg
1 R3 j: x. t% o6 T0 s
$ l* _% H0 i* h' D! o; a
" C5 a$ ~( F# M( p* @6 W" O STLINK-01.jpg ' L% L& n1 {  U1 w% h4 Z
& G$ f8 w9 G5 s0 c3 ^6 p
STLINK-02.jpg 0 V- F5 o" s) b% n2 B
5 t4 F" K  o5 l  |
STLINK-03.jpg
# O' x5 }0 Y7 f2 F8 O
8 I4 G1 b4 R; g+ B0 X" }- |: \# b Schematic(part) STLINK_V2A_V2B.jpg ; i8 a/ L* i4 f6 g' `6 v
1 K0 W3 o+ _0 l# q
Readme6.jpg
# M2 q( Q7 |8 W4 g* r6 c# Y. f/ v) U1 c* W* k

5 [( c! l# C3 @0 S' e( s1 K+ ?注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。
' o1 ^( ^, {: W  S8 Y/ a% m" \山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。

9 f0 D6 S, Z. p8 |& M即使卖家声称是ST原装的,也不能完全相信。
- u4 Z& V4 Y/ `: M3 X4 J
' v/ y" N8 Y6 G2 n4 _固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。: _+ R% _8 Y  j& a& |7 @, n
使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。- C# d& X2 X/ `3 M% f
' c6 K) K! V/ p
( `  s- ~; ]* |8 C# m

- z$ k1 f" G5 e' N  G3 r6 N  p

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
7 R. q8 n% k6 s9 r9 l) `可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...

2 ~- M: S6 h5 \3 z1 j5 R- ZnRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。( c$ U" \: [; O/ T8 M
你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。
9 N0 H) O7 D; k9 c
. b8 _8 `$ z8 Y: f% K你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。 : `: }2 Q% ], q& X- F- Y, L" V8 r
或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。  U3 `4 v, }2 b$ I% {

- @4 Y2 Q- r: m9 ]
- R  |1 D: N0 v% f8 l' L
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
& \2 O- s* C; b: s9 q% T" L1 W楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载
; m6 W2 `, c! Y6 {
( t$ _) a8 M8 w' _8 i下载到板子上后,USB插 ...

% F4 f9 @/ Q, M) H8 \不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。
! u  A7 k* [0 L6 [+ y
, Q2 M$ N, j& |' l3 E! A7 x我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。
- \6 e: ^6 b$ t& V, v# j9 I, `附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
9 a3 O. S, |! l/ vJTAG模式没有测试。
2 u8 @) U; r9 E& F1 d
. }$ [; Y: K/ O: r  E5 q

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
& y2 r& g7 W8 Z改好了,调试能复位。
) Y+ U( A6 j. y( M6 i# GMSD(U盘拖放)无法复位。。。
9 r. b0 z4 |$ k$ w4 q
你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40
7 N3 k- t; ~- E+ ?1 W3 D请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?

" k# u! n1 @% j, G2 s0 d2 O通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。
1 n( J) W" m# _7 o6 W& y(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)8 i: C* I  N- N, D# i' J; J

1 G/ j6 n8 i4 m6 N7 g$ X5 [CDC功能,Win7需要安装一次驱动,文件在源码包里面有。" _9 |. z  O2 c

& @" {/ X9 C! S. b6 _! G. w( M( W
七哥 回答时间: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独有的。
! P! E/ z$ J8 Q( }优点:6 \6 \7 O. Q1 `* M/ e% F& Y
1. 对原来程序的时序影响很小。
8 C! z# E6 V* b  w; M$ N2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。7 S) Q# F* l- B
3. 不占用串口,却可以方便地使用【printf】功能打印输出。: N0 {) e# H" b+ n* f1 j2 v
4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。
+ E1 p! V# p3 t& C* i5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。/ ^( }9 O5 U! {# m. }# n: F- A
6. 烧录程序,和J-Link/ST-Link一样。
1 b2 A: f" g' p# e7 v( g+ H2 [: _7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。
1 T( N9 |- `: u! q6 Q5 Z8. ARM开源的,随便集成到你的开发板上面。( K# a4 Y" q# ?: r

4 s( T. S& f3 V# K: B3 J6 @1 r缺点:
  `+ O) T* z; ^. U0 K1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。
2 m  Q  A8 R2 q# ~3 U2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。% A* ^% Z, Y5 @  i, P% C8 g, {
3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。" m! W; X9 r( N! m6 c
4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。5 O( k. j4 Q2 k$ N4 a/ q
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。  a, K0 r; |! Q# [1 X5 p# D
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?) }8 ]& O) ^- f9 P) D- h

; s3 I! A3 b( e+ e3 R0 H我的板子:
4 |- H4 _/ x' ~, O/ R! GSWD mode:                                                        PortNo2 ^# C( Q, N) R; M$ w% V% i
                                                SWDIO              PB9( h$ u9 j1 m. P; M0 j
                                                SWCLK              PB84 d0 ^" \" v- L: \9 M4 z( D
                                                SWO                 PB7+ C; G4 r. |, J$ G
                                                nRESET             PB6+ G8 V$ i1 Z& Z1 ]+ d1 P
JTAG mode:
8 q) M+ n# G8 P                                                JTMS                 PB9
) N5 w, i3 V- d# a; b  z$ T2 }                                                JTCK                  PB8
4 k% y+ _- S: H7 H9 o                                                JTDO                 PB7
7 J8 Q3 |4 F: ?  e                                                nRESET              PB61 z# G" p% E& s. Y6 Q. C+ e3 T
                                                JTDI                   PB5
( |, y- C$ V- n                                                nTRST                not available
8 {5 H- w' X2 S; N                                                
) f1 H5 w6 m& T! Y( ]CDC Function:
$ L1 Q: U% H5 B2 B! ~/ I# {( Z                                                UART2-TX           PA2: \$ H3 B! O7 P. T* Y% l
                                                UART2-RX           PA3
. _' W5 R- Z: z5 p2 H, T                                                
" s* g( Y6 |3 Y/ T5 F------------------------------------------/ d7 c& r6 ~; X5 o1 d7 Z2 v
SWD Test passed!
$ B6 ?( O, S0 W+ {) c; ]5 CJTAG Test passed!1 [! j. ?$ ~4 n5 u6 T/ m
% @4 j, \( |7 `
Individual test results:3 d" E3 F4 D& S. {% B
Execution breakpoint: passed/ ~8 i- P- i) u' r0 ^2 \$ V
Breakpoint on read:   passed4 e' d4 T  M% M( d" N8 X  w) `
Breakpoint on write:  passed
4 L( L+ a, P  lRegister read:        passed$ \' p& }: m/ Y/ p
Register write:       passed2 H8 G2 n7 B: e2 u7 I2 C
Memory read:          passed0 @  x+ Z; p. W
Memory write:         passed
5 e) ^* K2 t1 \4 O# }+ \' F6 ~% pControl flow:         passed7 t4 f# |; v1 A+ r. m

+ h9 J1 o; c& C& X! }CDC function:            OK0 I" q3 S( m- N  N  {( |
SWO function:           OK for printf-to-SWO; ]$ s7 e! Y/ Y0 y- m1 L. D$ t
Soft-Reset function:   OK for Cortex-M
5 r: y" z* m3 q! e" R-----------------------------------------------------------------------------------
  g# e7 I( a; }* A( \- N8 e  v* n" a3 U2 x, P# Y( c# W: f& k. @
另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。7 i# ~$ B, a5 V  T. n3 C

. P0 F. [9 R1 `# B6 k$ Q
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑
5 ]# G0 V$ r, i; B' s" z. y, t$ w+ b7 f: c
有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。
6 u5 `# c2 I# `2 X50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。; J' q! [$ ]- w% c( m9 {
160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。, X& E1 q$ W/ g# w3 @- C" D5 A

) n6 L% D4 t6 x# ^% {1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
! D& R* V3 @- {" b, J8 |" Y(选择SWD_REMAP后缀的)
4 h3 P9 ]) W5 z. G  v+ C) W' B 1.SWD_Remapped.jpg 0 N0 b4 U! {, Z! M
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别- f6 z5 D5 j" U+ r! b$ w' V
CMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑 6 B1 B. @- ^: N) h, D* a8 B; Y
gzbkey 发表于 2018-6-1 17:383 [: n1 n1 ]9 X  d
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
8 H, T+ G/ ^( wCMSIS-DAP  ...

& o& ]8 @3 f( {& g, X% D% f- Q1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。6 A  w$ R0 a" w) ]+ [: c, S
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,网络上已经有人移植,但是好像没有放出来。
' |% v- g1 d/ N6 j, Z: ?$ W  r0 b9 [6 ~
DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
( D9 Z, I) v9 b8 {; D- i! b3 P. f6 U  _$ t8 A
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
# W+ I% Q' q; p" W4 N
; Y" `5 p8 D, J# P- WDAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。
% [2 |9 r: G4 \3 \- j* N/ _2 z" }  N1 L1 T$ l: y
实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。
  \& ^, B7 y" V% N  d* x8 j) [
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑
8 S5 m6 ^3 S8 ~" h6 }, T
huangxuejia-292 发表于 2018-6-3 12:44* k, u) w  ]1 f* r" I7 p( D' G' d
官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...
. d( _; u1 l. M- k0 ~
我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。2 L/ U9 V0 R* F
DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。$ _* }' D" p3 L) @, }7 S3 K; P9 b% `
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑
8 T0 t8 f8 ~. x8 T! g6 |* o, \4 Z7 d( V
今天测试过一些IC开发板,
. m9 k9 C# h) b2 W+ L
3 l9 \7 K" `' Q7 u! j5 J( Q, {* D$ Z1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。
  U3 S6 h6 V7 r) L4 U6 H1 C+ r% X2. LPC824的,正常。
2 N+ K4 D+ N5 L9 `! d; Y) O3. nRF51xxx的一款,正常。
7 D8 ]1 W- v- C% i9 T. i" o
- _$ |5 R& n- c/ k重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。2 C# n' p# a! C' i  n
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。
0 `* j* Z9 i+ o% M& ?) X如果做成专用的成品小板,留意这一点,就不会有问题。3 y3 f: x& Y4 \1 A  M, ]4 k6 S) `

' E0 Z7 [  V/ Q4 Z6 K" `  L简单的解决方法,
" v  i: o3 O; w3 _! v" x. [1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。
; X5 @' J8 ^4 V2 K, i2. 在每一条数据线上面,串联一个47~100欧姆的电阻。
- w6 A3 n8 @7 N, A) Q  X/ n
4 l- K) R( S- X. v% r" c4 w; P; X* i3 D3 L
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
( b; L  @+ F. N- d& g- p2 x4 O- [, M上位机关闭串口或者关闭串口工具,不会出现死机啊?' s! J) M! l- o3 }- |
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。4 G& o+ f: e+ C5 y$ y3 B. b
对了,X大神固件有个串口溢出的BUG。
6 d, R& C9 m7 Y- @9 X# j( i我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:39
- I" x5 U! j0 s/ n$ ?我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。# i- ^" L- i1 w3 \- r0 k
上位机关闭串口或者关闭串口工具,不会出现死机啊 ...
' w) ?* W; a  v: [/ o4 _" Y$ S
谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。: }* j# v' A* e! b( [0 W

所属标签

相似分享

官网相关资源

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