CMSIS:Cortex Microcontroller Software Interface Standard,即Cortex微控制器软件接口标准。
对于很多学习Cortex-M处理器的读者来说,他们可能对CMSIS并不十分了解,甚至有些人可能完全不知道它是什么。今天我来与大家分享一下有关CMSIS的内容。
1. 概述CMSIS
CMSIS是一种与Cortex-M处理器无关的硬件抽象层软件接口。它提供了一系列用于嵌入式系统开发的标准接口和函数,使得开发人员可以轻松地编写与特定处理器无关的代码。CMSIS包含了许多有用的组件,如设备驱动程序、RTOS接口、调试和性能调优工具等,可帮助开发人员更高效地开发和调试嵌入式应用程序。通过使用CMSIS,开发人员可以更加专注于应用程序的开发,而无需过多关注底层硬件的细节。
总的来说,CMSIS提供了一种标准化的方式来访问和利用Cortex-M处理器的功能,使得嵌入式系统的开发更加方便和高效。
地址:
https://www.arm.com/why-arm/technologies/cmsis
(公号不支持外链接,请复制链接到浏览器打开)
1.特点
-
标准化以降低成本 -
通用方法简化了软件重用 -
一致的系统启动和外围设备访问
2.CMSIS主要内容
CMSIS-RTOS:主要用于RTOS的API,可与中间件和库组件实现一致的软件层。
CMSIS-DSP:Arm针对各种Cortex-M处理器内核进行了优化的丰富DSP功能的集合。
CMSIS-Driver:接口可用于许多微控制器系列。
CMSIS-Pack:定义了包含软件组件的软件包。
CMSIS-SVD:可通过当前寄存器状态显示设备外设的详细视图。
CMSIS-DAP:Cortex调试访问端口(DAP)的标准化接口。
CMSIS-NN:高效的神经网络内核的集合。
3.CMSIS 5.7.0
目前(2020.10)最新CMSIS版本为V5.7.0,而且开源在Github:
https://github.com/ARM-software/CMSIS_5/releases/tag/5.7.0
4.应用
CMSIS的应用场景非常广泛,稍微从事底层一点开发的工程师应该都看到过一些地方有CMSIS相关的应用,举一个大家最常见的,在Keil中的应用:
2CMSIS-RTOS
CMSIS-RTOS目前是V2(CMSIS-RTOS2),它提供了一种用于ARM Cortex基于处理器设备的通用RTOS接口。它为需要RTOS功能的软件组件提供了标准化的API。
地址:
https://arm-software.github.io/CMSIS_5/RTOS2/html/index.html
使用STM32CubeMX的读者应该都知道,配置RTOS有这么一个选项:
3CMSIS-DSP
CMSIS-DSP是一套可在基于Cortex-M处理器设备上常见使用的数字信号处理软件库。
地址:
https://arm-software.github.io/CMSIS_5/RTOS2/html/index.html
涵盖:
-
基本数学功能 -
快速数学功能 -
复杂的数学函数 -
筛选器 -
矩阵函数 -
转换功能 -
电机控制功能 -
统计功能 -
支持功能 -
插补功能
包含库:
-
arm_cortexM7lfdp_math.lib(Cortex-M7,小端,双精度浮点单元) -
arm_cortexM7bfdp_math.lib(Cortex-M7,大字节序,双精度浮点单元) -
arm_cortexM7lfsp_math.lib(Cortex-M7,小端,单精度浮点单元) -
arm_cortexM7bfsp_math.lib(Cortex-M7,大字节序和单精度浮点单元打开) -
arm_cortexM7l_math.lib(Cortex-M7,小端) -
arm_cortexM7b_math.lib(Cortex-M7,大端) -
arm_cortexM4lf_math.lib(Cortex-M4,小端,浮点单元) -
arm_cortexM4bf_math.lib(Cortex-M4,大端,浮点单元) -
arm_cortexM4l_math.lib(Cortex-M4,小端) -
arm_cortexM4b_math.lib(Cortex-M4,大端) -
arm_cortexM3l_math.lib(Cortex-M3,小端) -
arm_cortexM3b_math.lib(Cortex-M3,大端) -
arm_cortexM0l_math.lib(Cortex-M0 / Cortex-M0 +,小端) -
arm_cortexM0b_math.lib(Cortex-M0 / Cortex-M0 +,大端) -
arm_ARMv8MBLl_math.lib(Armv8-M基线,小端) -
arm_ARMv8MMLl_math.lib(Armv8-M主线,小端) -
arm_ARMv8MMLlfsp_math.lib(Armv8-M主线,小字节序,单精度浮点单元) -
arm_ARMv8MMLld_math.lib(Armv8-M主线,小端,DSP指令) -
arm_ARMv8MMLldfsp_math.lib(Armv8-M主线,小字节序,DSP指令,单精度浮点单元)
4CMSIS-Drive
CMSIS-Driver是一种软件API,它描述了中间件堆栈和用户应用程序的外围设备驱动程序接口。
地址:
https://arm-software.github.io/CMSIS_5/Driver/html/index.html
一张图了解大概:
5CMSIS-Pack
CMSIS-Pack是一套软件组件包,其中包括:
-
源代码,头文件和软件库 -
文档和源代码模板 -
设备参数以及启动代码和编程算法 -
示例项目
地址:
https://arm-software.github.io/CMSIS_5/Pack/html/index.html
一张图了解大概:
6CMSIS-SVD
CMSIS-SVD(System View Description)规范了基于Arm Cortex-M微控制器中包含的系统的描述,尤其是外围设备的内存映射寄存器。
地址:
https://arm-software.github.io/CMSIS_5/SVD/html/index.html
CMSIS-SVD文件由芯片供应商开发和维护,我们普通开发者不用去深入了解。
7CMSIS-DAP
CMSIS-DAP是支持访问CoreSight 调试访问端口(DAP)的固件规范和实现,以及各种Cortex处理器提供CoreSight调试和跟踪。
地址:
https://arm-software.github.io/CMSIS_5/DAP/html/index.html
CMSIS-DAP固件作为源代码提供,并且可以完全配置为新的调试单元。
8CMSIS-NN
CMSIS-NN(Neural Network)是一个有效的神经网络内核的集合。它主要针对具有神经网络的一些处理器,比如前不久新出来的Cortex-M55。
地址:
https://arm-software.github.io/CMSIS_5/NN/html/index.html
涵盖:
-
神经网络卷积功能 -
神经网络激活功能 -
全连接层功能 -
神经网络池功能 -
Softmax功能 -
神经网络支持功能
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !