1、 简介

CMSIS是通用微控制器软件接口标准(Common Microcontroller Software Interface Standard ) 的简写。

CMSIS 包括API、软件组件、工具及工作流程,主要用于简化软件重用、缩短开发人员学习曲线,加快项目构建和调试,从而使产品更快上市。

CMSIS 最初是一个基于 Arm® Cortex®-M 的处理器的硬件抽象层,后来扩展到支持Arm Cortex-A 的一些处理器。为了简化访问,CMSIS 定义了通用工具接口,并通过为处理器和外设提供简单的软件接口来实现一致的设备支持。

CMSIS 的创建是为了帮助行业实现标准化。它可以在各种开发工具和微控制器上实现一致的软件层和设备支持。CMSIS 不是一个很大的软件层,不会带来很大开销,也没有定义标准外设。因此,芯片行业可以通过此通用标准支持各种基于Arm Cortex 处理器的设备。

2、 CMSIS组件

CMSIS 基础软件组件

为设备的基本级别功能提供软件抽象。

在同一 GitHub 存储库中维护,并作为一个CMSIS 软件包提供,名称为Arm::CMSIS

CMSIS-Core  对Arm Cortex处理器内核的标准化访问

CMSIS-Driver 中间件的通用外设驱动程序接口

CMSIS-RTOS2 实时操作系统的通用API

CMSIS 扩展软件组件

实现针对 Arm 处理器上的执行而优化的特定功能。

在单独的 GitHub 存储库中维护并以独立的 CMSIS-Pack 形式提供

CMSIS-DSP 嵌入式系统的优化计算功能

CMSIS-NN 高效且高性能的神经网络内核

CMSIS-View事件记录器和组件查看器技术

CMSIS-Compiler 重定向标准C运行时库的I/O函数

CMSIS工具

使用基于 CMSIS 的组件为软件开发工作流程提供有用的实用程序。

在单独的 GitHub 存储库中维护

CMSIS-Toolbox 一组与软件包一起使用的命令行工具

CMSIS-Stream用于优化DSP/ML块数据流的工具和方法

CMSIS-DAP   用于连接CoreSight调试访问端口的调试单元固件

CMSIS-Zone 定义描述系统资源并对它们进行分区

CMSIS 规范

定义嵌入式软件开发的方法和工作流程。

CMSIS-Pack 软件组件和设备/板支持的交付机制

CMSIS-SVD 用于调试视图的外设描述

3、CMSIS 的优势

  • CMSIS 降低了学习曲线、开发成本和上市时间。开发人员可以通过各种的标准化软件接口更快地编写软件。

  • 一致的软件接口提高了软件的可移植性和可重用性。通用软件库和接口提供一致的软件框架。

  • 提供用于调试连接、调试外设视图、软件交付和设备支持的接口,以缩短新微控制器部署的时间。

  • 允许使用您偏好的编译器,因为它独立于编译器,因此主流编译器都支持。

  • 通过调试器的外围信息和 printf 样式输出的 ITM 通道增强了程序调试。

  • CMSIS以CMSIS-Pack格式提供,可实现快速软件交付、简化更新并实现与开发工具的一致集成。

  • CMSIS-Zone管理多个处理器、内存区域和外设的配置,简化系统资源和分区。

  • IDE 和持续集成 (CI) 是嵌入式软件开发人员的重要工作流程。CMSIS-Toolbox 提供带有 CMake 后端的命令行构建工具,并集成到 VS Code 等 IDE 中。

4、CMSIS v6 支持以下工具链

Arm 编译器 v6.10 或更高版本

GCC 10 或更高版本

IAR 8 或更高版本

LLVM/Clang 17 以后版本

注意:对 Arm Compiler v5 的支持已被删除。(这意味着如果芯片厂家使用 CMSIS6 规范制作的 pack ,那么就无法使用 ARM Compiler v5 进行编译)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917775.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917775.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917775.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【含文档+PPT+源码】基于SSM的旅游与自然保护平台开发与实现

项目介绍 本课程演示的是一款??,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 带你从零开始部署运行本套系统 该项目附带的源码资料…

QT6 源,十章绘图(2)画刷 QBrush:刷子只涉及填充颜色,线型,填充图片,以及变换矩阵这几个属性,附源代码带注释。

(1)本类的继承关系如下 :(2)本类是支持流运算的 :(3)本类的构造函数与运算符 operator 函数 :关于本类的构造函数,进行以下测试 :只修改画刷的构…

安科瑞智慧能源管理系统在啤酒厂5MW分布式光伏防逆流控制实践

项目信息 光伏装机1MW,3个并网点,低压接 入配电系统。 要求自发自用、余电不上网。解决方案 通过防逆流保护装置,做到刚性控制, 实现并网柜快速切断;通过防逆流管理系统,做到柔性调节, 实现光伏…

VUE-第二季-02

3.Vue组件化 3.1 什么是组件 (1) 传统方式开发的应用 一个网页通常包括三部分:结构(HTML)、样式(CSS)、交互(JavaScript) 传统应用存在的问题: ① 关系纵横交织,复杂…

【OpenGL】LearnOpenGL学习笔记02 - 绘制三角形、矩形

上接: https://blog.csdn.net/weixin_44506615/article/details/149861824 完整代码:https://gitee.com/Duo1J/learn-open-gl 一、渲染管线 在开始之前,我们先简单了解一下图形渲染管线 在渲染3D物体时,我们常用到的一种几何结构为网格模型…

Mysql的事务是什么?

简单来说,MySQL 实现事务的核心就像是给你的数据库操作加了一套“保险和存档”机制。它确保了你的操作要么全部成功,要么全部失败,并且在面对多人同时操作、系统突然崩溃等情况时,数据依然可靠、准确。 为什么需要事务呢&#xff…

测试开发:Python+Django实现接口测试工具

【测试开发天花板】DjangoVuePyTest打造企业级自动化平台|能写进简历的硬核项目最近被几个公司实习生整自闭了,没有基础,想学自动化又不知道怎么去学,没有方向没有头绪,说白了其实就是学习过程中没有成就感&#xff0c…

TFS-2022《A Novel Data-Driven Approach to Autonomous Fuzzy Clustering》

核心思想 这篇论文的核心思想是提出一种全新的、数据驱动的自主模糊聚类(Autonomous Fuzzy Clustering, AFC)算法。其核心创新在于,它巧妙地结合了模糊聚类的灵活性和基于中位数(medoids)聚类的可解释性,并…

ELK是什么

ELK 是一个广受欢迎的开源技术栈,用于实时采集、处理、存储、搜索、分析和可视化海量的日志数据(log)和机器生成的数据(machine data),尤其是在 IT 系统监控、应用故障排查、安全分析和业务智能等领域应用广…

[硬件电路-123]:模拟电路 - 信号处理电路 - 常见的高速运放芯片、典型电路、电路实施注意事项

一、高速运放常见芯片型号及特性高速运放(高速运算放大器)通常指带宽(GBW)超过10MHz、压摆率(SR)高于10V/μs的器件,适用于视频处理、通信系统、高速数据采集等场景。以下是典型芯片及其特性&am…

关于解决WinRiver项目动态XmlElement的序列化与反序列化的问题

关于解决WinRiver项目动态XmlElement的序列化与反序列化的问题 一、WinRiver项目流量汇总XML内容 1.1、索引可变,索引下 XmlElement 元素内容固定 1.2、如何将对象 BottomTrack 的动态内容序列化为 XML ? 1.3、如何将 XML 动态内容反序列化为对象 BottomTrack ? 二、XML 动态…

【力扣 Hot100】 刷题日记

D3 128.最长连续序列 错解 class Solution {public int longestConsecutive(int[] nums) {Arrays.sort(nums);int maxCnt 0;int cnt 0;for (int i 0; i < nums.length - 1; i) {if(nums[i] ! nums[i 1] - 1){//如果不连续&#xff0c;取cnt与maxCnt较大值&#xff0c…

飞算JavaAI编程插件:以AI之力赋能Java开发,让编码效率再升级

你是否希望自己敲代码的时候总有一位大佬在你背后帮你保驾护航。想象一下&#xff0c;当你对着Java编辑器敲代码时&#xff0c;身后站了位“隐形大神”——你刚敲出for&#xff0c;它就预判到你要遍历集合&#xff0c;自动补全带泛型的循环逻辑&#xff1b;你手滑把equals写成&…

机器学习通关秘籍|Day 03:决策树、随机森林与线性回归

目录 一、决策树 1、概念 2、基于信息增益的决策树的建立 &#xff08;1&#xff09;信息熵 &#xff08;2&#xff09;信息增益 &#xff08;3&#xff09;信息增益决策树建立步骤 3、基于基尼指数的决策树的建立 4、API 二、随机森林 1、算法原理 2、API 三、线性…

C++进阶—C++的类型转换

第一章&#xff1a;C语言中的类型转换在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者返回值类型与接收返回值类型不一致时&#xff0c;就需要发生类型转化&#xff0c;C语言中总共有两种形式的类型转换&#xff1a…

基于Flask的微博话题多标签情感分析系统设计

基于Flask的微博话题情感分析系统设计与实现 一、项目概述 本项目是一个轻量化的微博话题情感分析系统&#xff0c;通过Flask框架整合情感分析模型&#xff0c;实现对微博话题及评论的情感标签识别与结果展示。系统面向普通用户和研究者&#xff0c;提供简单易用的操作界面&…

TDengine 中 TDgpt 的模型评估工具

模型评估工具 TDgpt 在企业版中提供预测分析模型和异常检测模型有效性评估工具 analytics_compare&#xff0c;该工具能够使用 TDengine 中的时序数据作为 回测依据&#xff0c;评估不同预测模型或训练模型的有效性。该工具在开源版本中不可用使用评估工具&#xff0c;需要在其…

【DL学习笔记】DataLoader类功能和参数说明

文章目录一、Dataset 与 DataLoader 功能介绍抽象类Dataset的作用DataLoader 作用两者关系二、torch.utils.data.DataLoader代码示例常用参数图示num_workers设置多少合适数据加载子进程如何并行的pin_memorysampler两种sampler顺序采样 SequentialSampler随机采样 RandomSampl…

JVM中年轻代、老年代、永久代(或元空间)、Eden区和Survivor区概念介绍

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;内存管理是自动化的&#xff0c;这主要通过垃圾回收机制实现。JVM将堆内存划分为不同的区域&#xff0c;以便更高效地管理和回收对象。以下是关于年轻代、老年代、永久代&#xff08;或元空间&#xff09;、Eden区和Surv…

译 | BBC Studios团队:贝叶斯合成控制方法SCM的应用案例

来自上传文件中的文章《Using Causal Inference for Measuring Marketing Impact: How BBC Studios Utilises Geo Holdouts and CausalPy》 本篇介绍了在传统A/B测试不适用时&#xff0c;如何利用贝叶斯合成控制方法和地理区域保留来评估营销活动效果。其亮点在于通过构建“反事…