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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。- l: G! w- M% U. B. z1 g. ?7 ]
2018-08-29附件更新,与github相同。1 F. i1 R$ h6 \# W
2019-12-24重要更新,速度提升,功能不变。! w/ F9 g6 b) t6 u
$ W, n- C- n# H* Z
github:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO
  F; V" X  R& |/ R  U; e/ A( v0 y* b+ ]$ a6 ~2 F1 v% B( d
----------------------------------------------------------------
, f' ~$ P$ E5 v' b- x* @2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。- V2 [6 [2 a- O8 C$ I1 I& I* P+ g

& \" n3 p  c0 U' @9 j# W/ J% R  n6 f10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。* L% O5 s. s4 u  |/ y5 X

BluePill

BluePill

  i, M, F# u' h9 Q& Y9 Z. z几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!- b, I6 I! G& \" V  H$ P1 K" ~

. m7 O" a" d  v: }) @2 V于是我就花了一些时间,在X893包的基础上,做了如下改进:
; H# O4 I. d+ a! G1. 升级到CMSIS-DAP v2.0最新版。+ R( P/ Z! X+ W4 f
2. 实现了SWO的主要功能,即printf转发至SWO口。
" A4 [" n6 ^/ q3. JTAG功能正常。
+ g" @' @- C2 e* O& P) M4. CDC功能,使用串口2(PA2/PA3),已经改进。
) s2 Z8 Q# J- z5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。
$ O8 ~4 k8 [) p2 \6. 针对STLINK的廉价硬件,做出了改进版本,稳定。! R5 G6 a1 w& x1 t) O! Q+ Z0 U

0 E1 e& A! ~+ a HW_Connections.jpg
% P- `; k+ w7 |  S9 m9 y* U0 P9 R7 j  G: t
1.SWD_Remapped.jpg # i+ j- c6 x5 R0 Q$ D9 z! s& `
: `8 I4 Y2 J8 F! E8 v* j

# n1 M' P: [: i. V. q4 L* f$ E0 h STLINK-01.jpg
8 U/ Y% U) `& G0 c  x% G7 i' v: x0 L. s  ~% g% p* V/ V
STLINK-02.jpg 9 X' F4 X- e; ^+ m# y# j) ^
5 t- i3 z# }. W, w1 ]
STLINK-03.jpg
. A: z4 p2 i! J  H) M% L# `  x0 L4 q; `9 N! W4 u; g
Schematic(part) STLINK_V2A_V2B.jpg
7 o$ E5 Y8 R; ?2 x4 o2 e; Y' y
$ R: j' t9 b8 |1 u- L0 R Readme6.jpg
$ T3 z- b- A+ k0 n" l/ p* h4 ?! h1 j, u( i- U1 S
3 m) M2 b) J, d2 O' S
注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。
' C% A" n8 `6 o4 W2 X! Q) |山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。

7 Y/ W6 C7 H! O5 R! D+ p即使卖家声称是ST原装的,也不能完全相信。1 f& W# o0 u! Q" E
- q  j6 r8 q' [# t6 P4 J
固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。0 Q" L2 k1 Q" S
使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。
2 S3 k1 p) B( {; C7 s' J4 f
6 q- Z- x& l: T* j) v! ?: a0 C0 }2 `: j
! p& y+ o/ \6 n6 I4 Q4 e$ `1 T7 C

STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip

下载

3.48 MB, 下载次数: 9661

评分

参与人数 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:002 g0 {; @8 j- _9 Q" _
可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...
* d. Y5 X" b- |9 ]7 M: ^
nRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。
) j. H# e: P* {3 l8 P你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。1 e7 j( `3 h+ B9 i

- @9 J4 h* n) Z0 N# t你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。 : _3 Y0 L; X# J. q  e+ P
或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。
# V$ P% |& R* A7 ?3 U, R- [* i
3 U8 |" t( [4 l/ @+ S
1 X1 g9 P7 b( _  U* L2 X- a0 e8 J
happyavr128 回答时间:2020-2-4 17:26:56
楼主大神啊!
kernerl 回答时间:2019-12-7 13:30:15
找到一个可以编译通过的文件,不过好像有个DAP_config.h这个文件的版本不一样。

CMSIS-DAP.zip

下载

1.6 MB, 下载次数: 129

radio2radio 回答时间:2018-10-14 02:01:43
FireHero 发表于 2018-10-9 17:18- t& i5 V8 Q7 y( M
楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载
( ?1 [/ e, S1 M9 Y4 E' R) l/ s
  c8 s5 y, V3 C) Q3 X2 f下载到板子上后,USB插 ...
( M. z1 H5 {7 B
不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。
' z( F' r4 j1 I/ H- Q+ }9 {2 l# p* @  n2 T) v, h  ~4 B
我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。' W" P1 |0 ~4 [* ?# ~- X3 |4 W
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
# r/ F& ^! s( J: W6 d( i9 ~JTAG模式没有测试。
( S2 W6 t5 S3 ]9 X
" L/ q# ]0 ?4 n# @& d. j

F103-DAP-SWO-CDC-BOARD_V1.rar

下载

29.59 KB, 下载次数: 257

点评

谢谢分享  发表于 2019-3-25 00:53
漫步云端-345339 回答时间:2018-8-8 10:58:03
huangxuejia-292 发表于 2018-7-25 15:00
, F2 ^! p5 ]9 O- {改好了,调试能复位。  k- _0 X3 o8 E$ b8 c! @. t! J' T
MSD(U盘拖放)无法复位。。。
% E$ q6 r0 q3 w" J7 O$ G- B6 T* [# N
你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40' U8 U! [& \: d6 |$ x
请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?

1 C, ?5 I1 ~4 c* i- S6 U# H" z2 Q  L通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。
& L( }7 B: A% z% j1 K# d) _(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)
7 _. L. ~; Q; A8 z6 S0 R+ P. \* x7 k. Q3 }) N
CDC功能,Win7需要安装一次驱动,文件在源码包里面有。+ v) J4 \" {6 h* o. S
- W1 K, h- k& s
七哥 回答时间: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独有的。) ?2 Y  ~3 d- o# U' Q5 y1 v4 t
优点:1 T0 L/ R6 f# y8 I
1. 对原来程序的时序影响很小。
$ i: ?. w& U. B5 M" z. ]0 `2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。: h! N6 J* X: X- s+ H! d' k. {8 w
3. 不占用串口,却可以方便地使用【printf】功能打印输出。3 w8 d, c8 l5 s- V
4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。2 T" a8 R, y  A$ l8 w( A! Q
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。+ |& w" F$ w' q# X; `
6. 烧录程序,和J-Link/ST-Link一样。6 i8 s( k7 a) j: c1 N# V6 \  s5 @
7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。( i4 z3 f  k! j% S
8. ARM开源的,随便集成到你的开发板上面。* Y9 l! j( l  ?2 o. f3 l+ ^
( H+ H; f0 d) ~: J+ X+ r  ?- v& g
缺点:% n: o& H& p/ }6 F$ P& h0 H+ @) [
1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。& t. j. G( a$ }5 \, t# g$ z  n% ~
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。: @3 G) L- G4 x( y4 g8 b- V
3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。  u+ ?2 m) x4 ~' W
4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。3 y7 G6 Q# L& o! p$ e( {" r
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。
# C- {5 f! P- T7 ]3 g& E* K+ V6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?
/ s3 ?% T) e; D& `
; A5 N/ F- t# x  `我的板子:
2 ]' F: J% [) wSWD mode:                                                        PortNo7 y! Q% v# V; Y% j* p- C3 [, U
                                                SWDIO              PB9
; q5 D' \: n- |% X" T( u) E  N; s                                                SWCLK              PB8) g& [1 ?7 F' i: p
                                                SWO                 PB77 K* H, {" U* P" b" _7 F! a* ?
                                                nRESET             PB6# ]7 a6 u" W/ v6 ]
JTAG mode:
1 c7 K$ c; {. j4 f) @4 h2 t                                                JTMS                 PB9
4 `0 {/ w, k' i4 i                                                JTCK                  PB80 U6 b, e$ ~1 R( }- U" A- i
                                                JTDO                 PB7" M8 R  @/ ?/ {: h0 m
                                                nRESET              PB6
0 l) ~: ^% D: r+ B  J                                                JTDI                   PB5/ J! I- t: a  U1 F" n# R
                                                nTRST                not available
- ^2 R( n3 K2 V, g                                                & D- `+ t0 n8 ~& Y
CDC Function:
" ?4 ~- b% ?$ N  H( @                                                UART2-TX           PA2  q* Z4 |0 W) R4 X$ ~" ~
                                                UART2-RX           PA3( g) H2 ?" G/ v& y
                                                
; K; {7 h, o$ d8 h* z, }------------------------------------------7 [, k9 l* {- R- y
SWD Test passed!7 s1 A( a+ I' {$ D: U9 a9 p5 q& c
JTAG Test passed!" j; D  N0 g3 x- m

' N/ v+ T+ ?- t, p; X! ^" |Individual test results:* P! o; O0 w  }" t# k' s2 I
Execution breakpoint: passed
9 r' T, B1 X9 I" e3 V: tBreakpoint on read:   passed
, u* G3 {4 m8 UBreakpoint on write:  passed
! w- y# t' t! Y7 F; tRegister read:        passed
: K) u( P% g% y! K4 `! N0 Q8 N% V* DRegister write:       passed! n$ s) [4 ?- O) `% v" h
Memory read:          passed) M; j4 N" h" r- K4 A
Memory write:         passed5 Y0 ^4 E* d  S# d# u
Control flow:         passed0 n* f- E* }* A0 x, }
3 C  @9 I# p0 @8 z* ?: R" o0 D, F
CDC function:            OK
  }. p: }' @5 k# J; lSWO function:           OK for printf-to-SWO
7 j4 H2 k9 V7 N- g6 Q, F- oSoft-Reset function:   OK for Cortex-M  G8 `# ]. v& J8 P" t1 }  ?- D* @
-----------------------------------------------------------------------------------
& E' O0 r6 Y- f
) I" l+ p4 m! _9 h另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。
; D. x' I& m1 k/ |) }5 o) u
6 P( c+ _$ ]$ S1 C
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑
; y; F" i( ~$ {+ F+ ^$ ]0 _6 f: l  p0 L$ O: r* t8 {; ~; E
有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。: N" D0 S% _$ {# e, U$ k5 s+ _# M
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。
9 c3 j) X! {0 J! s: r. o160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。
3 R3 X  {2 {: x0 ~
6 L  G1 Q! ?, v/ v4 w. z5 I1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
5 r6 a1 v! `7 J( K; a9 A( Q(选择SWD_REMAP后缀的)% W$ _1 ?  y/ Y( j" B% F& w5 V
1.SWD_Remapped.jpg 0 `, `$ f4 \6 x$ R9 W5 D
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别! k5 c9 G0 S+ ?0 e/ s8 Q0 ?! x' k, |
CMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑 & q, t2 m- e) R" q) f( x
gzbkey 发表于 2018-6-1 17:38
6 C/ `& g. F/ [( {厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
& H' c3 N) n2 i. Q$ CCMSIS-DAP  ...

. B7 q9 S' s8 C/ f1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。
7 o" J! z  O8 N& A  w3 R
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,网络上已经有人移植,但是好像没有放出来。" X  g; b8 _- P# j: A! N

% `. }% M: Q4 H7 k; D+ }DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
! Q7 R! D8 z3 P) x8 A  y" p, w- O; f% J0 o2 ?# I& _( h) x
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
, W' c7 A$ L" y2 x
4 f* a" w. I" L3 j+ SDAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。* N! R) Z9 L! m) x6 F% s
& i/ b  c! m" T- h
实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。( v) M, v4 r% J3 _
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑
: o8 F( c5 e  \0 M
huangxuejia-292 发表于 2018-6-3 12:44& Q$ N4 r$ |* }0 B" n( y5 a: V2 X
官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...

4 i+ }5 s# t& L& P我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。, c; t$ M) b0 }. C5 M
DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。7 I( F; T) q: @0 A0 I
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑 " \& W3 O$ n! ]1 {
2 M6 u0 d; @9 W4 d1 V+ z5 ?
今天测试过一些IC开发板,/ K4 U7 S7 E( A- V8 c% H/ R
3 ]5 q6 k. V+ {5 d+ n8 w
1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。7 h2 y; P6 A% |& D
2. LPC824的,正常。" e8 m5 p8 m" s; u$ a
3. nRF51xxx的一款,正常。
1 S$ P: Z8 \9 n% ]2 Z0 N# L& j: g, u0 W1 C$ _+ M
重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。
; [$ g8 H6 A1 i3 r8 K建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。( }/ Y" }+ m2 P4 j9 P/ o
如果做成专用的成品小板,留意这一点,就不会有问题。
* w7 R$ R( V8 B: i9 q/ L
' F9 B1 g# v, [- h8 K! r1 V6 ^, {简单的解决方法,4 r8 U' i; u  w; `3 ~9 M! ?
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。  U; Z1 U) l3 c$ v6 `
2. 在每一条数据线上面,串联一个47~100欧姆的电阻。5 u: p' {: |" ]7 N4 N7 [) [
( t, o% i) ^9 _5 S1 W& n* W

4 w0 h: p" R* U) O
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
* k6 s( ?- k  m' x# x上位机关闭串口或者关闭串口工具,不会出现死机啊?& W* I. s4 G! v
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。7 D5 Q4 N; l/ s' T" ~. w, r; I
对了,X大神固件有个串口溢出的BUG。
# c% H$ R/ Y; p, Q7 O, f我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:398 ?: s' i5 ~" B, |
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。5 S0 U4 x5 B7 s8 `6 U
上位机关闭串口或者关闭串口工具,不会出现死机啊 ...

% ?. Z1 M0 t  A4 b谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。$ V( `  {. C9 z- t
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版