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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。2 i, v# m9 V$ U7 n. f. {# ^
2018-08-29附件更新,与github相同。
+ {; D% e  c% D' S2019-12-24重要更新,速度提升,功能不变。
, h: J' R0 v1 i; X4 [7 _/ {1 h7 v  f* I
github:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO+ S* {1 i. ~0 a2 `/ o; [2 t
$ Z. ]  N0 v( D' R- H0 `
----------------------------------------------------------------- X; [0 _% c7 R" c
2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。
# ?# c* J- @2 @) Q0 u9 B. ]& {# l; H# n/ p* A9 G# h. o
10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。0 H, V, a8 j- h9 i

BluePill

BluePill

5 |/ Z9 Y8 s* j7 p8 K# s6 j几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!
8 \: B6 a1 D- Y! ]  m# t, @  ^( s7 M: B; |' Z0 ~3 T! Q; r9 B8 @
于是我就花了一些时间,在X893包的基础上,做了如下改进:% C& y, m: [# v" k1 K. Q+ `
1. 升级到CMSIS-DAP v2.0最新版。0 Q! q% o& k( V6 L9 B( Q
2. 实现了SWO的主要功能,即printf转发至SWO口。1 q! u3 z$ t, T( p0 R* D) n
3. JTAG功能正常。. f  ]- t' C. z2 i1 w" g" F
4. CDC功能,使用串口2(PA2/PA3),已经改进。+ \: K; Q. G# p) F4 P5 P2 H! X9 ~: {
5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。+ i  K' p" q% H, Y" C) ?
6. 针对STLINK的廉价硬件,做出了改进版本,稳定。
1 w& ^1 p0 h2 \6 v! B! U0 r
& P- i0 a0 W% W: {5 r: r6 ]5 w HW_Connections.jpg
4 D! x& u6 d9 f/ u/ \' g' q% g/ T
1.SWD_Remapped.jpg
7 Z8 @( d6 K7 J8 O3 S. n7 R# I) }3 |6 u) G- v
# f1 \9 V+ R- T1 h4 w  V6 j9 `
STLINK-01.jpg
) u, b2 l6 s5 r2 s8 Q
! O, y/ `  m: ]5 j1 A- |) j STLINK-02.jpg
% ^' u6 y9 t: U+ j0 P0 v
! |4 t7 {( \6 ?1 u& ` STLINK-03.jpg ' q  a) H: b# f0 a& t
4 [! E5 ]1 H( m! o8 _2 b9 U
Schematic(part) STLINK_V2A_V2B.jpg ) W; Y3 {! p; ?! N- [/ c) k$ _

& E7 a* B# C0 n# B* F0 ]+ y Readme6.jpg
0 ?& f" D( I* \' D/ E1 i
- l; J2 _" ^& g6 i) c  t" y# m/ A$ c. _
注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。
, R4 u6 x+ @$ W, R山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。
& p; |: @2 W) \; w$ N- R2 Z
即使卖家声称是ST原装的,也不能完全相信。
! Y8 S2 f' \7 R  o' s, B! F+ G9 J  k- Y+ T6 L( Q2 N( D
固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。
- ?5 [$ R; R& I% X使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。
0 l2 O$ x  Z$ B' r1 ~
* Y! v3 p3 R; o0 [
1 x$ `4 r% v% D. b5 d& F% ^2 c. Y+ v

STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip

下载

3.48 MB, 下载次数: 9688

评分

参与人数 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
0 C  D# C7 z* n  S0 }0 B- `可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...

3 m( b& n/ a, W- B/ l3 enRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。1 [8 B4 |+ T" J3 Y/ u5 E& G1 `
你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。3 ^! p0 W9 A& {2 g8 Y6 H

, W4 }7 Z8 H. j! K5 p$ _) D你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。
) T8 X8 G% l( u) c9 h6 T$ V或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。3 D. Q9 I1 Q. V+ E( `

& a$ [& V7 [' i0 n* {. [: R4 w
; v/ e9 }4 k& B: J3 ~. T- m
happyavr128 回答时间:2020-2-4 17:26:56
楼主大神啊!
kernerl 回答时间:2019-12-7 13:30:15
找到一个可以编译通过的文件,不过好像有个DAP_config.h这个文件的版本不一样。

CMSIS-DAP.zip

下载

1.6 MB, 下载次数: 135

radio2radio 回答时间:2018-10-14 02:01:43
FireHero 发表于 2018-10-9 17:180 ^* Y* `; Z# N$ \- R: _
楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载
& m; ?4 p# D" v1 a& N7 L" n" D5 i( n9 N1 y( g* g# M
下载到板子上后,USB插 ...

# G1 m2 z$ y7 i: {7 }不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。  H4 q* a; D0 _0 A! w. Q

, I1 u( Q4 T9 E我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。5 W8 @0 r8 X  H$ Y
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。& ?1 w( m% g; ^6 [- M( e: y
JTAG模式没有测试。0 w% g/ ^. w* I  M0 {3 j
- k( Y& L; u+ c! o3 E

F103-DAP-SWO-CDC-BOARD_V1.rar

下载

29.59 KB, 下载次数: 262

点评

谢谢分享  发表于 2019-3-25 00:53
漫步云端-345339 回答时间:2018-8-8 10:58:03
huangxuejia-292 发表于 2018-7-25 15:00) F. r0 o$ ^8 C) @' a* w
改好了,调试能复位。
9 r- t- |- d# [MSD(U盘拖放)无法复位。。。

% d7 J: g' r+ H$ p% [你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40
4 \# s. W+ w' d' x2 e- x请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?
) l: V$ i5 Q9 t* l# I/ ^8 ^
通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。
1 i; Y  V6 ]. w8 E(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)0 w  F' J- t. @7 `, \

; O& ]0 z+ L1 x& pCDC功能,Win7需要安装一次驱动,文件在源码包里面有。
2 z. K; `/ [# |! i! \* o& S2 X/ U' I- {1 B/ L0 A
七哥 回答时间: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独有的。8 r) J( C4 G4 p5 W. ~! k* f
优点:" X6 f- v) V" G
1. 对原来程序的时序影响很小。7 N8 a# D7 e* i) \
2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。! s( Y$ J/ z1 T
3. 不占用串口,却可以方便地使用【printf】功能打印输出。
6 Y6 j2 j% f& Y+ q! O4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。) c: [, |* ^1 B" q1 e! {7 s8 z
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。
+ X0 N: K( L$ o8 Z6. 烧录程序,和J-Link/ST-Link一样。
* p5 g, _  @* x2 q7 p7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。
' J2 _9 m, o+ v8 K# D1 t) Y8. ARM开源的,随便集成到你的开发板上面。
. T( p$ r2 U! m3 T  r- }1 E" m# O; y$ G" R
缺点:
7 y# C- @1 J! g" H! B( X1 ]1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。$ t2 j3 n. K- e
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。! j3 m3 Q& A, \3 U/ j/ h3 `
3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。
6 F7 {) w7 z- c; R' W+ g6 S/ g4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。, m8 ^& h* D$ @& q2 i
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。# i# A3 @& G& d
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?5 Z) ]7 H1 r# d% T9 u$ n; c

; w6 X3 k! G0 N我的板子:
) t3 z" H! M/ |) sSWD mode:                                                        PortNo
' U8 X, E' @; `3 o  N                                                SWDIO              PB95 j8 e' h5 ]! r, o
                                                SWCLK              PB8
! u! K$ _  M) d                                                SWO                 PB7* ?' r+ h' _  d. v( w5 v
                                                nRESET             PB6
1 `0 u5 @8 c0 D" ^+ J0 d. ]1 ZJTAG mode:
) E5 ]) O5 z) I0 d3 _  n( G                                                JTMS                 PB9
5 v- p. w& S1 L6 Y0 g                                                JTCK                  PB8
4 K1 x8 F! H. ~: @4 V: C                                                JTDO                 PB78 ~( c" `1 w+ j( E2 ?
                                                nRESET              PB6
" W7 I5 E3 m  K" P; N                                                JTDI                   PB57 n1 B0 G4 t1 B; b9 Z2 ]! H+ G! F
                                                nTRST                not available
& t8 C! q& C: G! J+ ^                                                3 f1 ?- C( k# j2 s  _
CDC Function:) e$ `7 O0 y- R3 ~+ M8 q% e3 p0 K
                                                UART2-TX           PA2. ]& x. n# [8 R) }4 U
                                                UART2-RX           PA3
! d; k. v4 E- \                                                
- \; A7 ?0 I; o9 f------------------------------------------6 W0 h9 u- ]/ [% f  @: {
SWD Test passed!
) k" c, B, H3 j3 ~2 `/ C4 LJTAG Test passed!
$ @6 U% p4 v. }4 L# @! G# A1 y1 T' ^) S% T) u
Individual test results:& W7 G# Z# ], g, o% x7 ]7 K
Execution breakpoint: passed6 B. q. N1 L; D, P+ N
Breakpoint on read:   passed0 o2 @1 l7 H3 p3 r5 w' b$ e
Breakpoint on write:  passed
& o4 X/ j4 C/ f. n  }3 RRegister read:        passed2 c2 Y6 b; B' f7 e3 ~( {' A
Register write:       passed# i- ?0 Z4 r$ t9 u
Memory read:          passed& h! i) T; P& D2 s
Memory write:         passed0 I7 D: Y; J% ^6 h
Control flow:         passed
+ w/ `( q) W& g" O' ~& `# f) D# c
3 d- |3 E5 L% J- O2 o# x% ^2 BCDC function:            OK/ R% ]; T) _- j* ~8 T6 z5 `
SWO function:           OK for printf-to-SWO& M/ t; b" u! Z& o. n7 F6 p. I
Soft-Reset function:   OK for Cortex-M; S4 b9 `. {/ A7 l! l4 x+ l
-----------------------------------------------------------------------------------* Z9 _3 T, K5 i' b4 i, J( W- S
% K! i8 K4 K1 _7 ]% G
另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。
2 |# q2 i$ \# ~) C- J$ M% ?0 N3 y2 N) b6 N* G* e( y5 l
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑 " ?9 J2 _  f+ i7 F! n

0 u3 a  ?' r2 {4 ~有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。6 P" p6 T7 r$ f# ]4 n
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。
5 z7 S; X2 c& T0 u) S: o160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。( m" I* I* j1 p$ o' O: F8 N
; k  r1 Q4 E" ]( F6 p/ F
1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。" c$ n: d6 S5 w' {. v1 P
(选择SWD_REMAP后缀的)
8 w8 a6 _9 M! R, ^6 c 1.SWD_Remapped.jpg ! q# @+ ^0 R2 N! v& m
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别' C$ ~; o# r3 A- L' X; V* b& a" [
CMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑
, z8 g; b: G1 o& J
gzbkey 发表于 2018-6-1 17:38! a: ^: i' T' t4 G7 m0 q
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别0 ^' _6 H- B+ b& N0 C( b/ E
CMSIS-DAP  ...
. m; `$ [2 M1 r" c) X0 ~
1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。
( q+ \0 T, d. c
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,网络上已经有人移植,但是好像没有放出来。/ P. ?% s7 M8 ]4 y8 C0 I- x
+ Y' D9 _, R' Y, q" V: r% A5 Y' z$ G5 L
DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。/ ?; y: H; {: Q$ |* q. B

# y9 y' \/ f) j. \/ @我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
* D" L7 T& J- c# E  ^0 C0 m: |* @6 x- |- Y
DAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。$ ^0 e4 r- a0 I

' V$ A: k9 `4 l& J/ `实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。
5 A& A( i6 x2 A: E" ~. }+ t
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑 8 ^& b7 V* Z2 m- y  N7 K
huangxuejia-292 发表于 2018-6-3 12:440 w) k. a  ~# J8 N/ P( ]$ l1 [
官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...

  t% c9 D1 P* O2 N; r1 M我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。
' S- @* ]! K9 x5 X( n" ~DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。2 u( I7 J5 J. o& i- R
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑 5 ]- t5 y+ x, e! F* g0 R
5 y. m+ o# X$ h3 L. k2 N. T; e
今天测试过一些IC开发板,
$ P5 p9 ^5 l/ {2 j! F
( s2 G1 M* n. O1 `/ y$ V- E5 e1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。2 b, t2 i  @& i$ J: n  y' V
2. LPC824的,正常。! u; ^: W$ \+ s' \
3. nRF51xxx的一款,正常。8 C# l$ v; w0 e) p& y
& ~& Z* r& q2 N: u! d% a# o
重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。" J5 S7 s: B2 N$ }+ G! |: u7 @. x
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。+ D9 `. F3 z1 @& i2 X9 ?! G; H+ j
如果做成专用的成品小板,留意这一点,就不会有问题。
3 a6 ?5 C0 L& {/ X6 [* u
  J/ f' `8 V$ ~  b8 x  W9 _简单的解决方法,
( Z1 c5 B9 r+ c: {1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。" C* D' W0 e4 h; r; _! I; L
2. 在每一条数据线上面,串联一个47~100欧姆的电阻。
) E3 |, Y* T: M& h; z: z
! f& U; f3 A; g- q
# t6 n  W) X0 e! M. |! ]7 {
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。1 Q% U, u9 Z1 L/ q
上位机关闭串口或者关闭串口工具,不会出现死机啊?
: l7 _. P4 N' D, r+ p6 K1 s1 V, fCDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。" B. Z# K- b, _6 Y! k
对了,X大神固件有个串口溢出的BUG。2 \! z& u3 u5 U
我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:39
( F& V2 P8 n/ s2 D我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
" u: t0 X) `4 K8 Z上位机关闭串口或者关闭串口工具,不会出现死机啊 ...
) ?6 z2 l- ~( S. V* ^; Q
谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。1 ?+ e- j5 E" m
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版