做嵌入式软件开发有一段时间了,最近看了些资料,才发现 CMSIS DAP 可以自己做,所以下定决心,做一个自己的 CMSIS DAP 来玩玩。
CMSIS DAP 是 CMSIS 的一个组件包。CMSIS 包括了非常多的东西,以前用 STM32 做开发的时候,只知道 CMSIS 定义了 Cotrex-M 内核的一些公共接口,没想到经过这些年的发展,CMSIS 已经发展出了更多的功能了。
CMSIS 简介
CMSIS 是由 ARM 公司设计的一个框架。它包含了很多工具和框架,主要的目的是让开发者在使用 ARM 内核的芯片做开发更方便,产品迭代速度更快捷。CMSIS 提供了通用的接口用来调用各种芯片的外围设备、中间件和嵌入式实时操作系统。
通俗的理解就是,ARM 公司和各个芯片厂商合作,实现了一套 C/C++ 的接口来统一各芯片厂商提供的芯片 SDK,从而方便芯片用户在开发时候的代码调用。类似于在 C 语言中,用户使用标准库来对计算机的各种设备进行操作,从而不用关心计算机底层的具体运行情况。
CMSIS 的标准,我觉得最大的好处是使得嵌入式软件开发时的软件架构更灵活,可以非常方便的适配相同内核,不同厂商的芯片。
CMSIS 组件
ARM 根据不用的领域和需求,将 CMSIS 分成了各种组件:
CMSIS-… | 目标处理器 | 说明 |
---|---|---|
Core(M) | Cortex-M,SecureCore | 提供 Cortex-M 内核处理器和各种片上外设的标准 API 接口 |
Core(A) | Cortex-A5/A7/A9 | 提供 Cortex-A5/A7/A9 内核处理器和各种片上外设的标准 API 接口 |
Driver | All Cortex | 中间件的通用外设驱动程序 |
DSP | ALL Cortex-M | DSP库,用于直接操作带 DSP 的内核 |
NN | All Cortex-M | 经过 ARM 优化的,开发神经网络的工具集 |
RTOS v1 | Cortex-M0/M0+/M3/M4/M7 | ARM 的嵌入式实时操作系统 RTX 的接口和实现 |
RTOS v2 | All Cortex-M, Cortex-A5/A7/A9 | 在 RTOS v1 的基础上扩展的接口和实现 |
Pack | All Cortex-M,SecurCore,Cortex-A5/A7/A9 | 各种组件包 |
Build | All Cortex-M,SecurCore,Cortex-A5/A7/A9 | ARM 提供的一套构建工具集 |
SVD | All Cortex-M,SecurCore | 主要是用于调试时查看片上外设描述 |
DAP | All Cortex | 与 CoreSight 调试访问接口的实现 |
Zone | All Cortex-M | 定义方法来描述系统资源并将这些资源划分为多个项目和执行区域 |
CMSIS 构建了一个在 Arm Cortex 处理器上做开发的统一环境,看看 CMSIS 整个组件的框图,就可以大概看出 CMSIS 的强大功能了。

CMSIS 代码仓库
CMSIS 以开源的方式进行迭代,代码仓库已经部署在了 Github 上:https://github.com/ARM-software/CMSIS_5。
我把 CMSIS 的代码仓库从 Github 上 clone 到本地了。其中,CMSIS 目录下就是具体的 CMSIS 的源代码了。