可替代JLINK的STM32轻量级调试器-CMSIS DAP

资料下载:https://pan.baidu.com/s/1bHUVe6X6tymktUHk_z91cA
本文章资料在CMSIS DAP目录


CMSIS DAP是什么?

CMSIS = Cortex Microcontroller Software Interface Standard
ARM Cortex™ 微控制器软件接口标准,ARM公司的。
DAP =
CMSIS DAP就是ARM公司的一个开源Cortex芯片调试工具。
通过下面路径可以查看CMSIS DAP项目情况。
http://www.keil.com/support/man/docs/dapdebug/dapdebug_introduction.htm

CMSIS DAP已经停止更新,
被新的项目的DAPLink替代

关于CMSIS DAP 跟DAPLink的资料,在keil跟ARM的网站仅仅提及,完整的资料在mbed网站和mbed在github上mbed仓库。
mbed官网
https://os.mbed.com/handbook/cmsis-dap-interface-firmware
github mbedmicro仓库,这个仓库已经废弃。
https://github.com/mbedmicro
ARMmbed仓库,从里面可以找到DAPLink仓库。
https://github.com/ARMmbed

CMSIS DAP能做什么?

CMSIS DAP是一个三合一工具。

  1. USB CMSIS-DAP for debugging
  2. USB MSD for programming
  3. USB Serial for communication

第一个功能就是调试,类似JLINK。
第二个功能是MSD,目标板通过DAP连接电脑后,在电脑虚拟出一个U盘,将bin文件或者hex复制到这个U盘,就相当于将程序烧录到芯片了。
第三个功能就是虚拟串口,我们调试程序经常用到串口输出LOG。

CMSIS DAP插上电脑后,电脑会识别出3个设备

  1. MSC - drag-n-drop programming flash memory
  2. CDC - virtual com port for log, trace and terminal emulation
  3. HID - CMSIS-DAP compliant debug channel

CMSIS DAP原版是用NXP的芯片做的,一个叫x893的大神,移植到STM32F103C8T6上,大大降低了成本。
大家可以参观大神博客
http://akb77.com/g/stm32/jlink-ob/
大神的github
https://github.com/x893/CMSIS-DAP

屋脊雀CMSIS DAP

屋脊雀改造(不敢说是我们研发的)了一款CMSIS DAP。
软件完全使用X893的版本,仅仅是重新设计了硬件。主要有以下改动:

  1. 双USB接口,台式机可以使用旧安卓手机数据线连接Micro USB,笔记本可以直接使用公头,省去线缆,更加简洁。
  2. 参考了最新的DAPLink,精简了接口,不支持JTAG。
  3. 将电脑5V引到接口,可以直接给设备供电,又省一条线缆。
  4. 将板上3.3V,串接一个500MA保险丝后从接口输出,使用一个DAP就可以直接用电脑串口调试串口模块,例如8266模块等。
  5. 不支持MSD功能。

极简CMSIS DAP
DAP实物图
接口
原理图信号
原理图信号
正面接口图,左下为1脚,SWCLK。
正面接口
背面接口图,更清晰的信号说明。
背部接口说明
使用

  1. 调试程序
    以前需要JLINK、串口线、电源线三条线连接。
    使用DAP后,只需要一个DAP,简洁到极致。

调试开发板
2. 调试串口模块
很多模块都是通过串口控制。DAP提供了串口和电源。使用杜邦线连接模块,然后通过电脑串口工具调试模块。
例如:安信可的8266wifi模块。通过DAP连接,就可以使用串口软件发送AT命令调试WIFI功能。

注意事项
1. 5V电源由USB提供,通常电流不可大于500MA(USB 3.0可达1000MA)。如需要大电流,可以将DAP插在带外电的USB HUB上使用。
2. 3.3V电源由板上电源转换芯片提供,理论可提供500MA电流。
3. 为了防止DAP损坏,在3.3V上串了一个500MA自恢复保险丝,可保护DAP 电源芯片。但是保险丝上会有压降,电流越大,压降越大。因此提供的3.3V电压,并没有3.3V。建议不要使用DAP 3.3V接大负载,并且注意压差影响。

驱动安装

HID设备是免驱的。
CDC在WIN10上也不需要安装驱动。
在WIN7系统上,需要安装CDC驱动。
1. 将DAP插上电脑,电脑右下角提示安装驱动,安装失败。在桌面计算机图标上点击右键,点击设备管理,进入下图界面,可见CDC驱动没有安装成功。
右键点击CMSIS-DAP CDC,在弹出菜单内点击安装更新设备驱动

31png
2. 点击浏览按钮选择驱动所在路径,然后点击“从计算机的设备驱动列表中选择”

33png
3. 在弹出对话框内下来,找到端口(COM和LPT),选中后点击下一步。

34PNG
4. 在弹出的对话框内点击“从磁盘安装”

35png
5. 点击浏览按钮,选中驱动文件夹内的stmcdc.inf,点击确定。

36png

37PNG
6. 已经看到CMSIS DAP USART 驱动,但是这个驱动并没有经过签名,没关系,点击下一步。弹出警告,点击是,继续安装

38PNG

39PNG
7. 安装成功。

40PNG
8. 在设备管理器内可以看到多了一个CMSIS DAP USART(COM11)

40png

MDK使用CMSIS DAP设置

点击红框内的魔术棒按钮,进入工程Option。

11png
点击Debug标签页,在仿真器下来菜单内旋转CMSIS-DAP Debugger,然后点击Settings进入调试器设置

12png
进入调试器设置后,在Debug标签页,
选择CMSIS-DAP HID(其他DAP会改名字,屋脊雀使用默认名字)。
Port选择框选择SW。
Max Clock可以设置为最高的10MHz(使用优质杜邦线连接,长度最好不要大于40CM)
如果接线没有问题,在右边SW Device框内已经可以读到IDCODE跟Device Name。
如读不到,并且左边第三个红框内的SWJ不是灰色,而且没有勾上,请勾上。
再读不到设备则请检查硬件连接。

13png
点击Flash Download标签页,在Download Function中进行下载配置。
Erase选择第二个,不要选第一个,否则每次都擦除正片,非常耗时间。
在下部空白框内可以看到芯片信息。
勾上Reset and Run。

14png
Pack内选择芯片debug配置,通常建立工程时已经默认选好。

15PNG
配置成功后,在MDK菜单栏的红色d按钮进行调试。

16png
进入调试模式后,在原来菜单下多了一行调试按钮。
并且默认弹出了汇编框(上半部分)。
下部为C代码。
箭头则为当前代码执行处。

17png
如果不需要调试,仅仅是下载,则可以通过MDK菜单栏左上角的LOAD按钮完成。

18png

IAR使用CMSIS DAP设置

CMSIS dap同样支持IAR,IAR建议使用较新版本。本说明使用的是IAR 8.10。
在工程内点击Projet菜单内的Options进入设置。

1png
通常,在General Options内的芯片在工程建立是已经选择好。本处用的是407ZE。

2png
在Debugger菜单内,Driver选择CMSIS DAP。下部红色框内的Device description file文件一定要选择对应的ddf文件,否则会出现连接失败。

3png
同样在Debugger菜单的Download标签页内,.board file要选择正确,否则同样会提示错误。但是有时候IAR并没有带我们使用的IC的板文件,我们可以选择相同内核,相同FLASH,相同RAM的IC的板文件。
IAR并没有407ZE的板文件,我们选择了一个FlashSTM32F401xE.board替代。

4png
在左侧CMSIS DAP菜单下的Interface标签页内,选择SWD接口,速度可以选择10MHz。

5png
配置完成后,在IAR菜单上显示了CMSIS-DAP,在这个菜单内可以进行FALSH操作。具体自己熟悉。
在菜单栏左边,点击绿色小箭头按钮,可以进行调试仿真。

6png
程序下载后进入调试模式,在菜单栏左边有对应调试按钮。

7png

常见问题

1
无法下载,KEIL提示下图

50png
点击确定后出现下图

51png
或者是提示无法复位设备。
这个问题的通常原因有两个:

  1. 程序跑飞,进入HardFault(常常会再这个异常中断输出LOG)。
  2. 程序使用了SW IO。

解决办法:
将BOOT0接到高电平,BOOT1接到低电平,按复位,芯片进入系统存储器模式,运行ST的Bootloader,这是就可以使用DAP下载程序了。下载完后将BOOT0接回高电平,按复位键,运行刚刚下载的程序。

声明

  1. CMSIS DAP是一个开源工具,屋脊雀为了方便使用,对硬件进行了改造。
  2. 屋脊雀工作室验证了CMSIS DAP在以下开发环境与IC的使用。其他芯片与开发环境待验证。屋脊雀工作室会不断验证其他开发环境与IC。
    >开发环境
    IAR 8.10
    MDK 5.17

芯片
STM32F103C8T6
STM32F407ZE

免责声明

为了做到极简,在接口上并没有设置防呆,在进行硬件连接时请注意分清线序,如因接线错误而造成硬件损坏,概不负责。


2018.01.28
v1.0
屋脊雀工作室

1 thought on “可替代JLINK的STM32轻量级调试器-CMSIS DAP”

  1. 反馈一个问题,今天用串口发现奇校验和偶校验方式回环发送数据的时候数据被改变了,我用了自己的买的串口模块是正常的

发表评论

电子邮件地址不会被公开。 必填项已用*标注