DAPLink使用手册


DAPLink是ARM官方调试器,以前叫CMSIS DAP,现在改名叫DAPLink。 软硬件都是开源的,在github上可以找到原理图和源码。

功能

DAPLink 提供3个接口: 1. drag-n-drop programming 2. a serial port 3. debugging support

这3个功能都是通过一个USB口连接,USB在电脑上生成3个设备: 1. MSD(mass storge disk/文件夹) 2. CDC(串口) 3. HID(调试)

drag-n-drop programming

  • 下载目标文件

DAPLink连接到电脑后,在电脑上可以看到一个U盘文件夹。如下图:


打开U盘,有两个文件

DETAILS.TXT是MSD配置,默认内容如下:

# DAPLink Firmware - see https://mbed.com/daplink Unique ID: 505000000784954800000000000000000000000097969902 HIC ID: 97969902 Auto Reset: 0 Automation allowed: 0 Overflow detection: 0 Daplink Mode: Interface Interface Version: 0246 Git SHA: b202ddc3fc89ff9750dc01afea7de4641b54666d Local Mods: 0 USB Interfaces: MSD, CDC, HID Interface CRC: 0x929415d5 Remount count: 0

拷贝程序文件到这个文件夹,即可完成对目标芯片编程。

如果编程失败,在文件夹内有一个FAIL.TXT文件说明失败原因。 支持的文件格式:

Raw binary file Intel Hex

  • 固件和目标芯片

当前一个DAPLink固件通常只支持一种CPU。如要对不同的芯片进行drag-n-drop programming,请更新对应目标芯片的固件。 以下是当前github代码支持的目标芯片的固件:

固件名称:lpc11u35_arm_watch_stm32f411_if,代表使用lpc11u35芯片的DAPLink,MSD支持stm32f411。 官方一直在持续更新,如果有兴趣,你也可以自己增加目标芯片。 还可以移植DAPLink到不同的芯片上,国内已经有人将DAPLink移植到STM32上。 官方已经放出STM32版本的原理图,固件暂时没看到。

不同的芯片,FLASH编程方法不同。 ARM为什么不把所有算法整合呢?芯片空间不够?

  • MSD命令

    参考说明文档:MSD_COMMANDS.md

可以通过MSD接口对DAPLink发送一些指定的简单命令。 只要拷贝一个指定名字的文件到MSD内,就可以让DAPLink进行一些操作,或者配置DAPLink。 在拷贝指令文件时,需要按住复位按键,或者是DAPLink处于automation-allowed模式(进入automation-allowed模式也需要通过指令文件)。

.act文件触发一个动作 .cfg 则是一个配置

拷贝文件到MSD后,需要重新加载DAPLink MSD,指令或配置才生效。实测,DAPLink会自动重新挂载MSD。

Action Commands start_bl.act start_if.act assert.act refresh.act erase.act:This file triggers an erase of the target's flash.

Configuration Commands auto_rst.cfg:更新文件到目标芯片后,自动运行。默认关闭。请看DETAILS.TXT文件内Automation allowed: 0。 hard_rst.cfg:与auto_rst.cfg对应,关闭自动运行。 auto_on.cfg:This file turns on automation-allowed mode. In this mode, DAPLink MSD commands can be triggered without needing to hold down the RESET button. auto_off.cfg:This file turns off automation-allowed mode. This mode is off by default ovfl_on.cfg ovfl_off.cfg.

个人认为这些命令用处并不是很大。

serial port

DAPLink通过USB CDC方式虚拟出一个串口。将DAPLink的TX和RX连接到目标板串口,可做调试信息串口使用。 - 驱动安装 WIN7系统需要安装串口驱动,驱动文件名叫:mbedWinSerial_16466.exe,双击安装即可。 - 使用 跟其他USB转串口一样使用。 CDC串口挂载久了(例如插在电脑一晚上不关机),会传输失败,插拔DAPLink即可。 - 注意事项 实测,CDC串口不能直接对目标芯片进行ISP。 XP系统不支持CDC

debugging support

在支持CMSIS-DAP 协议的IDE上可使用DAPLink在线调试目标芯片,功能类似JLINK、STLINK。 下面IDE支持DAP协议:

pyOCD uVision IAR

  • MDK设置

点击红框内的魔术棒按钮,进入工程Option。
11
点击Debug标签页,在仿真器下来菜单内旋转CMSIS-DAP Debugger,然后点击Settings进入调试器设置
12
进入调试器设置后,在Debug标签页, 选择CMSIS-DAP HID或DAPLink CMSIS-DAP。(如果是其他DAP,名称可能会修改,选择对应的即可) Port选择框选择SW。 Max Clock可以设置为最高的10MHz(使用优质杜邦线连接,长度最好不要大于40CM) 如果接线没有问题,在右边SW Device框内已经可以读到IDCODE跟Device Name。 如读不到,并且左边第三个红框内的SWJ不是灰色,而且没有勾上,请勾上。 还读不到设备则请检查硬件连接。
13
点击Flash Download标签页,在Download Function中进行下载配置。 Erase选择第二个,不要选第一个,否则每次都擦除正片,非常耗时间。 在下部空白框内可以看到芯片信息。 勾上Reset and Run。 下部Programming Algorithm请选择对应FLASH编程方法。内置FLASH芯片通常会有默认选项。如果FLASH是外置,例如RT1052,需要添加对应FLASH编程方法。
14
Pack内选择芯片debug配置,通常建立工程时已经默认选好。
15
配置成功后,在MDK菜单栏的红色d按钮进行调试。
16
进入调试模式后,在原来菜单下多了一行调试按钮。 并且默认弹出了汇编框(上半部分),下部为C代码。 箭头则为当前代码执行处。
17
如果不需要调试,仅仅是下载,则可以通过MDK菜单栏左上角的LOAD按钮完成。
18

  • IAR设置

DAPLink & CMSIS dap同样支持IAR,IAR建议使用较新版本。本说明使用的是IAR 8.10。 在工程内点击Projet菜单内的Options进入设置。
1
通常,在General Options内的芯片在工程建立是已经选择好。本处用的是407ZE。
2
在Debugger菜单内,Driver选择CMSIS DAP。下部红色框内的Device description file文件一定要选择对应的ddf文件,否则会出现连接失败。
3
同样在Debugger菜单的Download标签页内,.board file要选择正确,否则同样会提示错误。但是有时候IAR并没有带我们使用的IC的板文件,我们可以选择相同内核,相同FLASH,相同RAM的IC的板文件。 IAR并没有407ZE的板文件,我们选择了一个FlashSTM32F401xE.board替代。
4
在左侧CMSIS DAP菜单下的Interface标签页内,选择SWD接口,速度可以选择10MHz。
5
配置完成后,在IAR菜单上显示了CMSIS-DAP,在这个菜单内可以进行FALSH操作。具体自己熟悉。 在菜单栏左边,点击绿色小箭头按钮,可以进行调试仿真。
6
程序下载后进入调试模式,在菜单栏左边有对应调试按钮。
7

屋脊雀DAPLink使用官方方案,用LPC11U35芯片做DAPLink。用这个芯片的好处有两点: 1. 可随时和官方同步。 2. 芯片ISP自带MSD接口,不需要DAPLink的BOOT,更新固件时不会有成砖头的风险。

相对SMT32方案,贵了差不多10块钱。

  • 硬件说明 实物如下
    • 双USB接口,可直接接笔记本,也可用micro线接电脑。
    • 板载500ma LDO,并对外输出3.3V,可直接用PC调试串口模块,例如WIFI 模块esp8266。
    • 对外接口输出5V,可直接用于调试开发板,需要注意电流,不可超过电脑USB口电流门限。
    • 4颗LED指示灯,芯片左上为电源指示灯,红色。芯片右边三颗状态指示灯,从左到右分别是:MSD指示灯、HID指示灯、CDC指示灯,绿色灯。

上图是接口,2X4DIP接口,间距2.54mm。

  • 固件更新
  • 按住复位键,将DAPLink接到电脑USB接口,电脑将出现一个叫“CRP DISABLD”的目录。
  • 进入目录,将原来的firmware.bin删除,拷贝新固件到目录。
  • 拔插DAPLink,新固件即可生效。

DAPLink固件工程编译后生成多个固件,不同固件作用请参考BUILD_OUTPUT.md,我们用带crc字符的固件即可。

固件编译

请参考github仓库说明文档。 在百度云共享资料内有最新的固件。

LINUX环境

1 串口验证可用。 2 MSD验证可用。


end