STM32下载器调试器CMSIS-DAP、DAPLink、USB转串口下载

前言

在开发STM32等基于arm内核的单片机时,几乎所有人都会遇到同一个问题。那就是选择一款什么样的下载调试器呢?市面上有各式个样的下载调试器可供我们选择,我觉得选择一款最合适自己才是重要的。常用的下载器包括J-Link,ST-Link,J-Link0B,CMSIS-DAP,DAPLink等。根据我自己的使用心得,总结了以下几方面的因素。

稳定性

对于我来讲,稳定性是放在第一位,因为本人经常出差,奔波于各个城市的不同项目,经常需要携带设备去参加调试。曾经有过,因为下载器不稳定,而丢失的重要客户惨痛教训。由于当时行程相当紧张,只是带了自己平时经常用的一只下载器,平时用的非常稳定,所以也没有想太多,到了目的地之后,发现无法下载程序了,固件丢失了。又没有备份的下载器,当时是半夜1点多钟,无法向客户展示产品功能,最终项目被竞争对手拿下,损失惨重,教育深刻。所以,一定要选择一款,不丢固件的产品。本人使用过的J-Link,ST-Link,J-Link0B都出现过丢失固件的情况。

价格

为了保险器件,我们首先想到的都是去购买官方的下载器,但是官方的价格一般都比较贵,性价比非常的低,像J-Link,ST-Link等价格普遍在200多以上,而且这种往往比较笨重,对于经常出差的人而言简直就是灾难,有的时候还需要带备份,本来空间不够的行李箱更加的捉襟见肘了。


网上也可以买到便宜的下载器,低的甚至可以到几块钱,这种我也使用过。特点仅仅是便宜,而且非常的不稳定。后来我仔细分析了一下这种小产品,为什么能这么便宜,很显然这种产品一定是有利润的,否则不会有人卖。而一块原装的主芯片都得10快左右,因此,这种产品不可能用原装的芯片,那必定是翻新或者回收的芯片,纵观整个电子元器件行业,芯片的翻新和回收已经是一条非常非常成熟的产业链了,所以可以很方便的购买到回收的芯片,并且超级便宜,有的时候甚至可以论斤卖。但是这种产品真的没有质量可言呐,试想你的一款主板可能上千甚至更贵,而因为一块小小的下载器而烧毁了,是不是有点得不偿失。这里不得不说一说因为回收芯片得到的教训,之前负责一个汽车电子的项目,功能是和汽车ECU进行通讯,然后控制电机动作,电机的电流还挺大的,大概在30A左右。由于原装的电机驱动芯片需要从国外发货过来,进度赶不上调试。所以,从网上购买了所谓的原装芯片先进行方案调试,其实是回收的芯片,刚开始调试还很正常,上车后直接将汽车ECU报废了,损失不小,教训深刻。总而言之,选择这种产品有风险,需谨慎。



功能
第一,产品一定要小巧,方便携带。这里还得吐槽一下这个JTAG接口,这也是官方下载器之所以比较笨重的一个重要原因。一个JTAG有20多个引脚,而且大部分都是GND引脚,实际用来下载程序的就那4,5个引脚。这么大一个插座是非常浪费空间的,尤其对于空间比较有限的设计来说,空出这么大一块电路板来配合下载是非常不合理的。当然JTAG也是一个时代的产物,随着时间的推移将会慢慢的被淘汰掉。可喜的是,目前基于arm的单片机基本都支持SWD下载和调试,只需要两根线而已。第二,同时具备下载和调试功能。一般情况下,下载器不只是负责下载程序,大多数情况下我们都是用来调试程序用的;第三,需要可以支持多种开发环境,就我而言,我希望它至少支持IAR,Keil,这是我们团队比较常用的两款工具。第四,同时支持3.3V和5V供电。一般情况下,我们开发的产品都是3.3V供电或者5V供电,我们希望在调试的时候直接由下载器来供电,这样可以不用通过PC给板子供电,从而节省USB接口了。第五,具备USB转串口功能。单片机开发的朋友大概都深有体会,我们经常通过串口来显示一些调试信息,串口是一个非常重要的调试帮手。所以,希望可以集成串口功能,这样可以节省连线,又可以节省PC的USB端口。第六,可以通过串口下载程序(即ISP功能)。很可惜市面上大部分的下载器都不具备串口ISP的功能。一般我们都是通过keil或IAR编译工程直接下载程序,但有的时候,你只有已经编译好的.Hex文件,而没有工程文件,这个时候就可以通过串口进行下载了。第七,具有短路保护功能。这个很好理解,我们一般在调试的时候,板子上的元器件都是裸露的,还经常需要跨接飞线等等,经常容易造成短路。具有短路保护功能就和实用了。第八,即插即用,无需安装驱动。在不同的PC之间使用时,只需要像U盘一样插上就可以直接使用,而不需要安装驱动。
CMSIS-DAP
CMSIS-DAP是ARMmbed官方开源的一款下载调试器,但凡是支持CMSIS协议的单片机都可以通过该进行模块进行下载。支持USB转串口,SWD下载功能,WIN10 无需安装驱动,同时不掉固件。非常符合符合我们的需求。


官方开源的方案是基于LPC单片机的,并不是基于STM32系列单片机。因此,对于熟悉STM32单片机而又喜欢DIY的朋友来说,稍微有点不太方便了。国外有一位网名x893的大牛在官方的基础上移植到了STM32F103单片机上,并进行了开源。目前,淘宝上销售的CMSIS-DAP基本是都是x893的方案。本人也试过这个方案,也确实非常好用,但是也稍微有点用的不太顺手。首先,在Keil运行比较顺,IAR下运行不太好。其次,虚拟串口不支持ISP下载功能。第三,源码是大神移植的,没法像官方源码一样会定期维护和更新。


DAPLink
DAPLink,我认为是目前最合适的下载调试器。
DAPLink,从CMSIS-DAP发展而来,由ARMmebed维护和开源。重要的是官方这次开源了基于STM32F103单片机的方案,对于DIY玩家来说可谓是福音。并且增加了U盘拖拽下载功能,即只需要将可执行文件拖拽至DAPLink形成的U盘中完成下载,非常的方便。官方开源代码如下:github.com/ARMmbed/DAPL
当接触到DAPLink这个方案后,我们根据官方开源的原理图,设计了一版下载调试并且开始了一段时间的试用。实物非常的小巧,尺寸为:25mm x 56mm,实物长下面这样了。


同时,我们在源码的基础上进行了一些改进,实现了串口ISP功能。另外,原来方案的基础上,增加了板载自恢复保险丝,保证即使短路也不会烧坏主板,这样心里踏实多了。项目经过了长时间的使用测试,固件非常稳定。满足了我们上面提到的八大功能需求。五合一功能:下载、调试、串口、3.3V/5V供电,串口ISP。



对于广大的DIY爱好者来说,可以在开源代码上尽情的发挥。另外,需要注意的是源码是以代码仓库的形式存在的,编辑源码有一定的git操作知识。目前,这款产品我们将它放到了淘宝上,包括源码以及源码的编译方法进行了整理:item.taobao.com/item.ht

DAPLink的功能详细介绍和使用方法可以参考百度网盘文档,这里就不再码字了:
链接:pan.baidu.com/s/1TFbcFM 提取码:1uxp