CMSIS 简介

原文链接:CMSIS: Introduction


CMSIS 简介

CMSIS(通用微控制器软件接口标准)是一套 API、软件组件、工具和工作流,旨在:

  • 简化软件重用;

  • 降低微控制器开发者的学习门槛;

  • 加快项目构建与调试速度;

  • 缩短新应用的上市周期。

CMSIS 起初是基于 Arm® Cortex®-M 的通用硬件抽象层,后来扩展支持入门级的 Cortex-A 处理器。它通过定义通用工具接口并提供简洁的软件接口,简化了对处理器和外设的访问。

CMSIS 致力于推动行业标准化。在各种开发工具和微控制器平台之间提供一致的软件层和设备支持,不会引入大的软件开销,也不定义标准外设,因此芯片厂商可以灵活支持各种 Arm Cortex 设备。


CMSIS 组件

基础组件(Arm::CMSIS)

  • 为设备的基本功能提供软件抽象;

  • 同一 GitHub 仓库维护,打包为 Arm::CMSIS

组件描述
CMSIS-CoreCortex 处理器标准化访问接口
CMSIS-Driver中间件通用外设驱动接口
CMSIS-RTOS2实时操作系统通用 API

扩展组件(独立 CMSIS-Pack)

组件描述
CMSIS-DSP嵌入式系统优化的计算函数
CMSIS-NN高效神经网络内核
CMSIS-View事件记录器和组件可视化技术
CMSIS-Compiler标准 C 库 IO 重定向工具

工具(独立维护)

工具描述
CMSIS-ToolboxCMSIS 软件包处理命令行工具
CMSIS-Stream优化 DSP/ML 数据流的工具与方法
CMSIS-DAPCoreSight 调试访问端口的调试单元固件
CMSIS-Zone系统资源描述与分区配置工具

规范

规范描述
CMSIS-Pack软件与设备/板支持交付机制
CMSIS-SVD用于调试视图的外设描述格式

CMSIS 的优势

  • 降低开发门槛与成本,加快上市时间;

  • 一致的软件接口提升代码可移植性与可复用性;

  • 提供调试连接、外设视图、软件交付和设备支持接口;

  • 编译器无关,主流编译器均可支持;

  • 增强调试功能:支持 ITM printf 输出、外设信息查看;

  • 使用 CMSIS-Pack 格式简化分发与更新;

  • CMSIS-Zone 简化多核、内存区和外设的系统分区配置;

  • CMSIS-Toolbox 支持 CMake 和集成开发环境(如 VS Code);


开发模式

CMSIS 与多家芯片和软件厂商合作开发,致力于为外设、RTOS、中间件提供统一接口,支持跨厂商组件组合开发。

CMSIS 是开源协作开发,基础仓库托管在:github.com/Arm-software/CMSIS_6


编码规则

  • 遵循 ANSI C(C99)与 C++(C++03)标准;

  • 使用 <stdint.h> 中定义的数据类型;

  • #define 表达式使用括号;

  • 遵循 MISRA C:2012,但不强制符合,偏差会记录;

  • 标识符建议:

    • 全大写用于核心/外设寄存器、指令;

    • 驼峰命名用于函数和中断;

    • 使用命名空间前缀避免冲突;

注释格式符合 Doxygen 要求,如:

/**
 * @brief 在 NVIC 控制器中使能中断
 * @param IRQn 中断号
 * @return 无
 */

验证

CMSIS 组件使用 Arm Compiler 6(基于 LLVM)和 GCC 验证。与 C/C++ 标准兼容,符合 Arm ABI。

部分组件拥有专用测试集(如 CMSIS-Driver 和 CMSIS-RTOS2)。CMSIS C 代码尽力符合 MISRA C:2012,但未强制执行,C++ 不做检查以避免与 C 冲突。


从 CMSIS v5 迁移

CMSIS v6 主要功能与 v5.9.0 相同,但结构和命名可能有所不同。建议阅读:

注意:v6.0.0 中 Cortex-M 的头文件有不兼容变化,请查阅修订历史。


许可证

CMSIS 遵循 Apache 2.0 License,由 Arm 免费提供。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值