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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。% z, V* j) ]3 F+ H: M! T
2018-08-29附件更新,与github相同。
' x6 ?8 l1 Z3 ~0 c2019-12-24重要更新,速度提升,功能不变。' {% U; I" @( v) K3 ?" [+ ^8 G

6 ?& Z9 L, k% B) h6 ?1 H: A( _# Mgithub:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO( a, [" g5 A9 t# v3 ?& y) g+ I
. ?' d1 V2 Z+ |2 t# `6 N$ ~" r
----------------------------------------------------------------
" |2 f! f$ O2 d* [$ z( E9 o2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。
8 V3 ]$ I1 s! D. g# @4 g$ Z5 A; y' y) v; d# f% K& t' F1 b
10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。8 n0 O3 `; N$ |0 }7 n2 P8 y+ T1 B

BluePill

BluePill
* }' M7 k! G( s
几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!) T$ c) q) b9 s: f2 Q
. z. F% j; m4 L; }# \
于是我就花了一些时间,在X893包的基础上,做了如下改进:
2 b. M3 V2 ^  ?- F' a1. 升级到CMSIS-DAP v2.0最新版。" ^  F9 n' @1 m8 f/ p& ~4 J
2. 实现了SWO的主要功能,即printf转发至SWO口。
1 |# w( J; G$ ~7 t6 `5 B" H3. JTAG功能正常。# H8 d+ l  P% W! B3 ]+ _7 _
4. CDC功能,使用串口2(PA2/PA3),已经改进。! H: A8 p9 q4 e, h) m
5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。
% ]- p- z% Q) F# W4 h: a  ~6. 针对STLINK的廉价硬件,做出了改进版本,稳定。
* b  O4 H! u& c% _
6 t3 |- [7 _# _* g1 Y7 m9 B HW_Connections.jpg
+ K; P5 p4 j# l/ Y9 _' A2 Z* I
6 n: u6 ~3 \# R6 E 1.SWD_Remapped.jpg
8 g+ z# h/ l1 F3 P9 Y' w( t- g4 D! S7 }9 v9 ?' M# D

, a4 N! `/ K% E0 T$ x2 L1 R STLINK-01.jpg * ]" ]  B/ |- p; q" r4 B
3 _. n* T4 k2 }3 e, E4 e6 _+ |% t
STLINK-02.jpg
8 m% C, E2 p. m( _# |, y9 L" M% b
: i- d5 S; s1 h$ F7 f2 s1 l STLINK-03.jpg
9 A  P" Q6 ]: U' G0 z
& ~: N4 N' N8 Q1 x0 P. y* T Schematic(part) STLINK_V2A_V2B.jpg + `$ U" V# {( b& K5 L. \6 D6 Y
3 r4 w5 r: J$ L1 j& E" ^$ l, A
Readme6.jpg
( M: H- O/ y0 T5 }4 {/ t
* H5 u$ P) ^5 X6 n/ N0 m; L4 K. c+ U4 t8 j2 l8 v
注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。3 V$ ^: F9 L3 b
山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。

, E8 C) {4 Y* V& Z5 F即使卖家声称是ST原装的,也不能完全相信。5 j. g3 E9 ^# o& H% L
6 ]. j3 o  v) D6 s
固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。
& y: A* J4 L; ]使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。
  X7 H. E6 t0 a) X
7 K* l% A' L3 V. k% U9 Z" n
1 {/ @) g9 s4 m1 ^  `% I& a& }- y; `2 I* d

STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip

下载

3.48 MB, 下载次数: 9721

评分

参与人数 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:002 V8 d/ e9 j# ]4 K+ o
可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...

. C- ?( s2 U4 M: e4 y7 p/ J- v5 OnRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。( i+ W! m" S$ D
你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。' E' r6 W3 q4 `$ f3 O- x

; o$ C' l0 I/ g) O( e2 {( B你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。
0 K6 ?& N6 _# }1 D或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。
- D7 L; _* R  C+ s# C8 p
' c- {$ G8 I: h2 L0 ]! M7 z9 K- _8 E" e9 P, u4 E: g' x1 E% r
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
, l* P1 \! ^/ H  D$ {& k1 r1 R# H, x/ |楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载# x0 Q' U; ?5 A0 v

: n$ o' ^. D0 A: Y  B2 n- {下载到板子上后,USB插 ...
2 x$ D4 k. Q  n1 Z
不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。9 L$ T( m! d! i; w

3 @* F' N" T' u  k7 l9 N我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。
, i2 j( @8 _, N8 I# n附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
# g0 a# q+ t  d% W( CJTAG模式没有测试。
  i0 W  k" ^7 n6 E& o% D$ @  `
' e& y( M. A7 P3 X- E4 ?

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
# \) N4 t- W: }5 p改好了,调试能复位。
# ]2 ]! i) N0 q' Q1 RMSD(U盘拖放)无法复位。。。
" \- Q6 K* P! v  T2 ]% M4 f4 M
你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40
* o% @0 {: X/ {& u0 ^+ V请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?
  ~  R; d2 M# w) D2 z
通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。
. U3 O, j: s5 k. r7 `(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)0 {* s# W$ Y( Y& \

# }( O9 c- A: P  }7 }/ Z% X- m& ]CDC功能,Win7需要安装一次驱动,文件在源码包里面有。" q) b9 @1 F: e; `5 X7 [( `: R7 J1 q

! w4 {( C: r1 n3 r2 O+ g6 N& ]
七哥 回答时间: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独有的。( K) V3 g; w4 }$ m7 R. j
优点:
; C/ A  y+ ]$ _! U, s2 P. N1. 对原来程序的时序影响很小。
4 n" M$ D" Q) [1 O2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。
* o' I* J" Z  g3. 不占用串口,却可以方便地使用【printf】功能打印输出。* s& n5 c! f+ R$ S+ F, ^7 r
4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。0 X: m/ K2 s# @7 e7 b! Q
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。
' o/ N7 a; `" ]5 h. k6. 烧录程序,和J-Link/ST-Link一样。
! a: S) [5 n7 R8 V$ x% J+ Y. [7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。
# G6 T7 {' j4 B8. ARM开源的,随便集成到你的开发板上面。
+ @$ t- V( V" ^, u7 v
+ E+ L: P( {. e  p缺点:' _# n+ j1 n7 V
1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。% S( y: [* v& T3 q: x6 Y
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。
. \1 q) _/ L7 j8 v: i3 ?: D% Z+ B3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。: p. r# a& H8 _/ U" L7 R7 \: ]7 d
4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。0 V  ~4 [% \9 v7 o
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。: z% N( x! M' O1 u! j
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?; y4 e  b* m! O1 J0 }
9 G& c1 y" P& U2 }0 j
我的板子:
/ l' P; l# y. w3 j0 I/ RSWD mode:                                                        PortNo, F' Z( R6 O0 U2 D) u, K
                                                SWDIO              PB95 e3 r( ~. e9 O2 R" R. g7 R; H5 l
                                                SWCLK              PB84 Q7 Z; }2 D" V; R- c
                                                SWO                 PB7
- Z% s1 r: H+ H                                                nRESET             PB6- C/ P+ `; W% }5 `1 G% E- K, d
JTAG mode:
2 S! H! V7 _0 I1 L  t7 o/ P                                                JTMS                 PB9+ P# ~' f6 g) N1 Z1 _
                                                JTCK                  PB8+ N, r: e% [, Q
                                                JTDO                 PB7
. F. [& X& u. E" C                                                nRESET              PB6
$ U9 k$ q' ?( r, o                                                JTDI                   PB5
% f0 B, a* h% f+ A8 s                                                nTRST                not available
" _* `! C4 V3 e0 I2 E                                                
, A, y$ e- h, `5 WCDC Function:9 R3 C0 v% X8 J7 v2 B3 i1 a
                                                UART2-TX           PA2
: ?" |2 |: m  ?                                                UART2-RX           PA3
3 g9 Q. q" R% u8 t: \* p+ ^+ G' f                                                9 d& h! _4 z& N/ W  N: a0 A
------------------------------------------
. T2 Y  O$ R2 P( z# _% q7 I! h: hSWD Test passed!' F. b7 O. E3 g( h
JTAG Test passed!
. N; }8 X$ C& b, b6 ?) q. M; m7 F
- d# ]3 {' C2 G: n. FIndividual test results:
8 \) ?# W& D; W4 Q+ n1 ~) c) |Execution breakpoint: passed
8 `" J0 L5 f$ U# Y5 Q6 e2 N( c0 ^. {: uBreakpoint on read:   passed
: M- a9 B3 S, ?" ^Breakpoint on write:  passed+ \- k. `7 L9 g3 X+ a
Register read:        passed' g% P* i4 L# y, c, {
Register write:       passed3 U1 G4 f& _8 ?! D( u# r# [6 s
Memory read:          passed
! L2 n! l  ~/ r/ o- v# v' k' jMemory write:         passed3 Y+ i7 r0 y' |# Y+ j7 [( B
Control flow:         passed0 x) d1 k- p& \8 g

& p  Z" v" w! s+ T5 T, TCDC function:            OK* Y4 R3 g% L, w7 j9 P1 e* z' c8 k+ {
SWO function:           OK for printf-to-SWO# `$ O5 u4 h2 {0 f0 R" [. f
Soft-Reset function:   OK for Cortex-M
# W& `9 X- W% h4 N3 F3 M-----------------------------------------------------------------------------------0 ^: c! |6 d' s& r( I
+ [" b) U5 P1 g; B0 g/ ]
另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。
: |  G' u# A5 v* s9 t& h) ?
' `) C. Z: t6 O* U, R& A# c& l
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑
. L2 h1 l$ P/ n# I7 d6 l9 y. ~! F: c! d9 L5 z8 ?
有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。- ?; P9 H) N: w5 C- `, h  C
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。
! q4 r( g6 ~+ r9 n160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。
, F0 c( g# M5 O! W4 `8 D2 a4 n
- b1 w8 U6 k) J) C1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
! e0 @# ]2 M/ ]* f5 y8 u8 ?(选择SWD_REMAP后缀的)
4 V6 U  z8 i' \+ J1 X/ ? 1.SWD_Remapped.jpg 3 l4 \' S0 v+ q, Z0 x! L
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
9 {8 U9 `# d! qCMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑 ; L. l$ {1 n& F8 c4 ^" B9 T! O
gzbkey 发表于 2018-6-1 17:38
. @+ T9 g, V" p( d1 H, x6 X; q厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
' {, V; R! E8 nCMSIS-DAP  ...
/ I  y$ b6 K. u) |9 r
1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。2 q2 E6 x5 s' c# x5 R- p
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,网络上已经有人移植,但是好像没有放出来。' h& k1 I" s: K( I  l

9 O; F/ m. Z4 n  `9 QDAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
( F7 C7 a9 Z2 V: j- }4 Z
8 g' N0 G! U5 ]- [7 c! e1 |我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
' W6 [/ }1 @, I* B  z3 S' k8 |, n. ?5 h) x% ~# o8 S( h: w6 P$ v; L2 e
DAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。
$ W. N+ O" L: {8 S) E" u' G3 Z6 ^: c; {# w" A* t& }
实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。
, ^& X. i; E" u: ~
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑 7 Q5 v4 S7 _" d7 F9 c
huangxuejia-292 发表于 2018-6-3 12:44
( @" j6 h) r5 n- a# C- P官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...

8 r; m2 D4 g5 u! N  Z( k5 K/ V我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。) F+ l1 }) c* s2 a2 }
DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。
. U. f0 |, g: f) Q' D3 s
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑
. f( L$ Q  `  f7 p6 f/ Q5 Q
7 J& f& j0 c5 {1 n  _( \! F今天测试过一些IC开发板,
' ]  ?9 v  B8 v8 O
, [1 G5 v# r4 B2 U5 _. e% o! ~1 M1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。
: V: a3 |$ S6 S2. LPC824的,正常。- N" R0 b+ ^- q( L7 {
3. nRF51xxx的一款,正常。* H0 ^& X0 Q" d2 Y

8 P2 \( |# a- {3 U重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。4 e( W' j* _' C0 J" {
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。( N6 u0 B5 H) O1 D6 W& O
如果做成专用的成品小板,留意这一点,就不会有问题。& e+ V5 T( f$ |; C5 Q

8 D3 g. f9 ]( s' c简单的解决方法,7 r  ?) u% K3 `' Q. V
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。
+ _. x1 n* w4 ?( J$ O9 a% Z2. 在每一条数据线上面,串联一个47~100欧姆的电阻。
* e' H9 U. t6 Z
* U! |" c: C) E# y& B6 x7 `5 F6 n# q) f+ P
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
& p" T3 \) X/ m上位机关闭串口或者关闭串口工具,不会出现死机啊?
6 i0 O0 P0 x* Y) @% |/ J7 M2 T2 tCDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。9 R+ c! A5 K8 Q
对了,X大神固件有个串口溢出的BUG。! t4 S/ G- k- \% p: W
我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:397 C( q$ L- `0 s/ O( I$ _
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。+ ?6 a. z/ m( G
上位机关闭串口或者关闭串口工具,不会出现死机啊 ...

( v7 Q$ V7 Z9 t2 ?谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。
& p) ]! _% s) I; v3 m9 ^( Y# v

所属标签

相似分享

官网相关资源

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