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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。- w, G" w  V6 z) T
2018-08-29附件更新,与github相同。6 i; o8 _4 z9 ~+ X8 j) G
2019-12-24重要更新,速度提升,功能不变。
6 r& E/ x1 r8 i) ^$ @8 S* D* [% w3 U+ [% `0 R+ q
github:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO
$ Z& a- F- m, t' H, B8 r, e1 {( L  e$ Y( m# g3 O$ }! M3 I" B* A
----------------------------------------------------------------& X7 L6 i9 X' r9 h0 z
2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。
5 c% Z3 M. Y1 F  z; ~5 M6 O5 }
& V6 {+ e5 f' P; t& x$ u3 y10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。2 X$ ~( A6 Y& L( B8 e! ?

BluePill

BluePill
% k  Z: `# H& u/ o) c% k
几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!! S  ]) r2 o8 p5 e: {% |, i

5 H5 r6 t  f# x# v( I) |! C于是我就花了一些时间,在X893包的基础上,做了如下改进:
, V1 q5 W5 Y6 @' g/ }1. 升级到CMSIS-DAP v2.0最新版。
* C' v, M6 E3 |6 c0 p$ B2. 实现了SWO的主要功能,即printf转发至SWO口。9 d) m' s! N( T
3. JTAG功能正常。
3 L; q; u6 Y  y" f& x- W4. CDC功能,使用串口2(PA2/PA3),已经改进。
: p8 q7 B% p. R4 g5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。
1 p& k) z) `% `+ M/ a6. 针对STLINK的廉价硬件,做出了改进版本,稳定。
( T7 b6 s5 G( s5 ^* F$ j* x7 ~3 s! n/ D/ f1 E& v
HW_Connections.jpg $ v7 D* s, r: W# Q% \# ^

2 H$ J4 h' r& m1 ^3 a' M 1.SWD_Remapped.jpg
( B4 g9 g; P$ F
! Z3 {- T+ C" G3 B. a. b2 ^8 u. f
, d9 `9 ~: t2 N: T$ K3 R STLINK-01.jpg
! ?6 A- T! o. q4 a4 J. D# W; i! P  S
) }  v* I8 R5 ~4 a& o! d0 o STLINK-02.jpg 5 N- L* s7 _9 t: i
1 t5 B  j, {% [) n8 G' d
STLINK-03.jpg + z) i* b& P- I6 q  A4 X4 B9 ?
; Z. a8 }2 K+ h
Schematic(part) STLINK_V2A_V2B.jpg 5 ^( e& Z1 j. c
% M0 v/ e8 |% p# ^2 x" Q; ?% G& T
Readme6.jpg
8 q' O" S) B2 O$ z0 t: A$ G9 t+ M5 x# U4 U
. t/ u# k* l" C9 y$ o6 P" a/ B4 y$ ?
注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。8 i) w* v. h  w( [
山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。

' }: J4 V' e( x即使卖家声称是ST原装的,也不能完全相信。
4 C2 c( Q# O( i$ p3 F; x& |& Y( r3 b% A7 ~1 W) D7 Q
固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。
0 T/ K6 i9 C9 p/ B# N0 A! R使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。
% V; }' Y. m8 s" d% E" x/ v: K; b1 J5 w! C  ^8 W, b# }
4 E) r/ W/ V2 s4 A
/ P1 C+ D/ H$ [6 H0 w

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
  D9 H  r9 G5 J可以把nreset映射为dtr或rts吗,很多软件走的是com协议,或者告诉我如何触发复位信号 ...
, d' x% E- ^( d4 b
nRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。
: _: H5 v8 h7 c0 y2 J你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。
8 [/ G, {8 U+ u- o; F! v2 k3 t5 }5 ]8 B7 n
你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。 4 j2 u+ t% Z5 [2 o( J' L+ X
或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。
8 s  `5 B0 ~% B* ?& ~
$ U* T* X, U6 m& }2 j# E- s# y2 o' n/ g  H& K- `; J6 \
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:187 D( D5 s1 l. ~( k( r
楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载) Z; `' O4 R1 t1 L8 o% J

0 H- z/ a  L8 m  c8 T+ E1 f下载到板子上后,USB插 ...

1 u8 u5 T2 ~- W2 h' H  _  T0 Z不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。' v0 e3 x& E8 v3 a3 B

7 E8 {+ N- x5 E2 Z: U: S% N# N0 [我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。5 l8 i& q' j4 B1 W4 @- S  [
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
, }* h, B( R9 W$ e3 `JTAG模式没有测试。1 R- n! Y7 s# e% w( q

: f- h+ R( ]0 u$ k: S

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
8 c3 h* V2 E3 R, H改好了,调试能复位。
0 P; b# v# {$ a& \4 S8 `MSD(U盘拖放)无法复位。。。
( x: M# X+ X2 m8 H$ e& f
你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40+ P# c: r& p# i! \
请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?
3 E" @. h7 \1 w! O" K
通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。0 @- \( l( }6 E+ e4 ~6 q
(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)( M) f! L, a& b6 z1 J, u0 U
! |& y* O" f/ L1 Y- x
CDC功能,Win7需要安装一次驱动,文件在源码包里面有。4 V- e3 B7 q: \2 l8 g

8 b, X2 Q: Z" r7 V! m7 V" d$ 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独有的。
' ?$ L" P" g! `9 j, q5 i2 Y* m  G优点:4 J. F% x9 u: {1 N6 ?4 T" Q) o1 g
1. 对原来程序的时序影响很小。
& I3 W4 }9 @2 d2 ^0 A2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。5 M& l0 s2 e9 o& x) ~7 ^5 e
3. 不占用串口,却可以方便地使用【printf】功能打印输出。" m3 G; `& k7 [' V! A
4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。
: }2 {3 ^# Q2 P# \6 B5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。
: c5 Y5 |3 X- v4 Y# x: R5 W' z6. 烧录程序,和J-Link/ST-Link一样。& R' U/ O& y7 P1 D
7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。
+ |: H+ E1 {1 G1 t$ O8. ARM开源的,随便集成到你的开发板上面。, Q) x( \8 ]* e7 x

' D7 q# ?/ K- _/ G* S/ y缺点:
* H5 \# H; Q, |1 [9 U, Q' ?1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。
! S8 h* M8 ?: N3 ~2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。
# t+ W5 f3 D1 Q0 `3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。
/ p+ C% d; ~" s+ E& V5 e4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。+ i8 \9 o/ n% S
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。% N9 [0 z7 N6 X  F' N
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?
" s3 R9 B- z3 D
+ X' g' c: T+ h# u! S我的板子:7 L, j5 Y+ d" l2 [9 f
SWD mode:                                                        PortNo4 Y0 n- U/ K# p$ z8 N9 u) {
                                                SWDIO              PB9
: |5 A$ J5 B9 g  |& M                                                SWCLK              PB80 W1 a! E( g) r% P0 m! j5 S2 _
                                                SWO                 PB72 t( _3 R3 u7 j' D) W- p. J
                                                nRESET             PB68 s2 R* t9 s& T; |( z; I/ E
JTAG mode:8 v* O! u5 P" l1 H
                                                JTMS                 PB9
+ f% O7 t9 E- o: B. o( a" B8 b                                                JTCK                  PB8  k  F. `9 j$ L5 t5 u8 n5 }
                                                JTDO                 PB76 U; N1 V# d% y1 T# B, s
                                                nRESET              PB6! C1 h  R0 A5 r- X% S8 C
                                                JTDI                   PB59 f" `7 L' _5 K7 N  `4 R' ?
                                                nTRST                not available: T8 V- w4 n) N" _% }5 r
                                                
/ A" \7 l; Q4 t& s9 l( v2 |CDC Function:3 k. @0 _" A) o3 D2 M) \: d: c
                                                UART2-TX           PA2$ w$ o: U; P7 j% l
                                                UART2-RX           PA3
  Z! ?, W) o% z                                                9 ]+ N' a" k" ~- R' B+ _; D! |
------------------------------------------
9 Z- \$ L1 g7 c( k1 OSWD Test passed!( J: ]: ?: y9 q3 \7 Q7 Z$ Z( ~& x: x
JTAG Test passed!: i- q* `( M% I& W) ]
6 v* L$ v! @5 i7 F$ J. p+ A/ f
Individual test results:9 j* K: T! T; {
Execution breakpoint: passed
5 f: m" ]% M2 |5 K/ D* j" ^5 ^Breakpoint on read:   passed% r4 V+ C: n; I+ Z! A/ c; A
Breakpoint on write:  passed
4 ^7 a% e% t. \+ t* H8 QRegister read:        passed/ n1 g8 N2 m& M1 T3 y5 r* x
Register write:       passed
  N* i3 c2 k* F. @# nMemory read:          passed
9 C( i$ @* w9 E) {! {Memory write:         passed9 s0 C- `7 E1 e/ ?& q
Control flow:         passed
2 E4 v1 R# Q! Q2 k9 v0 z! s; C; J6 V7 I! A. K1 r
CDC function:            OK
; p8 R8 |. M$ ~' M2 @SWO function:           OK for printf-to-SWO' R& W" |3 `, D$ @# B; B5 u
Soft-Reset function:   OK for Cortex-M. d1 b. R( Q* O# l  }1 w: W, |9 ^
------------------------------------------------------------------------------------ T, S0 G" G: d' o9 m1 f

1 r7 t9 t: G5 G% X  R8 Q另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。
4 T3 ~: b4 J( ]# r' f
0 A% A; \) s' P  `' A) u
radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑
, W9 U% N/ u+ D
6 y" [* l& t+ ~- S- H+ }有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。
+ m9 p# `9 }- x4 n" z50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。5 d* u" ~: l* i" {( A. D
160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。
/ D# B% S: I" {& g* X
9 s) b* K% X7 v' \2 Y8 x1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
1 L7 k6 w3 l; g$ l# Q8 o, B(选择SWD_REMAP后缀的)
' `9 j' a4 a; d% k2 k$ r# Y5 d 1.SWD_Remapped.jpg / {3 l: k% }/ p. |+ ~; J+ Q. c
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别( o) w* ~6 ~4 z; S2 m
CMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑 $ t/ r  v2 e* \. j5 \: C# Y
gzbkey 发表于 2018-6-1 17:38- S+ G; J: h: x& n
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别$ N, L/ H. z5 C1 P7 b
CMSIS-DAP  ...

  V9 ^1 q$ E( L% w* Y- z1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。
: f) f. X/ E% G
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,网络上已经有人移植,但是好像没有放出来。
$ t( `" [& B7 v+ R- K* v8 U9 x, X2 w: W" C$ A6 ?6 x
DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
0 a+ F4 T( r4 O
9 }, y1 R9 g( |+ A/ H! ^我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
0 |0 a7 F0 |7 G, v
: ^+ [  E9 T' _DAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。
' {, c! J) ?7 B% b" [, h3 c7 z
( r8 e- t+ {/ ]$ j实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。
5 o. A5 _; [7 G6 M7 k- b
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑 3 I7 [! v( M# l! r: t! C- |8 \( T; F
huangxuejia-292 发表于 2018-6-3 12:44
) U. y+ a. x/ s, t) B7 z% p! K官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...

! r, k4 f( d) M) k$ L- M2 \我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。1 ?3 `9 S; o, n) `0 f; F
DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。: ?% ]8 J! M. {# X+ W" W$ h
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑 ( [/ v' M* `9 C% p: h

5 r  Z1 ]. d7 Q0 n今天测试过一些IC开发板,
+ C: S* m4 A" M! K$ E. v* r; {3 [+ w& B1 K/ j
1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。+ z9 s( b" ^7 n' O2 r! p: n5 {
2. LPC824的,正常。
2 C* H+ n( |7 g. ]3. nRF51xxx的一款,正常。7 x0 F# C+ N* Z2 Q3 N1 y

( _+ H' {2 ]! Y重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。) z: v' J5 Z9 H3 |2 V5 ]  i
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。
- q  j: R! C" S+ i4 p) ^  T  R& f如果做成专用的成品小板,留意这一点,就不会有问题。1 w- m. c* q  V1 H6 W* ^  o
4 h3 ]7 E: |4 f, n: X# M
简单的解决方法,. t& Z$ t6 P. m0 i
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。
" L$ U, d; I; g7 w2. 在每一条数据线上面,串联一个47~100欧姆的电阻。
8 r: i7 j+ d. x$ _/ d0 V0 c2 R$ \2 r, f& K0 U

$ o& e  E8 v5 s& t6 Q
wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
& M1 q0 E0 A0 U/ ~. V! z上位机关闭串口或者关闭串口工具,不会出现死机啊?
  k! r% }6 ]# ~6 qCDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。$ w& B6 H% q, I0 n/ E
对了,X大神固件有个串口溢出的BUG。
, k; ]+ o5 W8 ?( T; g; e& Y我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:39
6 R* B/ |$ S: ?+ n# x0 d. \) Z3 e: ~我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。( _6 h) [4 R* f# b
上位机关闭串口或者关闭串口工具,不会出现死机啊 ...
3 Q# d2 M2 T) a5 `
谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。% p7 d1 R% {) P: e2 o
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版