​ARM仿真调试器那些事儿

2021-10-09 10:06:22 浏览数 (1)

众所周知,嵌入式软件开发离不开调试器。写一个稍有代码规模(5K行以上)的嵌入式应用程序一般不可能一次性搞定,没有任何bug,出了bug并不可怕,只要我们能尽快定位bug并修复即可,调试器就是定位bug的利器。有了调试器我们便可以进入系统主控芯片内部一窥究竟,控制芯片执行代码的动作,实时查看芯片内部状态,辅以各种调试技巧让bug无处藏身。

Arm 仿真调试器有哪些?

那么面向ARM Cortex-M系列芯片的调试器有哪些呢?目前市面上Cortex-M调试器种类(这里主要指的是硬件生产商)非常多,主要分为如下两大阵营:

  • 第三方公司出品:SEGGER的J-Link、IAR的I-jet、ARM的ULINK、开源项目OpenJTAG等
  • 半导体厂商出品:ST的ST-LINK、NXP的LPC-Link和OpenSDA、TI的Stellaris ICDI、Nuvoton的Nu-Link等。

从上述两大阵营可以知道主流半导体厂商为了加强自己的产品生态,都会基于自有MCU推出调试器,但不通用。而市面上最流行的通用性调试器是SEGGER公司的通用型J-Link调试器。

如果问100个单片机开发工程师是否用过J-Link仿真器,相信其中的90个会说Yes。但是如果再问那90个工程师,是否正在使用正版的仿真器,估计没有几个敢说Yes。为什么呢?超级普及的J-Link调试器虽然人间高质量,尤其是J-Link上位机软件功能(J-Link Commander等)非常强大,但正版价格对于嵌入式工程师来讲,更多的感受是“想说爱你不容易”!

J-Link仿真器长这样的

想说爱你不容易

Mbed 与 CMSIS-DAP 调试标准解读

上文我们提到ARM公司有自己的仿真器系列,叫做ULINK系列,最常用的一款是ULINK2。2014年,ARM宣布了针对物联网低功耗设备的操作系统mbed OS。mbed 可帮助开发者您构建自己的嵌入式连接设备,从规划到原型设计再到生产。即通过允许开发者在可与所有支持 mbed 的硬件搭配使用的操作系统(mbed 操作系统)上编写软件,同时还能将 mbed 设备连接器服务连接到云。

ARM在推出mbed OS的同时,还推出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,是 ARM Cortex-M Software Interface Standard的缩写,也就是 ARM Cortex-M MCU 软件接口标准;DAP 是 Debug Access Port 的缩写,也就是调试访问口。

CMSIS-DAP 是 USB 调试器设备单元的一种固件实现。运行在主机电脑上的调试软件,通过 USB 接口的调试器设备,最终能够调试运行在目标 MCU 上的应用软件。CMSIS-DAP 调试设备通过 JTAG 或者SWD连接到目标设备。ARM Cortex 处理器提供了 Core Sight Debug 和 Trace 单元。CMSIS-DAP 调试器能够支持那些包含一个或者多个 ARM 内核的处理器。

框图如下:

▲CMSIS-DAP框图

上图中可以看到,CMSIS-DAP 调试器不仅仅可以调试 Cortex-M 内核的单片机,还可以对 Cortex-A 系列的高端处理器进行调试。而主机开发环境,则支持 MDK、DS-5,当然较为新版的 IAR For ARM 中也已经对 CMSIS-DAP 实现完美支持。

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

所以 CMSIS-DAP 调试器的功能其实就是替代 J-Link 调试器,由于其实现的起来固件比较简单,因此越来越多的 ARM 处理器的厂商开始在自家的开发板配备 CMSIS-DAP 的功能。在此之前,很多 ARM 处理器厂商想要在自家的官方开发板上配备调试器,但是又不太愿意花费精力去实现调试器,所以大多数都选择 J-Link Lite 版本。

轻量级 arm 调试仿真器 – Wlink

上文铺垫了很多调试器与 CMSIS-DAP,现在到了广告时间,我们为大家带来轻量级 arm 调试仿真器 - WLink,让开发者不需要土豪级的装备,就能调试ARM 内核的 MCU。

WLink 由成都五枝桂半导体科技有限责任公司开发的轻量级的仿真调试工具。它基于 CMSIS-DAP 内核,优化了固件设计,增强了硬件可靠性,并与原厂 ARM 芯片厂商合作验证,让 ARM 嵌入式系统开发更加简单快捷。Wlink 仿真调试器集成了虚拟串口功能,拥有极高性价比,目前官方报价288人民。

▲WLink图示

Wlink 基于最新 CMSIS-DAP V2.0 协议,可以在 Keil、IAR 或者其他 IDE 环境下对任何 Cortex-M 系列的 MCU 进行在线 JTAG/SWD 调试、设置断点、查看变量、串口打印等。

其主要技术特征如下:

1) 在线仿真调试功能

  • 支持 SWD、JTAG 两种不同的调试接口
  • 支持 1.6V~3.3V 电压范围和 5V 容限输入
  • 支持具有 CoreSight 寄存器的 Corte-A/R/M 的 CPU
  • USB 2.0 高速兼容接口
  • 双色状态指示
  • 手动复位仿真器

2) USB 虚拟通讯接口(VCP)功能

  • UART 接口支持 3.3V 电压范围和 5V 容限输入
  • 一条 USB 线即可完成调试仿真 虚拟串口的功能
  • VCP 频率高达 15 MHz
  • 搭配适配板可以支持 RS232 和 RS-485 通讯
  • 搭配适配板可以支持 1.6V~5V 电平

3) 电源供给

  • 通过 Micro USB 接口自供电
  • 提供目标板电源 3.3V 和 5V, 最大电流可达 120 mA

在常用开发环境中的设置如下:

- MDK IDE 中的 SWD 方式:

- MDK IDE 中的 JTAG 方式:

- IAR IDE 环境下

另外 Wlink 的虚拟串口在 Win10 下是免驱的,无需用户寻找安装驱动,即插即用,一根 USB 线解决了在线仿真和虚拟串口的功能,极大的简化了用户的接线,提高了开发效率。

0 人点赞