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

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

[复制链接]
radio2radio 发布时间:2018-5-31 15:47
2018-06-30重要更新,附件换成了源代码。
2018-08-29附件更新,与github相同。
2019-12-24重要更新,速度提升,功能不变。

github:http://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO

----------------------------------------------------------------
2018-06-13更新,搞定Cortex-M的软启动,不用连接RESET线,下载后Cortex也能马上自动开始运行。

10元钱能干什么?也许早餐都吃不饱。 可是10元钱在TB可以买到STM32F103C8T6的小板子,著名的BluePill。

BluePill

BluePill

几年前,X893大神就移植过了CMSIS-DAP到F103上面,我觉得这个很好玩!!!

于是我就花了一些时间,在X893包的基础上,做了如下改进:
1. 升级到CMSIS-DAP v2.0最新版。
2. 实现了SWO的主要功能,即printf转发至SWO口。
3. JTAG功能正常。
4. CDC功能,使用串口2(PA2/PA3),已经改进。
5. 实现了软启动功能,使用时可能不需要Reset连线启动程序。
6. 针对STLINK的廉价硬件,做出了改进版本,稳定。

HW_Connections.jpg

1.SWD_Remapped.jpg


STLINK-01.jpg

STLINK-02.jpg

STLINK-03.jpg

Schematic(part) STLINK_V2A_V2B.jpg

Readme6.jpg


注意,现在原装ST的F103不好找了,市场出现大量使用山寨的F103的板子。
山寨的F103有几种,已知的一种是CS32F103xxxx,另一种是GD32F103xxxx,有的甚至直接打印成STM32F103xxxx冒充原装,无法分辨。

即使卖家声称是ST原装的,也不能完全相信。

固件见附件,附件里面有两个LED的闪灯程序用来测试SWO功能用的。
使用SWO功能,需要启动内核的ITM功能。不同调试环境,启动ITM插入源代码的部分,可能有区别,我也不是很明白。



STM32F103C8T6_CMSIS-DAP_SWO-master20200509.zip

下载

3.48 MB, 下载次数: 9729

评分

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

nRESET是受使用CMSIS-DAP的IDE的逻辑控制的, 不能随便修改。
你要的功能应该不是一定需要走nRESET这条线, 随便找一条空闲的GPIO,模拟一下DTR/RTS,很容易的吧。

你用的功能好像只是用USB转串口,那么就应该使用USB-VCP的程序来改。
或者买一个有DTR/RTS线的USB转UART的小板, 便宜得很, 5~10元一个。


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

CMSIS-DAP.zip

下载

1.6 MB, 下载次数: 153

radio2radio 回答时间:2018-10-14 02:01:43
FireHero 发表于 2018-10-9 17:18
楼主你好,我下载了github上最新的代码,安装了Keil4兼容包之后,可以正常编译下载

下载到板子上后,USB插 ...

不好意思,今天才看到,匆匆做了一个,您先试一试。可能问题多多。

我是用BOARD_V1的环境改出来的,发现原来的BOARD_V1就是一部分代码有问题,因为我没有这个硬件,没有办法验证,只能由它去了。 主要是这种板子占用了PA2/PA3的USART2,CDC只好搬到USART1,比较乱的说。您先用用看。
附件的代码,我在SWD模式在F103目标板测试过,CDC测试过,都正常。
JTAG模式没有测试。

F103-DAP-SWO-CDC-BOARD_V1.rar

下载

29.59 KB, 下载次数: 278

点评

谢谢分享  发表于 2019-3-25 00:53
漫步云端-345339 回答时间:2018-8-8 10:58:03
huangxuejia-292 发表于 2018-7-25 15:00
改好了,调试能复位。
MSD(U盘拖放)无法复位。。。

你是用的STM32做的DAPLINK吗
radio2radio 回答时间:2018-6-15 13:54:57
bjrzs 发表于 2018-6-15 13:40
请问,这个最小系统板 通过USB 口接电脑,需要什么驱动程序呢?

通常不需要专门的驱动程序,CMSIS-DAP仿真器是使用Windows的HID接口,使用Windows自带的HID驱动程序。我试过Win10、Win7,没有问题。
(留意USB的线缆要用质量好一些的,和短一些的,以免影响USB的信号质量,市面上太多廉价+缩水的USB线!)

CDC功能,Win7需要安装一次驱动,文件在源码包里面有。

七哥 回答时间: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独有的。
优点:
1. 对原来程序的时序影响很小。
2. 仅多用了一条SWO线(JTAG的JTDO线,F103是PB3引脚)。
3. 不占用串口,却可以方便地使用【printf】功能打印输出。
4. 速度快于串口,我测试过我这个SWO板子,500Kbps可以稳定输出,不丢数据。
5. 其他SWD/JTAG的断点功能,查看内存/寄存器变量功能,都有。
6. 烧录程序,和J-Link/ST-Link一样。
7. 成本低,10元的小板子,烧入固件就成了。不用再便宜了,路费人工都远不止10元。
8. ARM开源的,随便集成到你的开发板上面。

缺点:
1. 速度比J-Link慢,因为F103的这个小板内核速度不够快。下载速度不知多少,10元的能用已经很好。
2. SWO功能只能用于Cortex-M3/M4/M7......,不能用于Cortex-M0/M0+(内核不支持),其他功能可以用。
3. SWO功能只能用来单方向输出数据,不能像串口调试那样可以和上位机互动。
4. SWO功能不支持目标程序中的DMA部分,估计是ARM的CoreSight有限制。
5. 不支持软件复位。我改的软件,20180613版(见1楼)已经增加软件复位功能,只支持Cortex。
6. CMSIS-DAP的最高速度,还有功能,应该受限于ARM/KEIL的限制,不然商用的几千上万元专业仿真器还怎么卖?

我的板子:
SWD mode:                                                        PortNo
                                                SWDIO              PB9
                                                SWCLK              PB8
                                                SWO                 PB7
                                                nRESET             PB6
JTAG mode:
                                                JTMS                 PB9
                                                JTCK                  PB8
                                                JTDO                 PB7
                                                nRESET              PB6
                                                JTDI                   PB5
                                                nTRST                not available
                                                
CDC Function:
                                                UART2-TX           PA2
                                                UART2-RX           PA3
                                                
------------------------------------------
SWD Test passed!
JTAG Test passed!

Individual test results:
Execution breakpoint: passed
Breakpoint on read:   passed
Breakpoint on write:  passed
Register read:        passed
Register write:       passed
Memory read:          passed
Memory write:         passed
Control flow:         passed

CDC function:            OK
SWO function:           OK for printf-to-SWO
Soft-Reset function:   OK for Cortex-M
-----------------------------------------------------------------------------------

另外,安装时,HID不需要驱动。CDC功能,Win7需要安装1楼附件包里面的驱动程序。

radio2radio 回答时间:2018-5-31 22:56:47
本帖最后由 radio2radio 于 2018-7-15 00:11 编辑

有关CMSIS-DAP的项目,在硬件成本超过20元的板子上面做没有实际意义,这也是我集中精力做F103小板的原因。
50-100元,可以买到A货的J-Link v9, 性能比CMSIS-DAP好。
160元可以买到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,开源的)。

1楼的附件里面的源代码,或者固件,也可以选择重定义SWD引脚的,这样用起来更像“真家伙”,特别是只用4个引脚的时候。
(选择SWD_REMAP后缀的)
1.SWD_Remapped.jpg
-- 回答时间:2018-6-1 17:38:58
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
CMSIS-DAP v2.0 有没有软件复位???
radio2radio 回答时间:2018-6-1 23:46:18
本帖最后由 radio2radio 于 2018-10-27 12:11 编辑
gzbkey 发表于 2018-6-1 17:38
厉害了,我现在用的一个dap,没有软件复位,必须接硬件复位,然而接上硬件复位,完全无法识别
CMSIS-DAP  ...

1楼的最新版,已经加入了软件复位功能,仅对Cortex的MCU有效。
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,网络上已经有人移植,但是好像没有放出来。

DAPLink的硬件github仓库已经有STM32F103C8的原理图,但是固件仓库一直没有STM32版本。

我觉得二三十块钱用DAP还是可以的,V9毕竟盗版,有时还丢固件。

DAP现在一个比较大的问题就是MSD,一个目标文件一个固件,烦人。

实测KEIL下载一个2400K的axf文件,擦除,编程,校验,大概26秒,这个axf对应的bin大概297K。
radio2radio 回答时间:2018-6-3 13:56:33
本帖最后由 radio2radio 于 2018-10-27 12:13 编辑
huangxuejia-292 发表于 2018-6-3 12:44
官方的CMSIS DAP已经改名叫做DAPLink了,大牛可以将DAPLink移到SMT32,网络上已经有人移植,但是好像没有放 ...

我也看过DAPLink,它要求有较大的RAM/ROM来模拟U盘,STM32F103C8的资源有限,我估计github没有的原因是这个问题。
DAPLink的底层关键部分还是CMSIS-DAP,目前用v1.1.0。
radio2radio 回答时间:2018-6-3 20:25:58
本帖最后由 radio2radio 于 2018-6-26 16:02 编辑

今天测试过一些IC开发板,

1. 两款STM32F407xx的板子,JTAG/SWD正常,SWO正常。
2. LPC824的,正常。
3. nRF51xxx的一款,正常。

重要提示,由于这种F103最小板的GPIO脚,没有加任何抗干扰的退偶稳定元件,都是直接连接出来的,所以,高速运行时很容易被干扰。
建议不要使用长线连接和排线连接,使用分开了的短线会效果更好。 如果直接应用到您的项目之中,建议几条数据连线外加退偶零件。
如果做成专用的成品小板,留意这一点,就不会有问题。

简单的解决方法,
1. 在Keil里面设定低一些的速度,我测试过,设置速度10MHz与1MHz的下载速度差别只有20%,建议使用1MHz。
2. 在每一条数据线上面,串联一个47~100欧姆的电阻。


wujique 回答时间:2018-6-3 21:39:09
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
上位机关闭串口或者关闭串口工具,不会出现死机啊?
CDC长期插在电脑上,串口确实会死掉,电脑收不到DAP发出来的数据。
对了,X大神固件有个串口溢出的BUG。
我可以寄两个我的样品给你看看,不过我没有引出SWO。
radio2radio 回答时间:2018-6-3 21:59:24
huangxuejia-292 发表于 2018-6-3 21:39
我做过X大神的DAP,也是103。用40cm的杜邦线,没有干扰。
上位机关闭串口或者关闭串口工具,不会出现死机啊 ...

谢谢,您再试一试,我用回X893的代码,CDC死机问题一样有,证明不是我改动后出的问题。

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版