CMSIS-RTOS相关的一些内容

💡 原文中文,约2200字,阅读约需6分钟。
📝

内容提要

CMSIS是ARM与编译器和半导体厂商共同遵循的标准,为Cortex-M系列提供通用API接口。CMSIS-RTOS是ARM发布的操作系统标准软件接口,屏蔽了操作系统,降低了学习门槛。CMSIS-RTOS提供了标准化的编程接口,封装了RTX/Embos等第三方RTOS。CMSIS-RTOS是物联网操作系统mbedOS的基础。

🔎

延伸解读

CMSIS-RTOS 的定位:统一接口而非操作系统

CMSIS-RTOS 本身不是实时操作系统,而是 ARM 发布的标准软件接口层。它把 FreeRTOS、RTX 等具体 RTOS 屏蔽在接口之下,开发者只需调用 CMSIS-RTOS 提供的函数,无需直接学习每个 RTOS 的专有 API。这降低了学习门槛,也让代码在不同 RTOS 之间更容易复用。不过文章指出,目前只有 FreeRTOS 和 RTX 能很好地支持 CMSIS-RTOS,其他 RTOS 尚未适配,因此实际选型时仍需确认目标 RTOS 的支持情况。

CMSIS_V1 与 CMSIS_V2:STM32CubeMX 中的版本选择

在 STM32CubeMX 配置 FreeRTOS 时会出现 CMSIS_V1 和 CMSIS_V2 选项,这对应 CMSIS-RTOS 的不同版本接口。文章没有展开两者具体差异,但说明 ST 已针对 FreeRTOS 做了 CMSIS-RTOS 底层支持,所以才能在 CubeMX 中直接选择。对开发者而言,这意味着使用 CubeMX 生成 FreeRTOS 工程时,可以按 CMSIS-RTOS 标准接口编写应用代码,而不必直接依赖 FreeRTOS 原生 API,便于后续移植或切换。

CMSIS 家族不止 RTOS:DSP、Driver、Pack 等组件

CMSIS 是一套 ARM 与编译器厂商、半导体厂商共同遵循的标准,针对 Cortex-M 系列提供通用 API。除了 CMSIS-RTOS,它还包括 CMSIS-DSP(优化 DSP 功能集)、CMSIS-Driver(微控制器外设接口)、CMSIS-Pack(软件组件包)、CMSIS-SVD(外设寄存器视图)、CMSIS-DAP(调试访问端口标准接口)和 CMSIS-NN(神经网络内核集合)。这些组件共同构成与供应商无关的硬件抽象层,有助于代码复用、缩短学习时间并加快新设备上市。

开源协议与学习价值:RTX 源码可查,mbedOS 的基础

文章提到,Keil MDK 安装后可在 CMSIS 目录下找到 RTX 源码,RTX 与 μCOS、ThreadX 一样免费开源,遵循 Apache2.0 协议,用户可自行查看。此外,CMSIS-RTOS 是 ARM 热推的物联网操作系统 mbedOS 的基础,搞懂这套 API 更有利于从事 RTOS 底层和 IC 底层软件开发。对于想深入理解 RTOS 接口设计与移植的读者,阅读 RTX 源码和官方教程是文章给出的可行路径。

❓

Q&A

CMSIS-RTOS 是什么?它主要解决什么问题?

CMSIS-RTOS 是 ARM 公司发布的操作系统标准软件接口,用于统一操作系统、降低嵌入式开发门槛。它将底层操作系统(如 FreeRTOS、RTX 等)屏蔽起来,提供标准的 API 函数供开发者调用,开发者只需学习 CMSIS-RTOS 接口即可,无需针对不同 RTOS 学习各自的 API。

CMSIS 标准包含哪些主要组件?

CMSIS 主要包含以下组件:CMSIS-RTOS(用于 RTOS 的 API)、CMSIS-DSP(针对 Cortex-M 优化的 DSP 功能集合)、CMSIS-Driver(多种微控制器系列的接口)、CMSIS-Pack(定义软件组件的软件包)、CMSIS-SVD(显示设备外设寄存器状态)、CMSIS-DAP(Cortex 调试访问端口的标准化接口)、CMSIS-NN(高效的神经网络内核集合)。

CMSIS-RTOS 支持哪些实时操作系统?

目前 CMSIS-RTOS 能够很好地支持 FreeRTOS 和 RTX,其他一些 RTOS 尚未做适配。CMSIS-RTOS 本身封装了 RTX/Embos 等第三方 RTOS,未来还可能封装 μCOS、ThreadX 等。

在 STM32CubeMX 中配置 FreeRTOS 时,CMSIS_V1 和 CMSIS_V2 选项是什么意思?

CMSIS_V1 和 CMSIS_V2 是 STM32CubeMX 中为 FreeRTOS 提供的 CMSIS-RTOS 接口版本选项。ST 针对 FreeRTOS 做了 CMSIS-RTOS 底层支持,因此用户可以选择使用 V1 或 V2 版本的 CMSIS-RTOS API 来调用 FreeRTOS 功能。

CMSIS-RTOS 的源码是否开源?遵循什么协议?

CMSIS-RTOS 的源码是开源的,遵循 Apache 2.0 开源协议。如果安装了 Keil MDK,可以在 CMSIS 目录下找到 RTX 的源码,用户可自行查看。

CMSIS-RTOS 与 mbedOS 有什么关系?

CMSIS-RTOS 是 ARM 热推的物联网操作系统 mbedOS 的基础。掌握 CMSIS-RTOS API 有利于从事 RTOS 底层和 IC 底层软件开发。

🏷️

标签

➡️

继续阅读