本帖最后由 shendu0032 于 2020-12-19 22:06 编辑
今天写这篇**,单纯的是想记录我的学习历程——关于STM下载器的那些事。我之前是做硬件的,对软件了解的不多,但现在我要突破自己,自己手里的大创项目也要求我必须软硬兼施。首先还是非常感谢@21小跑堂 提供的机会。之前写过一篇关于机智云的使用介绍,ST的合作伙伴有很多,目前我也是能力有限,想想还是从我用得到,感兴趣的下载器入手吧。
我们在使用或者开发STM32等一些基于ARM内核的单片机时,都会遇到下载的问题,市面上有各式各样的下载器,包括:J-LinK,ST_Link,J-LinkOB,CMSIS-DAP,DAP-Link,JTAG。那我们究竟该选择一款什么样的下载器呢?下面根据我使用和了解到的情况,总结如下。
我认为任何一款下载器,(1)首要的因素就是稳定性,之前参加比赛,同队的队友遇到无法下载程序的问题,固件丢失,幸好当时从别的队伍借来了下载器,当时用的是ST_Link。同在实验室的其他人也遇到过丢固件和无法下载程序的问题,有时下载不了程序是未能识别到,需要插拔或者供电不足。所以说下载器最好留有3.3V和5V的接口,这样以防因为电压不稳定造成下载不稳定的问题。之所以使用ST_Link只因为它价格便宜。(2)那第二个选择的因素就是价格。ST_Link在网上很常见,价格也几块到十几块之间,对于学生或者追求成本的开发者来说,非常友好。不过最近随着ST的芯片大涨,下载器的价格也有所增加。我也分析了这些廉价的ST_Link为什么这么便宜,因为一块原装的主芯片都得10块钱左右,因此唯一的解释就是这些产品是不可能用原装的。有时我们也在网上看到散新的芯片价格往往比原装的便宜不少,甚至便宜一倍都是有的。而这种散新的多是拆机件,或者回收翻新的芯片。这些回收过来的芯片一般是没有质量保证的。所以丢固件也是常见的事,只是再做大项目的过程中,千万不要因为下载器,得不偿失。之前在公众号看到一位工程师使用廉价的ST_Link导致电机的驱动芯片烧坏,从而拖延了工期。(话说工业级的芯片稳定性还是可以的吧,一块下载器把芯片,而且还是进口的,有点疑惑。)(3)第三个需要我们考虑的就是性能。一般讲下载的速度,体积,外观。之前用过JTAG,20Pin,9个引脚都是GND,真正起作用的也就4,5个引脚,器件显得非常笨重,而且现在开发板大多支持SWD下载,只需要两根线即可,非常方便。下载器还应该具备下载和调试的功能,最好是那种脱机下载器和烧录器。调试串口也是非常方便的。还有就是下载器要兼容多种开发环境,目前我们用的比较多的KEIL和IAR,当然还有一些其他MCU厂商自研的开发环境,那种特殊的一般只能用特供的下载器了。
好了,上面说了很多关于如何选择下载器的因素和指标,下面我重点介绍我用过的几款下载器吧,并把它们的接线图分享出来,之后我如果需要看引脚图,直接翻看我的帖子就行,这也是我写这篇**的初衷。
(1)J-LinK
市面上J-LinK的种类也很多,我从网上找了一张图:
使用J-LinK下载程序或者在线调试的时候,有两种模式JTAG和SWD,
下面是两种模式的引脚图
一般我使用的是SWD模式,因为只要2根信号线,而且调试的功能也不受影响。用STM32开发板PA13对应SWDIO/JTMS,PA14对应SWCLK/JTCK。
(2)ST_Link
ST_Link/V2是ST意法半导体为评估、开发STM8系列和STM32系列MCU而设计的集成在线仿真与下载一体的开发工具,STM8使用SWM接口,STM32使用SWD接口。
有时候可能会遇到这种问题
我在淘宝上上竟然找到了解决办法:第一种是用它提供的升级软件升级一下固件,软件识别不了就插拔几次或者检查供电是否稳定。第二种是打开Keil_v5\ARM\STLink这个路径,将“ST_LINKIII-KEIL_SWO.dll”这个文件复制进去替换原有的即可。店主还提供的资料包https://pan.baidu.com/s/1CvqUBQvHsIDofNni72z1WA 提取码:4ab8。
(3)J-LinkOB
J-LinkOB是由SEGGER公司开发的一套独立的调试下载器,通常被设计到各大公司的评估板上,也就是后缀加“OB”(on-board)官网入口:https://www.baidu.com/link?url=SZ-7e_QESxEE2tVSlmul7IuDukeGyPusSH-uTBtMGx-tMjnJTJ06oW9CCA60_Qlna-smQPAhGXxcz4YuzJMPZj5fH2dWxz0csX9YE_hhYRa&wd=&eqid=ec632f500036e7db000000035e29a48d
具有一下特点(1)可使用JFLASH烧录二进制代码(2)可以使用MDK在线调试(3)可以使用J-SCOPE在线查看变量曲线(4)带虚拟串口自动化电平转换(5)可选输出电压5V、3.3V或者目标自供电与电平转换电压同步切换。
下面提供一下常用的原理图,固件和使用过程我放在附件里,需要的自取。
Jlink_OB_072固件.zip
(29.46 KB)
如何通过J-LINK-OB在MDK中进行调试.pdf
(558.31 KB)
如何通过J-Link-OB下载二进制固件 .pdf
(615.41 KB)
如何将coremark程序移植到STM32上.pdf
(1.12 MB)
如何安装J-Link-OB的驱动.pdf
(715.15 KB)
(4)CMSIS-DAP
CMSIS-DAP是ARMmbed官方开源的一款下载调试器,但凡是支持CMSIS协议的单片机都可以通过该模块进行下载,支持USB转串口,SWD下载功能,WIN10无需安装驱动,同时不掉固件,但是价格较贵。官方开源的方案是基于LPC单片机的,并不是基于STM32系列单片机。因此想用STM32做,还是有点不太方便。国外有一位大神在官方的基础上移植到了STM32F103单片机上,并进行了开源。目前淘宝上卖的CMSIS-DAP基本基本都是这位大神开源出来的方案。
(5)DAP-Link
DAP-Link是从CMSIS-DAP发展来的,由ARMmbed维护和开源,重要的是官方这次开源了基于STM32F103单片机的方案。我现在手中用的就是这款开源方案设计的DAP 开源的GitHub网址:https://github.com/ARMmbed/DAPLink 支持拖拽式编程Flash,把DAP-Link连接电脑后,电脑上会出现一个U盘,把hex或bin文件拖入其中就能完成程序烧写。还支持串口,可以使用串口助手打开实现与目标板的串口通信。DAP-Link本身的固件支持U盘升级,只需要将nRST接地,插入DAP-Link,PC上立即会出来一个U盘,只需将新的固件(hex或者bin文件)拖入到U盘中,即可完成固件升级。因为DAP-Link实现了一个带U盘功能的bootloader,可以方便的完成固件升级
好了,今天就写到这里,有些知识我也是从网上学习到的,我们一起加油吧。
|