【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
和单纯的windows上位机开发、嵌入式linux开发不一样,mcu的开发,是需要通过烧录器把编译好的镜像烧入到开发板里面的。这是很大的一个不同点。当然,除了烧录,一般它们还有仿真功能,可以用来进行debug调试使用。用类似keil的编译器编写代码、生成镜像文件,这一点都差不多,但是烧录这是mcu开发板特有的。因为像linux开发后期,基本就是ssh拷贝和粘贴了,没有烧录的流程了,windows qt开发就更不用说了。
所以,我们购买开发板的时候一般都要购买一个烧录器。目前mcu的烧录器主要有三种,一种是st-link v2这种;一种是cmsis-dap这种,还有一种是jlink。实际的使用过程中应该如何来选择呢,我们简单聊一下。
1、下载电路
这是实际mcu的下载电路,一般都是这个样子的。即电路中有四条线,一个是vcc 3.3,一个是gnd。这意味着,可以通过烧录器给开发板供电。另外两个就是dio和clk,一个是数据,一个是时钟,有点类似于iic。不管我们使用哪一种烧录器,连接的都是这四根线,各种烧录器的不同,本质上只是协议的不同而已。
2、sw-link v2烧录器
sw-link v2是意法半导体公司推出来的烧录器。意法半导体可能大家不熟悉,但是它们家的stm32系列mcu,大家应该都用过。所以一般来说,只要是stm32系列的mcu,都可以使用这个烧录器进行版本烧录。而且,st-link v2现在某宝上面的价格非常便宜,十几块就可以买到。此外,st-link v2本身是需要额外安装驱动的,这一点稍微注意下。
3、cmsis-dap烧录器
dap系列的烧录器,都是arm公司推出来的默认烧录器。这意味着,只要是arm系列的cpu,理论上都可以用这个烧录器进行版本烧录的,并且它是免驱动安装的。按照这个思路,相对于stm32而言,各路国产的arm系列mcu,比如说gd32,比如说普冉,比如说华大mcu系列,都可以使用这类烧录器进行版本烧录。电商网站上面的某火、某原子,推出来的大部分也是dap烧录器。
4、jlink烧录器
jlink实现的是jtag协议,要说到jtag,那就非常悠久了,一般来说默认的soc、fpga、dsp等芯片都支持jtag,只要对应的jlink烧入相应的firmware固件即可。不仅如此,jlink还支持多种cpu,不仅是arm,还可以是mips、powerpc、riscv,所以jlink是使用范围最广的一类烧录器。就目前情况来说,国产的mcu大部分还是arm为主,只有某恒wch采用了risc-v cpu,所以理论上它也是可以通过jlink进行烧入的。mcu或者soc里面的jtag接口一般都是这样的,如下图所示,
现在用的比较多的jlink,都是v9版本。如果正常走jtag接口,除了vcc、gnd之外,连接传统jtag的tck、tms、tdi、tdo四个pin即可。反之,jlink连接swd接口电路的时候,需要从20pin当中找出对应的swd接口,连接到开发板上。此外,有一个rst连线可接可不接。连接好之后,我们就可以把jlink转成swd,进行版本烧录了。当然,jlink也是需要进行驱动下载的。从arm烧录角度来说,dap能使用的地方,jlink也可以的。如果不是arm,像wch这种risc-v的情况,个人建议还是专门买一个官方的专业烧录器,或者用某原子的v-link烧录器,这样使用起来更方便一点。
jlink转swd有现成的接法,主要就是3.3v、gnd、clk和dio。接好了之后,没有什么问题的话,就可以在keil里面看到jlink被识别到了,对应的arm cpu也被识别到了。
5、烧录算法
烧录算法一般都是提前配置好的,在keil下面一般是依赖于某一个flm或者flx文件,目录在C:\Keil_v5\ARM\Flash下面。截图部分的话,就如下图所示,
6、总结
大家实际使用mcu进行电路开发、固件开发的时候,如果只是使用stm32,那么买一个st-link v2就好了。如果是需要支持其他的国产arm mcu,这个时候可以再买一个cmsis-dap仿真器或者jlink仿真器即可。针对risc-v的mcu,单独买一个官方的或者第三方出品的仿真器就好了。
当然不管是三种方法中的哪一种方法,最重要的是可以借助烧录模块识别到arm内核,这样才能进行后面的操作,不然后面的一起都无从谈起。