> 文章列表 > 一种wifi无线DAP-LINK调试器的设计

一种wifi无线DAP-LINK调试器的设计

一种wifi无线DAP-LINK调试器的设计

        CMSIS-DAP是由ARM主导开发的调试器项目,主要为了便于进行ARM芯片寄存器级的在线调试(因为采用JTAG实际上也可以用于RISC-V等处理器架构的调试),最初名称叫CMSIS-DAP v1,该版本调试器采用USB-HID免驱动协议,直接连接PC端配合IDE(IAR、KEIL等)即可实现微控制器的在线调试,由于USB-HID在全速设备中最快中断传输时间间隔为1ms,故调试速度上稍慢于JLINK等商业调试器。

        鉴于上述缺点后续CMSIS-DAP进行了协议升级,升级为CMSIS-DAP v2也叫DAP-LINK。DAP-LINK采用BULK传输,可以以更快的速率与调试接口交互(USB速度可以与JLINK-OB等全速设备持平),DAP-LINK同样采用免驱的WINUSB协议(针对WIN8.1以上)。由于DAP-LINK需要WIN8.1以上操作系统支持故兼容性不如CMSIS-DAP v1,在旧操作系统上如WIN7则只能使用USB-HID协议。另外KEIL从5.29才开始支持CMSIS-DAP v2,而IAR则从8.32版本才支持CMSIS-DAP v2。总之CMSIS-DAP v2速度更快但兼容性不如CMSIS-DAP v1。

        CMSIS-DAP标准由ARM制定并随CMSIS库将源代码提供给用户,用户可以自由移植该调试接口库。通过CMSIS-DAP库也衍生了很多开源调试器。目前市面上多数DAP-LINK调试器是通过移植ARM的CMSIS-DAP库实现的。

        目前市面上的DAP-LINK调试器多采用有线USB连接,本文介绍并开发了一种使用无线wifi的DAP-LINK调试器,通过wifi连接目标MCU和PC端,实现调试器的无线连接。由于在传输层面上多增加了一层wifi传输协议,将不可避免的导致调试速度的降低,这是无线调试的一项缺点,但是在某些特殊需求下可能获得的优势大于其缺点。下面介绍无线wifi调试器的设计方法和成品特性。

        对于无线调试器其适用的范围如下:

  1.         替换JLINK等调试器
  2.         需要电气隔离的调试场合
  3.         有高压电击危险的调试场合
  4.         空间受限或机械伤人的调试场合
  5.         需要无线USB转串口通信的场合

        无线DAP-LINK需要使用wifi协议,目前成本较低wifi-soc可选择ESP32系列。ESP32具备完善的wifi协议层且运行速度较快,适合作为调试器的承载方案。无线DAP-LINK的硬件结构较为简单如图1所示:

图1 硬件结构

硬件ESP32部分的设计原理如图2所示:

图2 ESP32部分原理图

         整体硬件原理较为简单,实际上以上电路可以即可实现有线DAP-LINK调试器,因为ESP32自带一个全速的USB接口。

        下面介绍软件设计,区别于有线DAP-LINK,无线DAP-LINK的主要变更点在于软件的接口设计,需要在USB和DAP协议中间穿插一层wifi协议。传统的有线方式软件结构如图3所示:

图3 有线DAP-LINK软件结构

         无线方式在数据传输层使用Socket代理,软件结构如图4所示:

图4 无线DAP-LINK软件结构

         所以,对于软件层面,主要工作只是在USB数据收发函数中增加一层Socket服务端和客户端应用即可,另外增加部分连接状态管理功能即可成功实现无线DAP-LINK。

        基于以上思路,博主使用ESP32成功设计了一款使用wifi的无线调试器。为提高资源使用效率,博主设计的DAP-LINK调试器可使用有线模式和无线模式,无线模式需要两个调试器配合使用,其中一个作为客户端另一个作为服务端即可。当不使用无线模式时,可以得到两个相同的有线调试器。设计成品如图5所示:

图5 无线调试器成品

         博主打样时还有好几块剩余,如有需要可点击

        使用过程中欢迎提出BUG及优化意见,以便博主进一步优化。