三.个人对于CMSIS的理解
我们在进行开发ARM的Cortex-M系芯片开发时经常看见CMSIS这一个名词,但是这个到底是什么呢?
CMSIS(Cortex Microcontroller Software Interface Standard),顾名思义,是Cortex-M系处理器的标准软件接口。它是由ARM提供的一组硬件抽象层接口API,以便软件开发者能够更容易地编写可移植的、高效的和可重用的代码。
CMSIS的主要结构:
设备访问层(CMSIS-DAP):提供了一套标准的API来访问微控制器的内部外设,如GPIO、中断控制器、定时器等。
DAP.h 和 DAP.c:用于调试访问端口的文件。
内核访问层(CMSIS-CORE):定义了访问Cortex-M处理器内核的接口,包括寄存器映射、中断处理和内核服务的API。
core_cm*.h:这是针对特定Cortex-M系列处理器的核心头文件,例如core_cm3.h是针对Cortex-M3处理器的。
core_sc*.h:针对Cortex-M0和Cortex-M0+处理器的核心头文,cmsis_version.h:包含CMSIS版本信息的头文件。
irq_ctrl.h:中断控制相关的头文件。
mpu_armv*.h:内存保护单元(MPU)相关的头文件,针对不同的ARM版本。
中间件访问层(CMSIS-Middleware):为中间件组件(如实时操作系统、网络协议栈、电机控制算法等)提供标准化的接口。
这些文件包含了中间件组件,如RTOS、网络协议栈、图形库等的接口定义。
CMSIS-Driver:
提供硬件抽象层,用于与微控制器的外设进行通信。
包括各种外设的驱动模型和接口定义,例如SPI、I2C、USB等。
CMSIS-RTOS:
为实时操作系统提供标准的API。
使得不同的RTOS可以在CMSIS层上进行抽象,从而实现软件的可移植性。