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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。
7 k  t: s1 \% s2018-08-29附件更新,与github相同。
* M9 t' L$ k, i4 ~2019-12-24重要更新,速度提升,功能不变。* m- H! J- Y4 j& g2 \! C

/ ]9 ?, n; K; }7 Rgithub:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO
& s; }4 j6 E( R, N6 m, _7 {2 ^+ ], U2 {
----------------------------------------------------------------
- ^6 Z0 z6 @1 I$ C  v2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。
. _6 w4 V* x# Q1 Z# v/ `$ J, }1 D, M: c& |# t. G+ W" s
10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。) T, p5 ?. @1 \0 t) K; ]$ ^, w

BluePill

BluePill
1 H4 \" q0 C% U; p7 q. R& k
几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!( _$ }* l/ x% x1 I' j( @

# K* M( M! r$ o于是我就花了一些时间,在X893包的基础上,做了如下改进:
/ p/ H( D9 o0 K1. 升级到CMSIS-DAP v2.0最新版。
( i# i# T! n7 ]- I) t* l; J2. 实现了SWO的主要功能,即printf转发至SWO口。, M  L: J- K/ |5 \! X6 ?+ I3 D. l. m& X
3. JTAG功能正常。8 W' ]- V8 i+ a5 v2 x
4. CDC功能,使用串口2(PA2/PA3),已经改进。) {' j8 N  r  L3 W6 U
5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。
$ X" U; q) r: L: o6. 针对STLINK的廉价硬件,做出了改进版本,稳定。
# Y) v5 a8 ?+ [$ s# c7 i
2 d) A8 e( y  E HW_Connections.jpg
! n0 E! K/ o, D+ |9 u
% R/ L6 X& K- M- e' I 1.SWD_Remapped.jpg ) i6 E5 k" K" c* H5 ^
: S! @2 t- V' r- w# z/ F) Q. G9 G
) m) S( _) d$ T) p% _' Q
STLINK-01.jpg
1 c; K/ G: [& \: u  c/ \+ a2 B
* I6 z% j) B+ }- [5 a9 r$ g STLINK-02.jpg # K- v" o( o# P  A- Y9 R5 t' o
. ]/ z; C6 ?% K" n, K
STLINK-03.jpg
7 _2 p  P( Q: a: F
5 N# w; b: ^% ? Schematic(part) STLINK_V2A_V2B.jpg & z$ W- w4 m) |1 b
6 L  x& H4 [/ D% S- [
Readme6.jpg 1 L" y. L/ K; V. k- u9 f& Y2 }
$ I; @4 q1 X1 ^4 Z0 v3 n) ~( `

$ l; m5 `7 ], `$ Z3 |; e  A. s' e' Y注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。5 }6 b0 U. i" M  q" C" a
山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。

5 v4 [# _7 j4 A即使卖家声称是ST原装的,也不能完全相信。1 y8 B4 p, o# x3 n/ F3 o+ u

$ K' N7 p( \; N% o+ G  T固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。
8 X/ c8 d$ ^* b使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。% n8 {7 j* P+ v* }

  u( Y; `; Z+ f9 W! C- z- f* J4 A& V8 a+ @/ g
: b0 s; u! L. Y; V* k3 d2 ^

STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip

下载

3.48 MB, 下载次数: 9744

评分

参与人数 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; ^, Y% k3 S4 C6 v: N. E4 u: ]
可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...

# O% G- ^. V3 o) t1 l! m& ~8 qnRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。2 y( a4 y% i3 B! g# Z7 ]/ @1 {
你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。' n2 `8 \6 x/ p/ {  [

+ ]8 E2 Y( \  c3 r0 \你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。
. `7 ^5 ~. v) \4 u4 \2 ?或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。) u8 u2 e5 r' V
- F/ c' b" t% S3 j/ W0 L, n' x

" _0 M& _9 y' V7 q% T$ n
happyavr128 回答时间:2020-2-4 17:26:56
楼主大神啊!
kernerl 回答时间:2019-12-7 13:30:15
找到一个可以编译通过的文件,不过好像有个DAP_config.h这个文件的版本不一样。

CMSIS-DAP.zip

下载

1.6 MB, 下载次数: 174

radio2radio 回答时间:2018-10-14 02:01:43
FireHero 发表于 2018-10-9 17:18) g3 m$ Y+ o$ p9 o- o
楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载$ Y9 Q: G& A" R" @2 D( r+ W
% k1 Y7 E' H; z' y. n1 E# W
下载到板子上后,USB插 ...

$ |: n) g/ f8 \5 P0 |0 o7 p' v) w不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。
# `6 z/ Q( [7 }) Y
( j& C- p, B# @; w7 s- ]* j6 _/ X我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。
4 F6 z7 v% i! S6 K' {& t附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
& r9 b; l5 }) U. fJTAG模式没有测试。& P6 Y$ H* B3 Z& n5 R" n% A

& o: b9 v  `+ P" I& g  _

F103-DAP-SWO-CDC-BOARD_V1.rar

下载

29.59 KB, 下载次数: 287

点评

谢谢分享  发表于 2019-3-25 00:53
漫步云端-345339 回答时间:2018-8-8 10:58:03
huangxuejia-292 发表于 2018-7-25 15:00
8 A; t4 B! {0 ]; i) x( N改好了,调试能复位。
* _$ a5 t/ S/ R3 a& R# m( n9 p/ J% vMSD(U盘拖放)无法复位。。。
. u' d/ z, Y; D, ?3 E1 F" k
你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:401 o' e  I* k( T& M4 l
请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?

4 V: y( Z/ C; g* Z! S通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。
0 S9 w8 G3 J1 u7 u& o5 W(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)  R: \% r2 `* n" g4 T8 M
7 j9 T6 H6 ?+ _/ B  p( K0 m
CDC功能,Win7需要安装一次驱动,文件在源码包里面有。
, h& y5 R" C1 i3 p5 O9 _" U  O& e0 A/ [5 U5 a& 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独有的。; ?4 S+ C- k! o9 W0 t! E
优点:
  }  L- t1 _9 u$ w, H- W4 j/ J1. 对原来程序的时序影响很小。; {5 [1 U! Z0 r$ @& u
2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。
$ d5 p, @8 J  E9 I. {3. 不占用串口,却可以方便地使用【printf】功能打印输出。
& I+ G! b7 s3 A. w' N: l4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。- |; ^* I. r, H; b
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。
0 k( ?' w* x  Z: G( y% W6. 烧录程序,和J-Link/ST-Link一样。
! _4 g% V6 S4 }- Y# I) y1 ~7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。' p  \  s; \* v8 M! O! V+ K1 Q" ?
8. ARM开源的,随便集成到你的开发板上面。
. ?! m- Z0 e2 M' Y+ B
/ o6 a; A5 Y  k8 w5 S* u  W缺点:0 A! g5 O$ e% o, W3 }+ c0 `3 p7 S
1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。/ ]2 g  s3 R& t  {
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。
! B- W, p' E4 t3 h! M$ D9 R3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。
4 M0 C/ Q( I5 L( ~2 K  `4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。1 [% g' N' `0 F! M, t$ g
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。0 _4 f) f; L5 C, j0 ~) b% f& ^
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?( d7 Q5 E2 l- t2 O, L
5 |) l% K' ?0 T3 U
我的板子:
& s, ]  g8 D& xSWD mode:                                                        PortNo
8 P% c9 Y% F6 t% ^                                                SWDIO              PB9
; o0 P2 j( C- F$ V                                                SWCLK              PB8
* W4 g; q5 S' F3 o: ]3 e                                                SWO                 PB7
+ }. `" ?% k& T$ ]: }# H/ R: [                                                nRESET             PB6" J) U' j3 O) x7 a( _
JTAG mode:/ p8 a$ Q1 ~& U/ u% l, m
                                                JTMS                 PB9
& H4 J: k8 M% N& i8 |                                                JTCK                  PB8' p) U8 s" [) e- l3 _
                                                JTDO                 PB7
2 ~, L. B6 L6 Y                                                nRESET              PB6* ~) k1 ?6 F3 h  L) i
                                                JTDI                   PB5% f7 g9 x( g8 M
                                                nTRST                not available6 ?! Y& Y3 H% x, l5 V/ ~
                                                
: u" v" x7 C  T" lCDC Function:
; K7 s6 F4 g2 ?6 A  a                                                UART2-TX           PA2
( K. ~0 x- _8 t  T: s  i                                                UART2-RX           PA3
# e, u- u4 Z1 c5 @                                                
5 h, T' m/ }- a  X0 I9 W( `/ D  {* m1 j------------------------------------------9 w, Y- y# ^4 e" T# X
SWD Test passed!
1 `2 Y* ^% v+ U4 @: l) s! [JTAG Test passed!
1 j0 D, H. [! P- V( G8 A+ B5 V* w0 Z$ K
Individual test results:
4 ~; B% z' ~9 _$ tExecution breakpoint: passed
# x1 ?2 u2 A$ v9 q* bBreakpoint on read:   passed8 B2 D) E# X3 ^; v
Breakpoint on write:  passed
1 p% P/ m& W! _7 SRegister read:        passed! l( E! T: y5 ?
Register write:       passed
# X. {9 o; d1 w" {Memory read:          passed
  x9 L5 i1 ~) A4 x: W1 @$ D/ yMemory write:         passed
0 A* d! W) o- [. K! w" e2 u, h7 _3 XControl flow:         passed
6 j. ~- `( n7 a- P) p% I2 y8 U
+ H1 _+ }. N5 H, s- i( ~: @% `, O5 PCDC function:            OK* E3 W% J! Z7 G% {# E
SWO function:           OK for printf-to-SWO( N2 h: w- {: w( k
Soft-Reset function:   OK for Cortex-M3 D8 n# j' K9 v! z' p6 K; M) D
-----------------------------------------------------------------------------------
/ {, ?! e9 ~& r+ b9 _1 P/ o) Z& U& m
$ W' g) R6 c; J$ N, n另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。( u1 [! s! ?5 D% ]
. P2 L+ @+ [) J! K% M' v
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑 7 W0 L+ }% H4 U

  J4 ]0 C5 @3 |5 a2 W! s) W! q  ]有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。7 x9 H4 p$ H; n. P- @% ^" T! p
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。
/ w6 s+ D0 A4 [2 E160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。' N1 z& p+ K7 a& L& |8 Z8 b; T

8 O' U  b  l% r: t7 k' @0 i8 ]1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。5 J5 ?2 D6 M- [/ O! R
(选择SWD_REMAP后缀的)* K% ^! _. I: S2 o/ Q6 i
1.SWD_Remapped.jpg 9 E2 }! d+ @3 T: z1 X; r& p6 d
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
8 K% ~. ]1 O0 ICMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑 4 `7 f' A0 n$ P/ v5 C
gzbkey 发表于 2018-6-1 17:38
7 S2 h2 M) @3 i; x厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别4 e8 f4 d9 `5 B# ^( X# R: X5 d
CMSIS-DAP  ...
& |' l. O5 J8 }
1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。
8 L3 G" A1 ^" s7 D
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,网络上已经有人移植,但是好像没有放出来。" }- u1 Y8 j7 F- [! C* i  M

3 M( R# e# H) K: w0 Y- O3 iDAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
5 `1 b( K  p- _7 K4 a' l  ?+ M3 J. h; H2 Z  t3 j0 J2 @0 D
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。9 w9 W+ d4 f1 D. n* E% k2 d1 c  c

" p7 T- o9 Z5 j- _DAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。
; j, v# Q5 s/ s0 H0 X/ \  {
1 G' h& Q; R. u( I* ~0 }实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。: H, \7 {1 L3 A' P, _  v9 u* J
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑 + i) N; z7 J; h2 Y9 G
huangxuejia-292 发表于 2018-6-3 12:444 T( g2 x' F+ W  G
官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...

1 k" T( G+ w9 m我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。
+ E) d% D) u9 I) uDAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。3 V% _. b+ j: f: X) _" e2 ]3 s$ k
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑 : C& Y) b. X# r3 c( Q7 ]- z5 L: |% Y

3 ~/ {0 ^: A9 b( [0 Y' V. z- L今天测试过一些IC开发板,
: ?( |' e$ A- o; K; ]1 S
6 i! ]1 X$ F* ?8 f! I. W1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。2 M" V2 k5 M" }; {: b8 J5 U
2. LPC824的,正常。% Y7 q/ a& f6 T  t! x
3. nRF51xxx的一款,正常。
2 V+ U; Q8 T! J  K
$ b6 ^) }. _( @, a  J5 g; a0 r重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。
$ s6 }1 e+ e! u( ~1 r) n建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。
! C$ f' q% ]# G6 b) B, b如果做成专用的成品小板,留意这一点,就不会有问题。$ b& f5 J, h' P# d' A! s
. K  Y: u8 F7 K# l
简单的解决方法,
& A, F0 T8 F9 f& U# [) p1 Y1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。5 ~* k2 }5 t) y3 e& C  Q1 H# f
2. 在每一条数据线上面,串联一个47~100欧姆的电阻。
$ x$ V3 c9 }0 @4 j8 D' r' c, z# r' K" V$ Z: ~6 L1 f/ m7 X5 c
# k3 x" ^7 v4 Q6 z* Z
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。9 T$ T4 U' O" b7 q
上位机关闭串口或者关闭串口工具,不会出现死机啊?0 q9 v2 u. H( y& k+ q. ~$ h+ Z% x
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。- H: B9 c4 S& m/ ]- M
对了,X大神固件有个串口溢出的BUG。
, T' h) s( z4 k% U' [我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:39" Q5 @5 [3 l2 Z  _9 J. c- g2 }
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
* F7 {( i1 D+ |, e上位机关闭串口或者关闭串口工具,不会出现死机啊 ...

" c4 G1 Q# T. I  l* D. v) w1 [谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。
6 b3 K  B% ?, A0 ]

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版