分享

CMSIS-DAP调试标准解读

 waston 2018-01-19
今天和大家聊聊单片机开发那点事,如果问100个单片机开发工程师是否用过J-Link仿真器,相信其中的90个会说Yes。但是如果再问那90个工程师,是否正在使用正版的仿真器,估计没有几个敢说Yes。好吧,兄弟我也是一样,用过那么多个D版的J-Link仿真器,真的想对逆向工程破解J-Link的人表示最高敬意啊,毕竟将ARM MCU的开发工具的花费降到了最低!
J-Link仿真器长这样的:
image001.png
很多刚刚入门ARM MCU开发的工程师,会认为J-Link是开发ARM MCU的标准配置,进而也会想当然认为也许J-LinkARM公司的产品,小哥我当年也是这样认为的。可是可是,情况并不是这样滴啊。其实啊,ARM公司自己推出的仿真器叫做ULINK系列,最常用的一款是ULINK2,长这样子滴:
image003.png

正版的ULINK2也好贵,估计在1000元以上,不要问我具体是什么价格,小哥也没有用过正版啊~ 幸运的是,我朝备有人才出,那些逆向工程和破解固件的大神们,早就破解并克隆了。因此x宝网站搜一搜,可以看到ULINK2的价格啊,嘿嘿,50元包邮~

后来ARM推出mbed项目,顺带出来了个CMSIS-DAP,CMSIS-DAP是OnBoard(OB)调试工具。


那么问题来了,CMSIS-DAP又是啥玩意?和J-Link,ULINK2等仿真器是啥关系呢?

J-link 、Ulink实现了jtag协议,并且在上位机做了附加软件,方便用户使用,控制,调试芯片内部的程序。 cmsis dap同样实现了调试口DAP协议,但是使用usb hid实现,所以很轻量级。一般带USB的16MHz主频的MCU即可实现。目前cmsis dap得到了openOCD和pyOCD的支持,同样可以实现jlink上位机的功能。
使用usb hid协议,向下对于调试器的实现来说降低了复杂度,向上对于IDE的集成带来的好处则是免驱动,方便IDE集成并支持调试器。

下面就来单独讲讲CMSIS-DAP。

CMSIS-DAP名字好长啊,这个名字本身就可以拆解两个部分,CMSIS和DAP。

先来说说CMSIS,是ARMCortex-M Software Interface Standard的缩写,也就是ARM Cortex-MMCU软件接口标准。从ARM官方网站上可以查到CMSIS的介绍:http://www./zh/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php

DAP呢,就是DebugAccess Port的意思,也就是调试访问口。所以CMSIS-DAP的意思,差不多就是ARM公司推出的一个标准的软件调试访问接口,基本的介绍看这里:http://www./support/man/docs/dapdebug/dapdebug_introduction.htm

该网页是英文的,用我的破英文翻译原文:
CMSIS-DAP是USB调试器设备单元的一种固件实现。运行在主机电脑上的调试软件,通过USB接口的调试器设备,最终能够调试运行在目标MCU上的应用软件。CMSIS-DAP调试设备通过JTAG或者SWD连接到目标设备。ARM Cortex 处理器提供了CoreSight Debug和Trace单元。CMSIS-DAP调试器能够支持那些包含一个或者多个ARM内核的处理器。
框图如下:
image005.png
上图中可以看到,CMSIS-DAP调试器不仅仅可以调试Cortex-M内核的单片机,还可以对Cortex-A系列的高端处理器进行调试。而主机开发环境,则支持MDK,DS-5,当然较为新版的IAR For ARM中也已经对CMSIS-DAP实现完美支持~ 不信?来来来,眼见为实~MDK中对CMSIS-DAP调试器的支持:
image007.png
image009.png


IAR中对于CMSIS-DAP调试器的支持:
image011.png

所以CMSIS-DAP调试器的功能其实就是替代J-Link,ULINK2等调试器,由于其实现的起来固件比较简单,因此越来越多的ARM处理器的厂商开始在自家的开发板配备CMSIS-DAP的功能。在此之前,很多ARM处理器厂家想要在自家的官方开发板上配备调试器,但是又不太愿意花费精力去实现调试器,所以大多数都选择J-Link Lite版本。
列举几个配备CMSIS-DAP调试器的官方ARM处理器官方开发板:
(1)      NXP的FRDM开发板系列,主要用于评估KinetisM0+/M4内核MCU

image013.png
(2)   Nordic公司的nRF51-DK开发板,支持目标芯片CortexM0内核nRF51822和nRF51422
image015.png


嘿嘿,讲了这么多,好累。终于到了广告时间了。接下来给大家介绍一款超迷你的CMSIS-DAP调试器实现方案,并且该方案还加入了多种功能,方便大家调试ARM内核的MCU。当当当当,它就是CMSIS-DAP Mini仿真器

它长这样:
image017.png
CMSIS-DAP Mini仿真器具备特点:
1)在线仿真调试的功能
       - 采用高速的ARM内核处理器实现调试的协议,性能稳定,快速
       - MDKIARGCC等环境无缝配合,插上即可识别
       - 支持SWDJTAG两种不同的调试接口
2USB转串口
       - 只需一条USB线即可完成调试仿真+虚拟串口的功能
       - 虚拟串口,波特率可调
       - 采用USB CDC组合设备支持虚拟串口
3)为目标板供电
       - 提供3.3V,最大150mA的电流
       - 可以为您的开发板供电,无需任何电源,即可玩转ARM
4)无版权顾虑
       - 使用盗版的J-Link调试器,其实是具有法律风险的
       - CMSIS-DAP Mini则无需担心版权问题,可放心使用!
5)支持所有Cortex-M系列的ARM处理器
       - 比如STM32, Kinetis, LPC, Atmel, EFM32,GD32等等
6)体积超小
       - CMSIS-DAP Mini仿真器体积超小,半张名片大小
       - 重量轻巧,非常适合组建口袋实验室
7)支持标准ARM JTAG接口标准
       - 10P2.54MM间距的ARM JTAG标准
       - 配套的10P-20P转接板,支持2.54MM间距,20P的最常用ARM JTAG接口
image019.png
硬件接口这样的:

硬件接口如上图所示,总共有三个部分:

110针的标准2.54MM接口,如图左上角为Pin 1

  Pin脚编号  
功能
Pin脚编号
功能
  1  
接用户目标板的电源,用户板子没有上电时,仿真器的驱动信号没有输出
2
JTAG_TMS 或者SWD_DIO
  3  
接单片机的UART RX
4
JTAG_TCK或者SWD_CLK
  5  
接单片机的UART TX
6
JTAG_TDO
  7  
供电脚,3.3V,输出给目标板,最大150mA电流驱动能力
8
JTAG_TDI
  9  
GND,接地
10
接单片机的复位脚

2)转接板4帧的接口,下方是电源灯,如果短路,灯灭
  
Pin脚编号
  
功能
  
1 – TGT-RX
  
接用户板子的单片机UART RX脚,与仿真器10P接口的3脚直连
  
2 – TGT-TX
  
接用户板子的单片机UART TX脚,与仿真器10P接口的5脚直连
  
3 – 3.3V
  
供电脚,3.3V,与仿真器10P接口的7脚直连  
  
4- GND
  
接地脚

3标准的20P 2.54MM间距JTAG接口,与J-Link兼容

那么这东西现在在哪里呢? 目前正在电子发烧友论坛众筹,火热进行中,当然,时间不多了,如果喜欢它,请支持~


QQ截图20160406101016.png

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多