2018-06-30重要更新,附件换成了源代码。- l: G! w- M% U. B. z1 g. ?7 ] 2018-08-29附件更新,与github相同。1 F. i1 R$ h6 \# W 2019-12-24重要更新,速度提升,功能不变。! w/ F9 g6 b) t6 u $ W, n- C- n# H* Z github:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO / A( v0 y* b+ ]$ a6 ~2 F1 v% B( d ---------------------------------------------------------------- 2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。- V2 [6 [2 a- O8 C$ I1 I& I* P+ g 10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。* L% O5 s. s4 u |/ y5 X BluePill 几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!- b, I6 I! G& \" V H$ P1 K" ~ 于是我就花了一些时间,在X893包的基础上,做了如下改进: 1. 升级到CMSIS-DAP v2.0最新版。+ R( P/ Z! X+ W4 f 2. 实现了SWO的主要功能,即printf转发至SWO口。 3. JTAG功能正常。 4. CDC功能,使用串口2(PA2/PA3),已经改进。 5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。 6. 针对STLINK的廉价硬件,做出了改进版本,稳定。! R5 G6 a1 w& x1 t) O! Q+ Z0 U 9 y* U0 P9 R7 j G: t : `8 I4 Y2 J8 F! E8 v* j : x0 L. s ~% g% p* V/ V 5 t- i3 z# }. W, w1 ] x0 L4 q; `9 N! W4 u; g 4 ?! h1 j, u( i- U1 S 3 m) M2 b) J, d2 O' S 注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。 山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。 即使卖家声称是ST原装的,也不能完全相信。1 f& W# o0 u! Q" E - q j6 r8 q' [# t6 P4 J 固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。0 Q" L2 k1 Q" S 使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。 ) v! ?: a0 C0 }2 `: j ! p& y+ o/ \6 n6 I4 Q4 e$ `1 T7 C |
STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip
下载3.48 MB, 下载次数: 9661
小马哥STM32F103开源小四轴RoboFly全部资料大放送
STM32固件库分享,超全系列整理
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32F107VCT6官方原理图和PCB
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
基于STM32F10xx存储器和系统架构经验分享
基于STM32F1的CAN通信之BH1750
基于STM32F1的CAN通信之OLED
基于STM32F1的CAN通信之之串口IAP
nRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。
你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。1 e7 j( `3 h+ B9 i
你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。 : _3 Y0 L; X# J. q e+ P
或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。
CMSIS-DAP.zip
2019-12-7 13:28 上传
点击文件名下载附件
1.6 MB, 下载次数: 129
不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。
2 l# p* @ n2 T) v, h ~4 B
我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。' W" P1 |0 ~4 [* ?# ~- X3 |4 W
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
JTAG模式没有测试。
F103-DAP-SWO-CDC-BOARD_V1.rar
2018-10-14 02:01 上传
点击文件名下载附件
29.59 KB, 下载次数: 257
点评
你是用的STM32做的DAPLINK吗
通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。
(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)
0 R+ P. \* x7 k. Q3 }) N
CDC功能,Win7需要安装一次驱动,文件在源码包里面有。+ v) J4 \" {6 h* o. S
- W1 K, h- k& s
优点:1 T0 L/ R6 f# y8 I
1. 对原来程序的时序影响很小。
2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。: h! N6 J* X: X- s+ H! d' k. {8 w
3. 不占用串口,却可以方便地使用【printf】功能打印输出。3 w8 d, c8 l5 s- V
4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。2 T" a8 R, y A$ l8 w( A! Q
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。+ |& w" F$ w' q# X; `
6. 烧录程序,和J-Link/ST-Link一样。6 i8 s( k7 a) j: c1 N# V6 \ s5 @
7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。( i4 z3 f k! j% S
8. ARM开源的,随便集成到你的开发板上面。* Y9 l! j( l ?2 o. f3 l+ ^
( H+ H; f0 d) ~: J+ X+ r ?- v& g
缺点:% n: o& H& p/ }6 F$ P& h0 H+ @) [
1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。& t. j. G( a$ }5 \, t# g$ z n% ~
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。: @3 G) L- G4 x( y4 g8 b- V
3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。 u+ ?2 m) x4 ~' W
4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。3 y7 G6 Q# L& o! p$ e( {" r
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?
我的板子:
SWD mode: PortNo7 y! Q% v# V; Y% j* p- C3 [, U
SWDIO PB9
SWCLK PB8) g& [1 ?7 F' i: p
SWO PB77 K* H, {" U* P" b" _7 F! a* ?
nRESET PB6# ]7 a6 u" W/ v6 ]
JTAG mode:
JTMS PB9
JTCK PB80 U6 b, e$ ~1 R( }- U" A- i
JTDO PB7" M8 R @/ ?/ {: h0 m
nRESET PB6
JTDI PB5/ J! I- t: a U1 F" n# R
nTRST not available
& D- `+ t0 n8 ~& Y
CDC Function:
UART2-TX PA2 q* Z4 |0 W) R4 X$ ~" ~
UART2-RX PA3( g) H2 ?" G/ v& y
------------------------------------------7 [, k9 l* {- R- y
SWD Test passed!7 s1 A( a+ I' {$ D: U9 a9 p5 q& c
JTAG Test passed!" j; D N0 g3 x- m
Individual test results:* P! o; O0 w }" t# k' s2 I
Execution breakpoint: passed
Breakpoint on read: passed
Breakpoint on write: passed
Register read: passed
Register write: passed! n$ s) [4 ?- O) `% v" h
Memory read: passed) M; j4 N" h" r- K4 A
Memory write: passed5 Y0 ^4 E* d S# d# u
Control flow: passed0 n* f- E* }* A0 x, }
3 C @9 I# p0 @8 z* ?: R" o0 D, F
CDC function: OK
SWO function: OK for printf-to-SWO
Soft-Reset function: OK for Cortex-M G8 `# ]. v& J8 P" t1 } ?- D* @
-----------------------------------------------------------------------------------
另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。
0 L$ O: r* t8 {; ~; E
有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。: N" D0 S% _$ {# e, U$ k5 s+ _# M
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。
160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。
1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
(选择SWD_REMAP后缀的)% W$ _1 ? y/ Y( j" B% F& w5 V
CMSIS-DAP v2.0 有没有软件复位???
1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。
DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。
, w- O; f% J0 o2 ?# I& _( h) x
我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。
DAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。* N! R) Z9 L! m) x6 F% s
& i/ b c! m" T- h
实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。( v) M, v4 r% J3 _
我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。, c; t$ M) b0 }. C5 M
DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。7 I( F; T) q: @0 A0 I
2 M6 u0 d; @9 W4 d1 V+ z5 ?
今天测试过一些IC开发板,/ K4 U7 S7 E( A- V8 c% H/ R
3 ]5 q6 k. V+ {5 d+ n8 w
1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。7 h2 y; P6 A% |& D
2. LPC824的,正常。" e8 m5 p8 m" s; u$ a
3. nRF51xxx的一款,正常。
0 N# L& j: g, u0 W1 C$ _+ M
重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。( }/ Y" }+ m2 P4 j9 P/ o
如果做成专用的成品小板,留意这一点,就不会有问题。
简单的解决方法,4 r8 U' i; u w; `3 ~9 M! ?
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。 U; Z1 U) l3 c$ v6 `
2. 在每一条数据线上面,串联一个47~100欧姆的电阻。5 u: p' {: |" ]7 N4 N7 [) [
( t, o% i) ^9 _5 S1 W& n* W
上位机关闭串口或者关闭串口工具,不会出现死机啊?& W* I. s4 G! v
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。7 D5 Q4 N; l/ s' T" ~. w, r; I
对了,X大神固件有个串口溢出的BUG。
我可以寄两个我的样品给你看看,不过我没有引出SWO。
谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。$ V( ` {. C9 z- t