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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。  l# l6 G- {* g. j! Q0 ?% x; b
2018-08-29附件更新,与github相同。
0 S1 ]: m. `3 k- h, K. b% H. y9 |2019-12-24重要更新,速度提升,功能不变。
% U6 X: s9 s* B
3 h4 M5 F# F. k5 ngithub:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO' k/ m5 F, k! G: p# y4 C3 B
! b: W8 p( H# p  _7 h2 M
----------------------------------------------------------------: |9 e; S3 ~9 h8 L/ D' k
2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。
0 \, P/ Z7 B0 V' N4 w1 g) g
: t6 _4 M" Q# M$ A10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。7 |% R; Q1 b& a3 S6 v9 U: M

BluePill

BluePill
; u; J- z$ G; q, K! \8 j/ t  W
几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!
+ K8 l9 a: B& |; u' A1 L9 K4 O3 v; L( {
于是我就花了一些时间,在X893包的基础上,做了如下改进:1 r0 \# _/ e7 u3 ]( j7 T
1. 升级到CMSIS-DAP v2.0最新版。6 `9 |, h( |, d0 F5 q4 _% \. M
2. 实现了SWO的主要功能,即printf转发至SWO口。
7 F& i- `* A( [- F& J# Y3. JTAG功能正常。5 B9 y) v1 B" h; a" O; u
4. CDC功能,使用串口2(PA2/PA3),已经改进。
' R+ d5 _! q$ B; }5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。
& y. a( p$ @/ O4 c; D6. 针对STLINK的廉价硬件,做出了改进版本,稳定。* P* {7 ?% x3 B% N* a: o

* ^% _' v( b: _/ z' W HW_Connections.jpg
! m# z+ G, T: ^3 W
* z! Z+ J5 ~. d) G* W3 @ 1.SWD_Remapped.jpg
. t0 ^* B+ |/ d5 u! r
9 b% E  j4 [9 J% W3 d" k4 r& p3 n# F9 {3 [5 \2 J0 S- r
STLINK-01.jpg * n$ E% Y$ q7 D0 n
3 U7 E7 Z8 L; u- U4 X; v3 F
STLINK-02.jpg : U! f* L9 |0 o& D( c3 M. y" r1 k
* v6 N. x, C( S; u9 X8 @
STLINK-03.jpg
4 C  R8 n2 N2 t8 i: W% ?& x2 y. Z0 }  }/ i
Schematic(part) STLINK_V2A_V2B.jpg 2 l! y3 O1 y7 H" T0 b' W2 ~4 s: |
; h/ E  v" V% I  s8 E! g
Readme6.jpg
( a. T8 Z- L9 O" F8 F+ b# ^* q" m" r9 T; r" w; f0 O2 L

  v. s9 X- u9 `0 q7 g- C" y注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。
' J! f- _1 H- i7 x: F山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。
/ k( m' s0 [% D; d1 _; ~) j5 Q+ \) a
即使卖家声称是ST原装的,也不能完全相信。
0 o% k+ S) a/ F# \- p% d2 y0 y
7 n6 [0 u& Q& v, Y固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。
7 f' G2 n' I: u8 ?0 F* i4 r使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。4 {' D! y4 W3 S0 ~4 d% j

5 m2 y6 x& q/ @# i: `) T: p
( K, ?6 N& M: N: }( Q& j; v, @
; r) h. N- h, {- Y0 s

STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip

下载

3.48 MB, 下载次数: 9657

评分

参与人数 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/ y$ N! q6 h- _
可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...

- |& L, I. c- U- d- PnRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。, ?; S5 U" {& Q3 W, j/ g
你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。
. N! ]/ v% u# q4 ]1 n# W. t1 d" l9 @9 H8 r5 ?+ d
你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。
) ]# L0 ?; R, p9 @2 I' O) Q或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。" `2 R/ C- S. r1 M: B( u
+ Y  V) l8 F7 A

- p( v/ D5 [2 \+ T, S; C; X$ u( d
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
, j; c4 C- C+ o9 ?7 ^  I楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载
6 _6 G$ l3 V% p- M* D6 L
6 N0 _% Y' Y2 {8 h) R下载到板子上后,USB插 ...

5 `# {* h/ D& U, `不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。3 y: A2 m* n2 I0 t/ M4 C

3 K5 P: X. \9 `0 p0 g4 @我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。# J0 E2 A+ ?- B+ `
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。+ B% P$ I: [% v
JTAG模式没有测试。
+ @4 _+ f6 m4 L9 ]
5 p) X  f; m4 w& ^7 |0 J) Y; W9 i- Q

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! _* O" ^( B/ v5 ]( K. ~" {
改好了,调试能复位。  ^' w+ j6 N, `0 @1 F( {' D
MSD(U盘拖放)无法复位。。。

( W' B7 [" B, z, Y7 o4 u你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40
; b! ?' V; N" I请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?
  l9 s& ?# A5 ]- g; q, C& p+ O
通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。( K% x) t* g' e( d$ J1 P, C2 f
(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)) R' ~' S2 T, N' U3 s% H

5 |( Q% e; Y1 `& C- _5 iCDC功能,Win7需要安装一次驱动,文件在源码包里面有。  D+ E+ l' R0 h" [9 o% [3 S
0 E$ {) F+ Q: l' h% K6 E  I% W
七哥 回答时间: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独有的。
# e5 ~+ @) E1 Q! y  a: v优点:' W5 ]* j$ C( ^+ I0 z6 ^
1. 对原来程序的时序影响很小。
2 c: _( `2 A" A+ N* m4 j  p2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。( p- K$ J+ e9 W  F
3. 不占用串口,却可以方便地使用【printf】功能打印输出。
' L. {, I$ s# H, g0 z6 K1 W# s4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。) ~! p0 \& J! {1 Q# Y+ ~
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。
/ P$ |$ P- }! r5 h6. 烧录程序,和J-Link/ST-Link一样。3 K1 V/ @  A* K7 Y) g: t
7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。
! p) g& l  V8 H, J8. ARM开源的,随便集成到你的开发板上面。" R. m4 [( y! y' `/ B

: y1 G6 |: p; ]7 k$ L  ?缺点:
8 B& M- j. d4 g! E1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。1 e$ d8 \5 w* o; b% h: X1 y3 r6 h; W( K
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。
! i' G6 O9 ^% f4 u$ B1 a& c5 X3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。
/ W/ |3 Q! f: b5 W7 ]. Z/ e4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。. E$ P- d7 I1 z: x* B/ }' }; c& Z
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。
% B0 p# l( v6 T6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?
( i& \8 ~0 F4 u- B2 [& J& h) s% O  K2 \% h% @4 `
我的板子:
& R! b4 G, j) |3 l6 T5 RSWD mode:                                                        PortNo
) d' C6 E7 o+ U, ?; c3 p& X# S                                                SWDIO              PB9
) h5 l5 ~6 h3 t0 `9 W4 |                                                SWCLK              PB83 X( V- x/ u( M7 k
                                                SWO                 PB7- @7 H; _6 V5 [( h# P
                                                nRESET             PB6
7 x  L! s6 t/ Y! y9 jJTAG mode:
6 X& N* W3 H) H4 l8 |  J+ t) Y                                                JTMS                 PB93 r* y8 {: h! H9 B. F" }; r
                                                JTCK                  PB8* I. z0 L2 S& ^- X5 e: Q
                                                JTDO                 PB7
4 W3 N6 @3 w4 f4 d* _9 A9 X/ N) G3 C                                                nRESET              PB6
, U( H: `9 A/ f* u  C! ^                                                JTDI                   PB56 d9 R% I! e  J( y+ R" a; K
                                                nTRST                not available" L% [( V2 ^+ B% N  w
                                                
5 A  X1 d; p. {/ D0 e0 v/ qCDC Function:
3 ~$ S( i/ A9 q                                                UART2-TX           PA2
2 n0 g. e! [8 R: o) P                                                UART2-RX           PA3
0 x4 q7 ]9 b3 A                                                
2 ?% U# Y4 I& F( W------------------------------------------  z3 N9 d: l4 n( q/ i% }3 T
SWD Test passed!
9 k8 T8 A. s, ~2 W$ r6 a7 F& SJTAG Test passed!
( `* e* i# U) Z1 ?" z; C$ h8 ~
4 b& A! T( b6 s  JIndividual test results:
' Z! `: _+ v; @" jExecution breakpoint: passed
6 w/ K9 _& D! I4 I" \9 WBreakpoint on read:   passed+ _) [  k& ?3 z0 [
Breakpoint on write:  passed* E2 w* N& i0 d
Register read:        passed
6 d) x) ^5 a) s" m( kRegister write:       passed
" p, f' t+ ]% `" @6 L4 UMemory read:          passed& e2 Q9 [% G' L. [8 {
Memory write:         passed
! }# V7 Y& d$ w3 o: L% YControl flow:         passed
1 j% O0 F0 `) O; m6 m9 r, F# y: [$ `6 Y
CDC function:            OK
* v5 r" y4 y8 X3 c& a- s5 \! E+ JSWO function:           OK for printf-to-SWO
6 F1 k* m& [% H! `6 w6 |  ~Soft-Reset function:   OK for Cortex-M
  ^- N, b% a& @1 v-----------------------------------------------------------------------------------
. T. W! y6 @/ \% A" D& N: N$ j2 O  v# y) J2 f1 i$ l* H2 K
另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。" l7 T( W4 h* y( O2 {& R
% U: z: Y% \  s
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑
) b$ s/ V' r4 A9 d8 K4 M2 b! g7 Z0 V( i% |- s; `
有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。9 C  z, g* P0 ?) x2 I' d
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。3 h+ @0 Q) s2 E. Y/ D
160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。
! d  _& S5 k! K! l! [  U! o3 x6 O9 @) o2 A/ z
1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。" c  X8 I2 c0 s3 h1 }* t3 n
(选择SWD_REMAP后缀的)$ z: D. M* l' R, E( f4 C
1.SWD_Remapped.jpg
) ]6 C9 H7 R5 \3 Q$ s$ {" Y
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
; J2 k: W) M$ n* D7 UCMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑
, e4 c2 l! K4 B! S, [  R! {' Z
gzbkey 发表于 2018-6-1 17:380 D! o0 S# I7 @# k
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
3 A3 ^6 m# S' l" wCMSIS-DAP  ...

) D  T5 G" r6 l2 w- C  P* a1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。9 o* f$ M/ x8 G8 k% Z8 M3 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,网络上已经有人移植,但是好像没有放出来。
9 o, F5 t8 w1 u( t; {- K9 {$ a, j9 q- }/ H
DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。! F- \, Q: d1 k* Y7 a7 S2 G' T$ L
. E  l: D# B" A- n/ {2 V. \* u
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
9 {; X9 t6 W: x! U
+ [0 x5 z* B$ y# ]9 Q8 dDAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。
) j# j. q, l5 J( m
9 ]0 U& a0 M* a4 X* \实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。9 ~1 t7 D9 @+ u: Z3 E! r, l
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑 8 d- z* S5 R  z; M
huangxuejia-292 发表于 2018-6-3 12:44
4 A" V5 ?6 t: {9 I官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...
$ S4 g* N) M  ]1 d8 c
我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。8 H5 k  S5 }0 s6 I! k6 R4 w
DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。
* ~* t0 d$ S5 Q5 Y$ T, d( b% y3 J
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑 - ^+ [5 Z- ?" P' {
  Q9 q6 S. H' r- F- D
今天测试过一些IC开发板,
6 D. P: C, S4 s. f" M" k3 K, F
% f+ h9 k9 e. Z! c4 q1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。
3 d% O* ?0 [' I2. LPC824的,正常。2 K, x! ^: `4 B1 l
3. nRF51xxx的一款,正常。+ \, R" F! I; m
. ^* W& G' q8 X! E
重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。
, _- B& I* ?. U- u. [, |8 }8 }+ I  O建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。
1 ]9 i& R/ d9 o如果做成专用的成品小板,留意这一点,就不会有问题。" C9 d  h% g) L+ R
; X3 g4 x5 T8 m# d
简单的解决方法,, [" c4 E. l8 v
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。4 j5 L% N, m% e2 ^' G
2. 在每一条数据线上面,串联一个47~100欧姆的电阻。1 ^! D/ Q( x: o3 q% n
( ?& F# G8 }+ n: _; s, V9 U8 [: k8 S
1 e! ~9 q  q, t% h1 \
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。1 c$ X9 }% r4 J; T7 O# q
上位机关闭串口或者关闭串口工具,不会出现死机啊?1 z/ E; Q7 r- ]/ [; y* U5 ~
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。
4 {8 k& q' W' i% L对了,X大神固件有个串口溢出的BUG。8 c# x  f& o7 S; d
我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:39
+ d, f, j' v1 b1 _+ q- L我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。( e) p: u7 G" t; T
上位机关闭串口或者关闭串口工具,不会出现死机啊 ...
. \" _, D0 d5 W1 I2 G7 ]2 Q: r
谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。4 i. h( F9 @6 X: F, P
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版