0%

CMSIS架构简介

做嵌入式软件开发有一段时间了,最近看了些资料,才发现 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 的源代码了。