DAPLink设计与应用

DAPLink是ARM官方的一款开源的调试仿真器,之前叫CMSIS-DAP。DAPLink的软件和硬件都在Github上开源:

  • DAPLink软件地址: Github
  • DAPLink硬件地址: Github

DAPLink目前源码固件主要使用在LPC11U35以及MK20DX128VFM5的硬件上,并在Github上开源,成熟的DAPLink硬件方案有三个:

  • DIPDAP(主芯片:LCP11U35FHI33/501)
  • STDAP(主芯片:STM32F103CBT6)
  • SWDAP(主芯片:LCP11U35FHI33/501)

DAPLink可以对ARM Cortex内核(如 Cortex M3)进行仿真调试,并且提供源码和硬件,这样可以使用户可以轻松的集成一个仿真调试器到自己的项目上而无需担心版权问题。DAPLink不仅拥有仿真调试功能,同时它还具备虚拟串口和拖拽式下载功能(拖拽式下载只支持固件上对应的MCU

DAPLink介绍

DAPLink功能介绍

  • MSC-拖拽式下载
  • CDC-日志打印、追踪和终端仿真的虚拟串口
  • HID-CMSIS-DAP兼容式调试接口
  • WEBUSB HID-CMSIS-DAP兼容式调试接口

MSC拖拽式下载

通过复制或保存一个DAPLink支持的格式文件DAPLink的虚拟U盘中,完成后DAPLink设备就会重启。如果发生错误,错误的信息就会存放在FAIL.TXT中

DAPLink的MSC功能支持的文件格式如下:

  • .bin
  • .hex

CDC-日志打印、追踪和终端仿真的虚拟串口

CDC虚拟串口功能具备普通的串口IC功能,串行端口直接连接到目标MCU,允许双向通信。它还允许通过在串行端口上发送中断命令来重置目标。

串口通讯支持的波特率如下:

  • 9600
  • 14400
  • 19200
  • 28800
  • 38400
  • 56000
  • 57600
  • 115200
    注:大多数DAPLink还支持这里列出来之外的串口通讯波特率

HID-CMSIS-DAP兼容式调试接口

CMSIS-DAP接口可以在任何支持CMSISI-DAP协议的IDE中进行调试,其中包括:

WEBUSB HID-CMSIS-DAP兼容式调试接口

WEBUSB HID-CMSIS-DAP是用于网页上进行调试的接口。

DAPLink官方介绍

DAPLink

Arm Mbed DAPLink是一个开源软件项目,它能够在Arm Cortex架构上的CPU运行编程和调试应用程序。DAPLink是作为应用MCU的SWD或JTAG接口的辅助型MCU,通常称之为接口固件。这种配置几乎在所有的开发板上都可以看到,DAPLink枚举为一个USB复合设备,为开发者的计算机和CPU调试访问端口之间建立了一个桥梁。DAPLink能让开发者具有:

  • MSC-拖拽式编程FLASH闪存
  • CDC-日志打印、追踪和终端仿真的虚拟串口
  • HID-CMSIS-DAP兼容式调试接口
  • WEBUSB HID-CMSIS-DAP兼容式调试接口

更多的功能正在规划兵渐渐展现出来。DAPLink项目不断地在Arm、它的合作伙伴、众多的硬件供应商和世界各地的开源社区的大力开发之下,取代了CMSIS-DAP接口固件项目,你可以尽情使用和贡献。Enjoy!

更多可用的细节信息可查看DAPLink用户指南DAPLink用户指南

兼容性

DAPLink接口固件已经运行在许多基于ARM微控制器的硬件接口电路(HICs),它们可用作独立的(调试器)板子或作为开发工具的一部分。一些已知的IO兼容品牌的电路如下:

版本

DAPLink官方的Github仓库创建了许多板级构建(板 = HIC + 目标组合)。季度版本将包含新的特性和修复BUG,一旦根据报告、验证并修复BUG,就会发布独立的修复BUG后的版本无论是季度版本还是修复Bug版本,都会导致生成号递增。许多开发工具包和产品与DaPink接口固件一起运行,或者能够运行DaPink固件。当前发布版本和更新DaPink界面固件的指令是在DaPink发布站点上托管的。发行说明和以前发布版本可以在GITHUB发行版中找到

DAPLink开发环境搭建

Windows工具安装

本章介绍在Windows下的DAPLink开发环境搭建。安装的工具列表如下,如果有些工具已经安装好可以跳过(注意:软件安装包尽量选择最新版,选择适合自己电脑的32/64位安装包

  • Python2,版本2.7.9以上,并添加环境变量:下载地址
  • Git,并添加环境变量:下载地址
  • Keil MDK-ARM下载地址
    注意:软件安装时尽量使用默认路径

获取源码&生成MDK工程

将需要的的工具安装完成后,点击鼠标右键,选择Git Bash Here打开Git命令行界面,按以下步骤输入命令进行操作

  1. 下载DAPlink源码到本地

    1
    $ git clone https://github.com/mbedmicro/DAPLink
  2. 切换到DAPLink目录下

    1
    $ cd DAPLink
  3. 安装虚拟环境

    1
    $ pip install virtualenv
  4. 进入拟环境

    1
    $ virtualenv venv
  5. 启动虚拟环境下的脚本

    1
    $ venv/Scripts/activate
  6. 安装requirements.txt表中的工具

    1
    $ pip install -r requirements.txt
  7. 生成MDK工程

    1
    $ progen generate -t uvision

关闭Git命令行界面,在DAPlink目录下有个projectfiles文件夹,里面就是生成的MDK工程,可使用MDK-ARM工具打开

编译源码

  1. 打开DAPLink\projectfiles\uvision目录下的工程,如lpc11u35_lpc812xpresso_if工程,如弹出Using an MDK Version 4 Project窗口,选择Migrate to Device Pack

  2. 此时会打开Pack Install窗口并自动下载安装相应的固件包,等待安装完成并关闭

  3. 编译工程,在lpc11u35_lpc812xpresso_if\build目录会生成.bin和.hex文件

其他问题&解决方法

  • 编译源码的第1步中提示的问题是因为MDK-ARM版本问题引起,可安装对应MDK-ARM的MDK4兼容包解决 :下载地址
  • 编译源码的第2步中如果提示找不到LPC11U35型号,可在Pack Install窗口搜索LPC1100并安装LPC1100 Series固件包;或者在KEIL官网下载安装LPC1100 Series固件包:下载地址
  • 工程目录projectfiles\uvision\下的文件,以_if结尾的工程是对应工程的应用程序;_bl结尾的是对应工程的Bootloader应用程序,LPC11U35自带Bootloader程序

DAPlink硬件

官方DAPLink硬件

官方DAPLink硬件是开源的,开源地址 : Github

目前成熟的DAPLink硬件方案有三个,分别是位于mbed-HDK\Production Design Projects\ARM-mbed\DAPLink目录下的:

  • DIPDAP
  • STDAP
  • SWDAP

DIPDAP

here

DIPDAP是基于NXP LPC11U35为核心,支持CMSIS-DAP接口、拖拽式下载、虚拟串口等功能,DIAPDAP硬件包括以下内容:

  • Eagle原理图和板子文件(注:Eagle是PCB Layout软件)
  • PDF版原理图和板子副本文件
  • Gerber生产文件
  • BOM(材料清单)
  • eBOM(一份网上购物清单,方便购买!)

通过DIPDAP提供的硬件材料,用户可以轻松的制作一个,如果嫌麻烦可以在网上购买成品, 购买地址

STDAP

STDAP是基于ST STM32F103CBT6为核心,支持CMSIS-DAP接口、拖拽式下载、虚拟串口等功能,DIAPDAP硬件包括以下内容:

  • Eagle原理图和板子文件(注:Eagle是PCB Layout软件)
  • PDF版原理图和板子副本文件
  • Gerber生产文件
  • BOM(材料清单)
  • eBOM(一份网上购物清单,方便购买!)

需要注意的是,目前官方的DAPLink固件中并没有支持STDAP的固件

SWDAP

here

DIPDAP是基于NXP LPC11U35为核心,支持CMSIS-DAP接口、拖拽式下载等功能,DIAPDAP硬件包括以下内容:

  • Eagle原理图和板子文件(注:Eagle是PCB Layout软件)
  • PDF版原理图和板子副本文件
  • Gerber生产文件
  • BOM(材料清单)
  • eBOM(一份网上购物清单,方便购买!)

通过DIPDAP提供的硬件材料,用户可以轻松的制作一个,如果嫌麻烦可以在网上购买成品, 购买地址

技新DAPLink硬件

技新DAPLink

技新DAPLink参考官方DIPDAP硬件设计,以NXP LPC11U35为核心,支持CMSIS-DAP接口、拖拽式下载、虚拟串口等功能。技新DAPLink设计采用LCEDA,元器件在立创商城平台采购,PCB在嘉立创平台生产。技新DAPLink也是开源的,包括:

  • Gerber文件,可直接打样生产
  • PCB文件、原理图文件
  • BOM(元器件采购清单)

技新DAPLink-BOM

技新DAPLink的设计主要是为了解决以下问题:

  • 官方DAPLink硬件在国内购买比较麻烦
  • 官方DAPLink硬件的BOM中的元器件国内购买比较麻烦
  • 提供一个官方DAPLink设计参考
  • 提供一个官方DAPLink方案验证
  • 作为小册的硬件实验使用

技新DAPLink硬件地址: DAPLink_JX
技新DAPLink购买地址: 淘宝
技新DAPLink开源地址: 码云

DAPLink应用

DAPLink固件更新

DAPLink固件由两个部分组成

  • 以xxx_bl结尾的.bin文件(Bootloader)
  • 以xxx_if结尾的.bin文件(应用程序)

NXP的LPC11U35是自带Bootloader,原装的LPC11U35芯片首次上电时就会自动进入Bootloader,虚拟出一个U盘设备,然后将以应用程序拖进去即可完成烧录,之后就会自动运行应用程序

技新DAPLink固件更新

  1. 按住K1(或短接nRST和GND)插入电脑就会识别出一个CRP DISABLDU盘设备,里面有一个firmware.bin文件,将其删除
  2. 把第二章的编译产生的DAPLink固件lpc11u35_lpc812xpresso_if_crc.bin(固件位于DAPLink\projectfiles\uvision\lpc11u35_lpc812xpresso_if\build目录下)拖(复制)到U盘中
  3. 将DAPLink重新插拔一次(不需要按住K1或短接nRST和GND),就会看到一个DAPLINKU盘设备,固件更新完毕

固件更新后,DAPLINK内有DETALLS.TXT和MBED.HTM两个文件,MBED.HTM是一个网页,DETALLS.TXT是该DAPLink固件的相关信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# DAPLink Firmware - see https://mbed.com/daplink
Unique ID: 105000001781cdaa00000000000000000000000097969902
HIC ID: 97969902
Auto Reset: 0
Automation allowed: 0
Overflow detection: 0
Daplink Mode: Interface
Interface Version: 0247
Git SHA: 7574bed494828d1da9a170d4f2727bba28362eaf
Local Mods: 0
USB Interfaces: MSD, CDC, HID, WebUSB
Interface CRC: 0x7ba4edb8
Remount count: 0
URL: https://mbed.org/device/?code=105000001781cdaa00000000000000000000000097969902?version=0247?target_id=@T

DAPLink插入电脑后会识别出如下设备(如果有部分设备无法识别请检查系统驱动是否有问题):

  • MSD–USB大容量存储设备(拖拽式下载)
  • CDC–mbed Serial Port(虚拟串口)
  • HID–符合HID标准的供应商定义设备/USB输入设备(CMSIS-DAP接口)
  • WebUSB:CMSIS-DAP或USB_DFU
    注:W7和W8系统的CDC驱动需要手动安装, 驱动地址

其他DAPLink固件更新

LPC11U35本身自带Bootloader,所以只需要Bootloader的MMSD接口把固件烧录进去即可,对于本身没有自带Bootloader功能的,需要先往里先烧录Bootloader。DAPLink的固件源码编译生成的工程,对于LPC11U35之外没有Bootloader功能的DAPLink硬件提供了Bootloader固件,如DAPLink\projectfiles\uvision目录下的k20dx_bl工程就是k20dx的Bootloader

DAPLink在ARM-MDK中的使用

DAPLink的CMSIS-DAP接口是用于ARM Cortex内核MCU调试仿真的,只要IDE支持CMSIS-DAP协议接口即可使用DAPLink,这里以ARM-MDK为例,其他的IDE也类似使用,调试仿真使用的是DAPLink的CMSIS-DAP接口功能

  1. DAPLink作为仿真器连接目标设备,如STM32F103C8T6最小系统板
  2. 打开STM32F103C8T6的ARM-MDK例程
  3. 打开Options for Target选项,在Debug栏下的Use选项选择CMSIS-DAP Debugger
  4. 点击Settings,Debug栏设置如下图,点击OK完成配置,之后即可编译下载/调试

技新DAPLink

DAPLink的MSD命令使用

DAPLink允许通过MSD接口来给它一些简单的命令。复制一个指定命名的文件通过MSD接口到DAPLink,可以使DAPLink执行一个动作或一个永久有效配置,文件的内容可以被忽略(可以发送一个空文件)

MSD的命令只有在下面状态下才有效

  • 插入DAPLink,再按住K1,然后把相应的.act或.cfg文件复制到MSD接口
  • 在打automation-allowed模式下,把相应的.act或.cfg文件复制到MSD接口

MSD命令有两种

  • .act文件,触发DAPLink一个Action(动作)
  • .cfg文件,配置DAPLink一个Configuration(设置)

Action命令

start_bl.act 该文件将强制进入Bootloader,相当于拔下DAPLink,按住K1再插上。如果DAPlink已经处于Bootloader,则该命令无效

start_if.act 该文件将强制DAPLink重新进入DAPLink接口模式。它相当于拔下USB电缆,并将其插入。如果已经处于DAPLink接口模式,则此命令无效

assert.act 该文件可以用来测试DAPLink的assert实用程序。当您将该文件复制到DAPLink MSD驱动器时,DAPLink将生成对util_assert()方法的调用。assert调用导致DAPLink MSD驱动器重新加载一个附加文件ASSERT.TXT,出现在驱动器的根部。这个文件详细说明了断言失败发生的地方(源文件,行号)

refresh.act 该文件强制重新加载DAPLink MSD驱动器

erase.act 该文件触发对目标FLASH的擦除

Configuration命令

auto_rst.cfg 该文件用于配置自动复位模式,默认情况下自动复位是禁止的

hard_rst.cfg 该文件用于关闭自动复位模式,默认情况下自动复位是禁止的

auto_on.cfg 该文件用于打开automation-allowed模式,再该模式下可以出发DAPLink的MSD命令,而不需要按住K1案件。此外,Bootloader更新只允许再该模式下运行

auto_off.cfg 该文件用于关闭automation-allowed模式,automation-allowed模式默认是关闭的

ovfl_on.cfg 该文件用于打开串口溢出报告。再串口通讯过程中,如果主机PC没有以足够快的速度从DAPLink读取数据,并且发生溢出,则文本<DAPLink: overflow >将出现在串行数据中。串行溢出报告默认关闭

ovfl_off.cfg 该文件用于关闭串口溢出报告

MSD命令使用

  1. 使能automation-allowed模式。新建文本文档并重命名为auto_on.cfg,插入DAPLink并按按K1,然后把auto_on.cfg文件拷贝进DAPLink的MSD接口(虚拟U盘),这时DAPLink的MSD会重启,在根目录的DETAILS.TXT文件中Automation allowed: 1; Remount count: 1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # DAPLink Firmware - see https://mbed.com/daplink
    Unique ID: 105000001781cdaa00000000000000000000000097969902
    HIC ID: 97969902
    Auto Reset: 0
    Automation allowed: 1
    Overflow detection: 0
    Daplink Mode: Interface
    Interface Version: 0247
    Git SHA: 7574bed494828d1da9a170d4f2727bba28362eaf
    Local Mods: 0
    USB Interfaces: MSD, CDC, HID, WebUSB
    Interface CRC: 0x7ba4edb8
    Remount count: 1
    URL: https://mbed.org/device/?code=105000001781cdaa00000000000000000000000097969902?version=0247?target_id=@T
  2. 触发一个Action。新建文本文档并重命名为refresh.act,将该文档拷贝进DAPLink的MSD接口(虚拟U盘),这时DAPLink的MSD会重启,在根目录的DETAILS.TXT文件中Automation allowed: 1; Remount count: 2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # DAPLink Firmware - see https://mbed.com/daplink
    Unique ID: 105000001781cdaa00000000000000000000000097969902
    HIC ID: 97969902
    Auto Reset: 0
    Automation allowed: 1
    Overflow detection: 0
    Daplink Mode: Interface
    Interface Version: 0247
    Git SHA: 7574bed494828d1da9a170d4f2727bba28362eaf
    Local Mods: 0
    USB Interfaces: MSD, CDC, HID, WebUSB
    Interface CRC: 0x7ba4edb8
    Remount count: 2
    URL: https://mbed.org/device/?code=105000001781cdaa00000000000000000000000097969902?version=0247?target_id=@T
  3. 配置一个Configuration。新建文本文档并重命名为refresh.act,将该文档拷贝进DAPLink的MSD接口(虚拟U盘),这时DAPLink的MSD会重启,在根目录的DETAILS.TXT文件中Automation allowed: 1; Overflow detection: 1; Remount count: 3

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # DAPLink Firmware - see https://mbed.com/daplink
    Unique ID: 105000001781cdaa00000000000000000000000097969902
    HIC ID: 97969902
    Auto Reset: 0
    Automation allowed: 1
    Overflow detection: 1
    Daplink Mode: Interface
    Interface Version: 0247
    Git SHA: 7574bed494828d1da9a170d4f2727bba28362eaf
    Local Mods: 0
    USB Interfaces: MSD, CDC, HID, WebUSB
    Interface CRC: 0x7ba4edb8
    Remount count: 3
    URL: https://mbed.org/device/?code=105000001781cdaa00000000000000000000000097969902?version=0247?target_id=@T

注:其他MSD命令使用也如上配置

DAPLink其他功能介绍

CDC虚拟串口

DAPLink带有虚拟串口功能,可用于与目标设备进行串口通讯,使用方法与其他UDB转TTL的模块一样,支持的比特率有:

1
2
3
4
5
6
7
8
9600
14400
19200
28800
38400
56000
57600
115200

注:大多数DAPLink还支持这里列出来之外的串口通讯波特率

MSC拖拽式下载功能

DAPLink带有拖拽式下载功能,但是该功能通常只针对独立的目标设备,如固件lpc11u35_lpc812xpresso_if_crc.bin的拖拽式下载是针对lpc812xpresso目标的,如果想支持其他的目标就需要对DAPLink固件进行修改移植,参考文档

其他功能

DAPLink还提供了非常多的功能和应用,如自动化测试、添加一个新板支持、添加一个新设备、移植到新的硬件电路等,其中的操作都有独立的文档讲解,本章介绍的固件更新和DAPLink的MSD命令使用也只是其中一部分功能,具体可参考: DAPLink官方文档

本文标题:DAPLink设计与应用

文章作者:LGG001

发布时间:2018年08月12日 - 13:08

最后更新:2019年01月17日 - 22:01

原始链接:http://yoursite.com/2018/08/12/DAPLink设计与应用/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------
Thank You For Your Approval !