打印
[应用相关]

一步步教你怎么把STLink刷成CMSIS DAP

[复制链接]
23121|59
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
通宵敲代码|  楼主 | 2017-4-20 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


STLink,开发STM32、或者STM8,相信几乎所有人都用过,
这个东西是ST官方出的,支持所有的STM32、STM8单片机,
而且价格便宜,使用方便,老少皆宜,绝对是居家旅行的必备良品。

不过至于今天要说的CMSIS DAP,恐怕知道的人可能就少了,
相信很多人都眼熟CMSIS,这是ARM公司制定的标准接口,
百度百科上给出如下解释。

而CMSIS DAP就是CMSIS Debug Access Port;
是使用CMSIS接口的一种通用下载仿真器。

从官方网站上我们可以看到,这个小家伙支持所有的
Cortex内核,而且不分厂家。
http://www.keil.com/support/man/docs/dapdebug/dapdebug_introduction.htm



这么好用的东西,ARM官方自然也是提供下载给大家,
如下,至于价格吗,对广大屌丝而言就有点难为情了,
https://developer.mbed.org/handbook/DAPLink




其实不光是ARM原厂推出了基于CMSIS DAP的下载器,
我们用的NXP的OpenSDA,NUCLEO上面的STLINK V2.1
都是他的变种,目前CMSIS DAP已经升级成为DAPLink,
在原先仿真下载功能的基础上,增加了虚拟磁盘拖拽下载功能,
可以结合mbed(也是ARM的)实现在线编程,直接U盘下载程序,
不得不佩服ARM公司的前瞻性,从芯片到设计,最终到产品,
ARM给工程师打造了一套如此完整、又方便快捷的生态系统。








评分
参与人数 1威望 +3 收起 理由
cazure + 3
沙发
通宵敲代码|  楼主 | 2017-4-20 14:54 | 只看该作者
本帖最后由 通宵敲代码 于 2017-4-20 15:21 编辑


好了,回到重点,说说怎们今天的主角STlink,相信这个几十块钱的东西,多数工程时候手上都会有,
让我们请出今天的主角,我手头上的是这种,



可以看到我们的STLink上有四个1.27的焊盘,
这是给STLink自身下载固件用的,
至于固件,网上已经烂大街,而且是原厂的固件,
支持在线自动升级,帖子最后也会附上。

从STlink的原理图上我们可以找到,这四个焊盘的定义,
其实就是我们给STM32下载程序用的SWD接口,
毕竟STLink就是用的STM32F103C8的单片机吗



对应引脚定义我们,自己引出排线来,
用另外一个STLink将固件下载进F103C8中,
重新接到电脑上就成了,看下图


可以看到我们识别到了,一个USB串口,
还有两个USB设备,我用的Win系统,
都没有显示出来时CMSIS DAP设备,
不过好在Keil认识他们,



可以看到,在Keil下,已经成功找到了我们的单片机,
注意下载的时候要严格按照红框标出的参数设置,
其他的不行,应该是固件不支持的原因,等以后在研究吧。

下载了一次程序测试了一下,可以达到10Mb/s的速度,
是不是很快了,问题是这不是重点,
重点是可以支持所有的Cortex内核的单片机,
不管你是ST的、GD、NXP还是Nuvoton的,统统可以用,
理论上是连Cortex-A系列的处理器也是支持的,
而且支持Keil、IAR以及ARM DS-5开发环境。



看一下,Keil下在线调试也是没有问题了,
用的是STM32F103VE的目标芯片。







使用特权

评论回复
板凳
通宵敲代码|  楼主 | 2017-4-20 14:55 | 只看该作者
本帖最后由 通宵敲代码 于 2017-4-20 16:01 编辑

说着了这么多,忘了告诉大家STlink刷完之后的引脚定义了我们STlink修改前后,引脚定义是完全相同的,
只不过我们原先STM8的引脚就不能用,因为STM8不是ARM内核的。
下图是我们程序中关于引脚的的定义,大家可以研究研究。




其实不光是我大天朝山寨的STLink,
官方原版的STLink也是同样可以的,



同样我们的NUCLEO自带的STLink V2.1也是没问题的,
下载的接口在背面,默认跳线电阻都没有焊接,
不过NUCELO不建议折腾,因为没有STLink V2.1的固件,
NUCLEO刷过之后是没法回复会STLink V2.1的,
只能恢复到V2.0,没有虚拟磁盘功能了,我的就折腾坏了。
况且STLink V2.1本就是CMSIS DAP的变种,完全没必要折腾。





最后附上我们的烧录文件,我用的V3版本的。


这个是用于烧录的固件
CMSIS-DAP-master烧录hex文件.zip (152.45 KB)
这个适用于恢复STLink的固件,支持自动升级
STLINK-V2与JLINK-OB烧录bin文件.zip (77.61 KB)

这是网友们将CMSIS DAP移植到STLink上的源代码,
我自己在MDK4.74环境下编译过,完全没问题,
CMSIS-DAP-master-源代码.zip (8.57 MB)
这是最新的CMSIS DAP源代码,已升级为DAPLink,
DAPLink.zip (1.41 MB)
NXP的OpenSDA的固件官方是开源的,看下面的帖子,
https://bbs.21ic.com/icview-1708460-1-1.html


最后郑重感谢网上参与移植的大牛们,
包含但不仅限于X893、allankliu、steeven等同志,
同时也声明CMSIS DAP是遵从Apache 2.0 开源的,
因此不存在盗版的问题,大家放心折腾




使用特权

评论回复
地板
yearnext| | 2017-4-20 20:28 | 只看该作者
楼主有在ARM DS-5上面测试过吗?

使用特权

评论回复
5
Xflyan| | 2017-4-21 09:25 | 只看该作者
谢谢分享!

使用特权

评论回复
6
Ketose| | 2017-4-21 09:51 | 只看该作者
非常不错,我收藏一个。

使用特权

评论回复
7
通宵敲代码|  楼主 | 2017-4-21 23:46 | 只看该作者
yearnext 发表于 2017-4-20 20:28
楼主有在ARM DS-5上面测试过吗?

没有,不过官方的说明里说是支持的。
如果不支持多数应该是硬件的问题,
在就是STlink刷固件后不支持JTAG模式,
不知道为啥。

使用特权

评论回复
8
a20084666| | 2017-4-22 15:25 | 只看该作者
我有stlink V21的固件

使用特权

评论回复
9
WAMCNCN| | 2017-4-22 15:36 | 只看该作者
不错。不过貌似用不到

使用特权

评论回复
10
通宵敲代码|  楼主 | 2017-4-22 22:19 | 只看该作者
a20084666 发表于 2017-4-22 15:25
我有stlink V21的固件

还真有大神啊,
大神传我一份吧,
多谢你啦。
377725946@qq.com

使用特权

评论回复
11
通宵敲代码|  楼主 | 2017-4-22 22:20 | 只看该作者
WAMCNCN 发表于 2017-4-22 15:36
不错。不过貌似用不到

必要的时候,会用到的

使用特权

评论回复
12
isseed| | 2017-4-22 23:48 | 只看该作者

使用特权

评论回复
13
isseed| | 2017-4-22 23:50 | 只看该作者
nucleo不是自带STLink吗?

使用特权

评论回复
14
通宵敲代码|  楼主 | 2017-4-23 00:30 | 只看该作者
isseed 发表于 2017-4-22 23:50
nucleo不是自带STLink吗?

nucelo自带的是V2.1,
这个版本的固件是没有公开的。
强烈不推荐刷固件,
因为刷完了就刷不回来了。

使用特权

评论回复
15
STARM| | 2017-4-23 00:37 | 只看该作者
STM32: 关于ST-LINK/V2-1 BOOTLOADER

https://www.brobwind.com/archives/1136

使用特权

评论回复
16
通宵敲代码|  楼主 | 2017-4-23 00:55 | 只看该作者
STARM 发表于 2017-4-23 00:37
STM32: 关于ST-LINK/V2-1 BOOTLOADER

https://www.brobwind.com/archives/1136

都是分析的,还没有人具体搞出来,
不过似乎搞出来也不是什么太难的事情。

使用特权

评论回复
17
mega1702| | 2017-4-23 23:19 | 只看该作者
ST-LINK/V2-1 BOOTLOADER

STLinkV2.J28.M18.rar

37.05 KB

使用特权

评论回复
18
通宵敲代码|  楼主 | 2017-4-24 08:40 | 只看该作者
mega1702 发表于 2017-4-23 23:19
ST-LINK/V2-1 BOOTLOADER

我去,大恩真乃神人也,
这都搞得到,能说说怎么弄到的吗??

使用特权

评论回复
19
STARM| | 2017-4-24 11:33 | 只看该作者
难道是刷入一个木马来实现的吗?

使用特权

评论回复
20
mega1702| | 2017-4-24 12:44 | 只看该作者
STARM 发表于 2017-4-24 11:33
难道是刷入一个木马来实现的吗?

當然是刷入木馬來實現的.這可花了我一個月的時間.也弄壞了三個Nucleo板.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:年轻不是资本,奋斗才是良策!

301

主题

7532

帖子

67

粉丝