https://microsoft.github.io/debug-adapter-protocol/
调试适配器协议(DAP)定义了在开发工具(例如IDE或编辑器)和调试器之间使用的抽象协议。
在IDE或编辑器中添加针对新语言的调试器不仅是一项艰巨的工作,而且令人沮丧的是,由于每个工具都使用不同的API来实现相同的功能,因此无法轻易在多个开发工具上分摊此工作。
调试适配器协议(DAP)背后的思想是将开发工具的调试支持与调试器或运行时进行通信的方式抽象为协议。由于假定现有的调试器或运行时在任何时候都采用此协议是不现实的,因此我们假定中介组件(即所谓的调试适配器)使现有的调试器或运行时适应调试适配器协议。
调试适配器协议使为开发工具实现通用调试器成为可能,该工具可以通过调试适配器与不同的调试器进行通信。调试适配器可以在多个开发工具中重复使用,从而大大减少了在不同工具中支持新调试器的工作。
调试适配器协议对调试器提供商和工具提供商而言都是双赢!
CMSIS-DAP是用于将调试端口连接到USB的调试单元的接口固件。 在主机上执行的调试器通过USB连接到调试单元和运行应用程序软件的设备。 调试单元通过JTAG或SW连接到目标设备。 ARM Cortex处理器提供CoreSight调试和跟踪单元。 CMSIS-DAP支持包含一个或多个Cortex处理器的目标设备。
这里,DAP是Debug Access Port的意思
CMSIS-DAP提供了一种通过USB访问ARM Cortex微控制器的Coresight调试访问端口(DAP)的标准化方法。 CMSIS-DAP通常实现为板载接口芯片,通过开发板与一侧运行在主机上的调试器之间通过JTAG(联合测试操作组)或SWD(串行线调试)提供直接USB连接。 目标设备访问另一台上的Coresight DAP。
为什么需要CMSIS-DAP?
有关引入CMSIS-DAP的原因有很多:
在CMSIS-DAP标准之前,许多USB wigglers都实现了自己的协议。使用这种配置,主机调试器必须了解这些不同的协议,并且必须实现所有这些协议,这会产生很多碎片并重新发明轮子。同时,协议通常是在JTAG级别定义的,这意味着它们很慢。 CMSIS-DAP为调试器提供了标准化的接口,该接口在Coresight DAP级别上定义,允许使用标准接口和快速的无驱动程序实现。
借助新的CMSIS-DAP层,主机调试器可以通过SWD或JTAG调试目标,而无需实现这两个协议
USB连接使用HID驱动程序类。由于每个操作系统都内置了HID驱动程序,因此无需在主机上安装特定的驱动程序。
CMSIS-DAP如何集成?
如前所述,CMSIS-DAP必须在接口芯片上实现。该芯片提供了主机计算机(例如,通过USB)和必须调试的目标(通过SWD或JTAG)之间的链接。
CMSIS-DAP标准概述
数据包在主机调试器和接口芯片之间交换。基本上,主机发送命令,调试单元发送命令响应。
主机可以发出不同类型的命令:
通用命令:请求信息并控制调试单元。也用于连接/断开调试单元。
常见的SWD / JTAG命令:例如用于设置时钟速度
SWD特定命令:配置SWD模式的参数
JTAG特定命令:配置JTAG设备链
传输命令:读/写CoreSight寄存器。这些命令与传输方式无关(SWD或JTAG)
示例:通过CMSIS-DAP读取内存
假设调试器需要读取内存中特定位置的值。主机必须发送以下命令:
传输命令:写入CSW寄存器(控制/状态字寄存器)。这将配置传输(32位/ 16位/ 8位传输)
传输命令:使用存储单元的地址写入TAR寄存器(传输地址寄存器)
传输命令:读取DRW寄存器(数据读取/写入寄存器)以读取先前指定位置的值
结论
CMSIS-DAP为调试器提供了标准化的接口。它可能会成为调试器和调试单元将要实现的实际标准。
DAP调试适配器协议
发表评论