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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。; L6 b# c5 q. E$ i1 L. `) i
2018-08-29附件更新,与github相同。
( w! X* t6 q1 b3 H: s2019-12-24重要更新,速度提升,功能不变。/ }1 i0 Q0 f6 R8 |

! L% d2 ~; }* C6 r) qgithub:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO
# L4 N" t+ Q) K' Z7 a8 n
/ u  h6 H, x* f1 e% m  L# C----------------------------------------------------------------- P( d2 s( r; G: N+ j- M
2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。
9 k( U) d  x6 \, W0 T
$ o& M: d) N9 S' O, k$ D3 ]10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。& q# d% w5 V) V$ k( V3 P! \

BluePill

BluePill

' H; X# y) C" b4 C$ S# [几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!
  A1 d5 L9 \# t  o/ j
) E1 k, v6 J, V! H$ @7 h0 Y于是我就花了一些时间,在X893包的基础上,做了如下改进:+ N8 i7 u( m. d7 h
1. 升级到CMSIS-DAP v2.0最新版。* a; c# @: M6 q+ g
2. 实现了SWO的主要功能,即printf转发至SWO口。5 h  _# G, _7 I
3. JTAG功能正常。
+ m3 Y6 x2 U% j$ ~6 W4. CDC功能,使用串口2(PA2/PA3),已经改进。- I$ C' P5 a+ x# ]- _' {( Y
5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。
+ W2 }# D0 n, F6. 针对STLINK的廉价硬件,做出了改进版本,稳定。( N8 ~* @; K3 S9 z, y/ |
  c% f3 p; f: n- G' T+ P( I
HW_Connections.jpg . w0 E  x1 p' C* \4 L* o/ c

: G7 y% s( C. Z2 f- H 1.SWD_Remapped.jpg / W3 j2 h- X6 H/ s
& H# q3 X8 W, s1 [+ x. O1 X0 |

3 l$ q- n5 _) B* l STLINK-01.jpg : N7 b5 G; z6 u( m8 X5 J8 ~
/ u; ]2 ?5 s  j; J* i
STLINK-02.jpg 8 Z. w' w, I$ e/ N1 U. u
; i. C4 O9 b8 P8 x
STLINK-03.jpg
& }7 L! p! o- t+ L3 A& s; z! b' }
9 ]- i. ~; w) v5 P8 t3 I" T+ ^1 F8 r Schematic(part) STLINK_V2A_V2B.jpg : N+ z7 q2 r1 a0 W8 s/ w2 F
# R- ~/ e- |0 t2 A% K$ C0 \1 n
Readme6.jpg
( U/ w( ?( e& Y
. E+ E: Y: R, W* o  ?. ?9 F: j: D1 Q2 R4 D7 z# m. N: a# {
注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。9 ^4 C+ M5 s  r# n2 P% P1 Y
山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。

) _+ i, a8 a7 o1 g& n+ ~4 ]# Z1 A即使卖家声称是ST原装的,也不能完全相信。
: S+ `9 a4 r, r- Y$ j9 q) v
. t! |4 ]- y7 `( S) Q固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。
9 r% w+ d$ V" T" n使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。
. N0 H3 M) A0 U3 L: k; H4 i( G* C8 A1 V
8 ^2 e  f* ~2 Z# \! ^( a

0 Z- L1 B. w3 y6 f. M

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:00: x  l: m1 H/ |1 {( M
可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...
/ y7 p" \, K" i2 }2 i8 o
nRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。
/ s: K" w8 Z4 W6 R/ a1 f/ @" _你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。
) n- Q' u7 j/ ^. _  o- j4 ?4 K1 {9 j& L
你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。 , Y1 |; K% |' \5 ?
或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。
4 h5 Z( z" |7 a; E' T$ w  m% t& W- m) B& k* p

4 ]+ T8 w8 a" ^
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
( M! C2 S3 Z1 }7 I. X( W/ b3 z楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载
1 a! v( w& v1 S$ ~) g6 W; I; I5 |2 ?0 ]
下载到板子上后,USB插 ...

/ E( l! @0 q  U不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。5 w6 Y6 T) k* s9 u7 n- m3 \9 g
9 g3 Q8 Q6 x3 w
我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。8 G/ D# e5 O# R
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
  a  X2 B1 f) D3 t1 l+ mJTAG模式没有测试。6 k: f$ ^8 c; y4 D; v
3 g; E! T. c2 \- l+ s! |; K

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- B: s# R. K' ]( k( J
改好了,调试能复位。. i; S# s3 ]3 u7 q' K6 I
MSD(U盘拖放)无法复位。。。

( R+ [- d0 I# a你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40$ ]( Z! k4 R$ m% @) T
请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?
/ d9 ^: E4 ?$ f) d
通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。+ U0 I& ]+ v/ s8 l6 ^, ^8 ~
(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)
' `  l" O7 p! e/ S' {
, ^  K3 J: I8 i/ \. bCDC功能,Win7需要安装一次驱动,文件在源码包里面有。
& J- Q' R: C% s% _# P+ L6 e. _* D3 B
七哥 回答时间: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独有的。
; s2 d# e1 c3 @; f) H5 Y优点:
$ t9 o. Y7 e# r1. 对原来程序的时序影响很小。
$ c1 u) O4 {4 o+ {3 e. E" K2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。
! h. F! {! t) }" Y3. 不占用串口,却可以方便地使用【printf】功能打印输出。
) c9 l8 ?" S* F+ s  f4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。% o% ?7 N% l3 X. P6 ^' r7 g2 R
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。$ Z( u' ~. L1 @4 U& Y* _
6. 烧录程序,和J-Link/ST-Link一样。* H1 ~4 A" U5 A. V: M
7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。7 c5 |- t* h, ~# q
8. ARM开源的,随便集成到你的开发板上面。/ X0 o2 w, Q! y: ~3 f6 P- N" K
/ S! t" K" t8 o5 v8 p9 g- W4 S0 G
缺点:
* O$ P9 _5 ~3 p/ O( c3 r1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。6 Z/ S% O* C5 \9 v
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。
+ f3 g/ A+ ]" t! c3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。
' |. v  Q& O$ n5 p6 l! ^4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。) c7 G4 T8 }+ d" L+ g! B( \
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。
- c  b* O* `, |' k: f0 u  T. n6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?7 @, z; j3 |8 p5 c! d9 Q1 W

$ F9 K+ ?" j4 N5 ~" C我的板子:
' |8 p1 d; v3 W6 fSWD mode:                                                        PortNo/ N9 R8 V5 ^% N5 `) n
                                                SWDIO              PB9  L* c. V. f7 `" N# [' _$ c
                                                SWCLK              PB8
9 T7 D2 |& `7 D4 U$ @                                                SWO                 PB7' I" d3 T/ V* C: O. T; q8 V
                                                nRESET             PB6# S# b- p8 c& C$ q! Y, S
JTAG mode:
0 I1 }3 Y! a4 H. k' U# U                                                JTMS                 PB9( y, i( w1 [, T% S2 }2 A$ Q2 j
                                                JTCK                  PB8$ }) O3 ]6 N  u2 p  u, V8 E' h
                                                JTDO                 PB7' F7 E: L- J; w( i9 S  ~8 ]
                                                nRESET              PB67 N9 |/ K+ @3 Y
                                                JTDI                   PB5
" Y6 t. `0 B  C                                                nTRST                not available
! I8 R4 Y  u* Z, Y% H0 g                                                4 V7 Y3 U* C" d5 x( k3 S- G! m0 N& E3 D
CDC Function:
1 {3 `: \# O+ `: l                                                UART2-TX           PA2  T+ X0 _% X' W& R; O' K( E
                                                UART2-RX           PA3
; J8 `' c- }. t                                                " z6 I9 a1 C8 L' ]8 g
------------------------------------------$ L) u# b" k7 p) I8 \# z$ q) Z  l
SWD Test passed!
. y" L7 w3 f4 T* ?9 P: iJTAG Test passed!' A0 g0 l9 }( A! p# D. F
- ^# E* i# w/ P8 J* Y; n# b
Individual test results:
+ o. S/ I* \( s" lExecution breakpoint: passed' T" A' p1 L, u
Breakpoint on read:   passed
' V6 \8 v; ?5 mBreakpoint on write:  passed
9 C8 q8 o! |( w/ l7 jRegister read:        passed
) o0 m1 V- `1 ^2 H  x; u! @& ]' zRegister write:       passed, C, ]/ f1 {0 Z! B$ G# i
Memory read:          passed
" ]3 J9 V8 d5 W8 n# v: I: `8 bMemory write:         passed' Z9 m) [/ p% r7 S! d
Control flow:         passed3 V! {! k. {+ u" |2 L7 o
% s2 j9 {7 b( t& Q8 M2 G: _; @
CDC function:            OK- \: m5 A0 R1 f* E( ^& c
SWO function:           OK for printf-to-SWO& L; ]/ t' [1 z% D
Soft-Reset function:   OK for Cortex-M& \( x9 N  x- d2 I- `! U
-----------------------------------------------------------------------------------
  ~. I5 I. ^8 G$ D0 O/ `) D3 R! s% j% s( M
另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。1 {7 M, h5 t1 x$ U' j+ u+ F
3 z5 Z; T( m( I! j
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑 , }, x6 l& w, h: P
; b$ H/ t( h4 }
有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。- i* G/ [  ]4 `
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。/ v9 g" U2 X: f5 V$ R9 U
160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。
1 s9 k8 w$ w% S6 ]5 f& O! g* s9 ^! Y( b( j# \
1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
9 R: S9 b  Q% U( v1 O3 z1 c(选择SWD_REMAP后缀的): M" N$ A4 E2 B8 L1 x1 t7 `
1.SWD_Remapped.jpg 6 ^- u; Q, u5 N4 v3 O2 _1 N3 Z& ^
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
$ Y: O6 ]9 Y  t* C. U- l8 p- oCMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑
. N# E. O! b# ~1 I# R
gzbkey 发表于 2018-6-1 17:38( H  i) c* \; g: x2 F, W- X
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
3 B& u  R$ T+ A7 _8 k  e7 `1 ^" W! pCMSIS-DAP  ...

& k7 D% y9 j( B* B+ ~" Q1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。
- p2 V2 J& ^/ ^. E
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,网络上已经有人移植,但是好像没有放出来。
8 D2 y1 N) i2 W9 j# t# i8 W% m3 d3 f7 |  d: L* s
DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。0 h) e" }: N! ]9 `9 \# v1 E
# U. ?6 j3 ~) `
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
9 Z$ u/ [3 [* k3 s. x& Y, }8 O+ R! r, z1 O* R1 F& X
DAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。
' ?! U4 P( e( P6 W% s% m9 P, l, n5 f
5 C) R. l2 f+ t实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。
+ S' O  q8 x& q2 {
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑 ) J; g# e7 x- U1 L( t  x  |
huangxuejia-292 发表于 2018-6-3 12:44
0 [( U$ r1 Q# F& m, f官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...
6 U- C( n8 V/ ^$ k. c' l
我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。
/ W' m3 F% J  e3 `0 ADAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。' R) r5 Q" S9 k9 }
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑
2 ?6 |2 B/ Z  U" ~' l- L8 i* o) V2 K$ H  P# ~; ^. L9 B
今天测试过一些IC开发板,
1 ~3 ~0 w6 z5 a
/ v7 C: {8 C5 Y1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。
# `# [" Q- U$ J+ C# `% a" g2. LPC824的,正常。
+ \' o/ `! P, q; @% s3. nRF51xxx的一款,正常。' p6 ~3 m! b; F# ?( G( D& k
3 p% m7 J8 c4 c2 ~% l0 a
重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。& [( l4 J- F- @& q  S# K7 C
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。
; r& x! c; r' k! W1 ]如果做成专用的成品小板,留意这一点,就不会有问题。
: v4 K$ N: ^6 w% _# u
6 a' c" r3 J1 D简单的解决方法,: @: t6 C* {* A7 t
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。
& P3 M2 R: Y2 C0 O, e* Y2. 在每一条数据线上面,串联一个47~100欧姆的电阻。7 N) }7 E" k2 y& ^/ X2 k( p

7 {* ]! o0 R6 u4 B6 o4 K4 @0 {2 Z4 S0 L' v) m3 u
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
; y/ h7 V3 G; e- Z上位机关闭串口或者关闭串口工具,不会出现死机啊?9 j0 @% q4 _3 f3 D- o$ q
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。
7 P# L% i4 m  z8 f4 w对了,X大神固件有个串口溢出的BUG。) d( q2 S+ l/ J9 \! O, b
我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:391 I# q- p3 s, V  x& n3 y" z
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
$ H$ `! b5 u! x9 S$ [( I; E) u上位机关闭串口或者关闭串口工具,不会出现死机啊 ...
. e) u2 D( u3 ^7 W% `
谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。
9 f' o# q/ w1 Z* [# J1 R/ A6 X- {
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版