RYMCU

如何选择STM32下载调试器?

Hugh 2 年前
# STM32 # 选择下载器

所属作品集

1.背景

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

1.1 稳定性

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

1.2 价格

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

网上也可以买到便宜的下载器,低的甚至可以到几块钱,这种我也使用过。特点仅仅是便宜,但是非常的不稳定。后来我仔细分析了一下这种小产品,为什么能这么便宜,很显然这种产品一定是有利润的,否则不会有人卖。而一块原装的主芯片都得 10 快左右,因此,这种产品不可能用原装的芯片,那必定是翻新或者回收的芯片,纵观整个电子元器件行业,芯片的翻新和回收已经是一条非常成熟的产业链了,所以可以很方便的购买到回收芯片,并且超级便宜,有的时候甚至可以论斤卖。

但是这种产品真的没有质量可言呐,试想你的一款主板可能上千甚至更贵,而因为一块小小的下载器而烧毁了,是不是有点得不偿失。这里不得不说一说因为回收芯片得到的教训,之前负责一个汽车电子的项目,功能是和汽车 ECU 进行通讯,然后控制电机动作,电机的电流还挺大的,大概在 30A 左右。由于原装的电机驱动芯片需要从国外发货过来,进度赶不上调试。所以,从网上购买了所谓的原装芯片先进行方案调试,其实是回收的芯片,刚开始调试还很正常,上车后直接将汽车 ECU 报废了,损失不小,教训深刻。总而言之,选择这种产品有风险,需谨慎。

1.3 功能

  • 产品一定要小巧,方便携带。 这里还得吐槽一下这个 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 盘一样插上就可以直接使用,而不需要安装驱动。

1.4 CMSIS-DAP

CMSIS-DAP 是 ARMmbed 官方开源的一款下载调试器,但凡支持 CMSIS 协议的单片机都可以通过该模块进行下载。支持 USB 转串口,SWD 下载功能,WIN10 无需安装驱动,同时不掉固件。非常符合我们的需求。

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

DAPLink,我认为是目前最合适的下载调试器。
DAPLink,从 CMSIS-DAP 发展而来,由 ARMmebed 维护和开源。重要的是官方这次开源了基于 STM32F103 单片机的方案,对于 DIY 玩家来说可谓是福音。并且增加了 U 盘拖拽下载功能,即只需要将可执行文件拖拽至 DAPLink 形成的 U 盘中完成下载,非常的方便。官方开源代码如下:

https://github.com/ARMmbed/DAPLink

对于广大的 DIY 爱好者来说,可以在开源代码上尽情的发挥。另外,需要注意的是源码是以代码仓库的形式存在的,编辑源码得有一定的 git 操作知识。如何打造一款属于你自己的 DAPLink?
daplink.png

所属作品集

后发布评论