![]() |
CMSIS
版本 5.3.0
Cortex 微控制器软件接口标准
|
Cortex 微控制器软件接口标准 (CMSIS) 是 Cortex®-M 系列处理器的独立于供应商的硬件抽象层,并定义了通用工具接口。CMSIS 支持一致的设备支持和与处理器和外设的简单软件接口,简化软件重用,减少微控制器开发人员的学习曲线,并缩短新设备的上市时间。
CMSIS 的定义与各种芯片和软件供应商密切合作,提供了一种通用的方法来连接外设,实时操作系统和中间件组件。CMSIS 旨在支持来自多个中间件供应商的软件组件的组合。
CMSIS 版本 5 还支持 Armv8-M 架构 包括用于 Armv8-M 硬件安全扩展的 TrustZone® 以及 Cortex-M23 和 Cortex-M33 处理器。
CMSIS 的创建旨在帮助行业进行标准化。它可以在各种开发工具和微控制器上实现一致的软件层和器件支持。CMSIS 不是一个巨大的软件层,它引入了开销并且没有定义标准的外围设备。因此,硅工业可以通过这个通用标准支持各种基于 Cortex-M 处理器的器件。
详细的 CMSIS 的好处是:
CMSIS 使用以下基本编码规则和约定:
另外,CMSIS 为标识符推荐以下约定:
CMSIS 记录在源文件中:
Doxygen 注释示例:
/** * @brief Enable Interrupt in NVIC Interrupt Controller * @param IRQn interrupt number that specifies the interrupt * @return none. * Enable the specified interrupt in the NVIC Interrupt Controller. * Other settings of the interrupt such as priority are not affected. */
使用主流编译器验证 CMSIS 版本 5 的各个组件。为了获得多样化的覆盖范围,Arm 在各种测试中使用 Arm Compiler v5(基于 EDG 前端),Arm Compiler v6(基于 LLVM 前端)和 GCC Compiler。对于每个组件,“验证”部分描述了各种验证的范围。
CMSIS 组件与一系列 C 和 C++ 语言标准兼容。CMSIS 组件符合 Arm 架构应用程序二进制接口(ABI) (例外 CMSIS-RTOS v1)。这确保 C API 接口支持各种工具链之间的互操作。
由于 CMSIS 定义了扩展到各种处理器和设备的 API 接口和函数,因此运行时测试覆盖范围有限。但是,使用专用测试套件验证了几个组件。
使用 PC-Lint 检查 CMSIS 源代码是否符合 MISRA C:2012 标准。MISRA 偏差记录在合理的努力中,但是 Arm 没有声明 MISRA 合规性,因为如今没有指导性执行计划。由于 CMSIS 源代码存在与 C 语言标准不兼容的风险,特别是各种 C 编译器可能产生的警告,因此不会检查 CMSIS 源代码。
CMSIS 由 Apache 根据 Apache 2.0 许可免费提供。查看 Apache 2.0 许可证。
ARM::CMSIS 包包含以下内容:
| 文件/目录 | 内容 |
|---|---|
| ARM.CMSIS.pdsc | 软件包描述文件采用 CMSIS-Pack 格式。 |
| LICENSE.txt | CMSIS 许可协议(Apache 2.0) |
| CMSIS | CMSIS 组件 (见下文) |
| Device | 基于 ARM Cortex-M 处理器的 CMSIS 参考实现 |
| 目录 | 内容 |
|---|---|
| Documentation | 本文档 |
| Core | 用于 CMSIS-Core (Cortex-M) 相关文件的用户代码模板,在 ARM.CMSIS.PDSC 中引用 |
| Core_A | 用于 CMSIS-Core (Cortex-A) 相关文件的用户代码模板,在 ARM.CMSIS.PDSC 中引用 |
| DAP | CMSIS-DAP 调试访问端口源代码和参考实现 |
| Driver | CMSIS-Driver 外围接口 API 的头文件 |
| DSP_Lib | CMSIS-DSP 软件库源代码 |
| NN | CMSIS-NN 软件库源代码 |
| Include | 包含 CMSIS-Core (Cortex-M) 和 CMSIS-DSP 的头文件 |
| Lib | CMSIS-DSP 为 ARMCC 和 GCC 生成库 |
| Pack | CMSIS-Pack 示例 |
| RTOS | CMSIS-RTOS 版本 1 以及 RTX 参考实现 |
| RTOS2 | CMSIS-RTOS 版本 2 以及 RTX 参考实现 |
| SVD | CMSIS-SVD 示例 |
| Utilities | PACK.xsd (CMSIS-Pack 模式文件), PackChk.exe (软件包检查工具), CMSIS-SVD.xsd (CMSIS-SVD 模式文件), SVDConv.exe (用于 SVD 文件的转换工具) |