CMSIS是什么

ARM 426浏览

CMSIS是什么,虽然名字跟CMMI很像,但其实没什么关系。

借用百度百科的释义:ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。

简言之,CMSIS是由ARM公司和众多生产Cortex-M处理器的公司共同定义的一种软件接口标准,以实现不同Cortex-M处理器的软件重用,降低迁移成本。Cortex-M处理器是用来替代ARM7系列的,但CMSIS标准是随着Cortex-M的普及而提出的,ARM公司意识到了ARM7时代各个厂商的产品兼容性、可迁移性差的问题。同时从单片机开发继承而来传统的“基于寄存器”的开发方式的效率和开发人员培养难度越来越无法适应日趋复杂的应用开发。

嵌入式软件从业人员要么是从单片机开发转来的,要么是从PC端应用开发转来的。前者有一定的电路和处理器芯片知识,但缺乏现代软件开发的方法和工程理论。后者普遍有高级开发语言的经历(C#,Java等)、了解诸如面向对象开发等较先进的方法,但他们缺乏电路和芯片的知识,甚至对寄存器都很难理解。

CMSIS的出现无疑对基于CM芯片的开发带来了福音,其分层结构使软件有了良好的架构,降低了系统迁移的难度。对寄存器操作的封装(各厂商提供)降低了软件开发人员的难度。

借用百度百科对CMSIS软件层次和组件的说明

(http://baike.baidu.com/link?url=pCmFJDdCNjcwZCSP9hSwbQSRbsx1ah0FGPDHUXJ9DUR8tuIkJfUwefFYL2HkZbh3wylsWx5oIMDXTB1-Z5-j2K#refIndex_1_5152578)

 

CMSIS软件层次

CMSIS可以分为多个软件层次,分别由ARM公司、芯片供应商提供。
其中ARM提供了下列部分,可用于多种编译器:
● 内核设备访问层:包含了用来访问内核的寄存器设备的名称定义,地址定义和助手函数。同时也为RTOS(实时操作系统)定义了独立于微控制器的接口,该接口包括调试通道定义。
● 中间设备访问层:为软件提供了访问外设的通用方法。芯片供应商应当修改中间设备访问层,以适应中间设备组件用到的微控制器上的外设。目前中间设备访问层仍处于开发过程中,本文不做详述。 芯片供应商扩展下列软件层:
● 微控制器外设访问层:提供片上所有外设的定义。
● 外设的访问函数(可选):为外设提供额外的助手函数。CMSIS为Cortex-Mx微控制器系统定义了:
● 访问外设寄存器的通用方法和定义异常向量的通用方法。
● 内核设备的寄存器名称和内核异常向量的名称。
● 独立于微控制器的RTOS接口,带调试通道。
● 中间设备组件接口(TCP/IP协议栈,闪存文件系统)。

CMSIS包含的组件

1、外围寄存器和中断定义: 适用于设备寄存器和中断的一致接口
2、内核外设函数:特定处理器功能和内核外设的访问函数
3、DSP 库:优化的信号处理算法,并为 SIMD 指令提供Cortex-M4 支持
4、系统视图说明(SVD):描述设备外设和中断的XML 文件。
该标准完全可扩展,可确保其适合于所有 Cortex-M处理器系列微控制器,从最小的8 KB 设备到具有复杂通信外设(如以太网或USB)的设备。(内核外设函数的内存要求少于1 KB 代码,少于10 字节RAM)。

 

 

另外,Keil从v5.0版本开始内置了CMSIS的支持,相信随着新版本的发布,基于CMSIS体系的开发将受到厂商和开发人员的青睐。