ARM资源记录《AI嵌入式系统:算法优化与实现》第八章(暂时用不到)
1.CMSIS的代码
书里给的5,https://github.com/ARM-software/CMSIS_5
现在有6了,https://github.com/ARM-software/CMSIS_6

这是官网的书,介绍cmsis函数的https://arm-software.github.io/CMSIS_5/Core/html/index.html

2.CMSIS介绍
Cortex-M系列ARM处理器在嵌入式系统中得到广泛应用,不同的Cortex-M ARM处理器配备不同的外部控制器,但执行二进制指令的核心是相同的。为了提高这一系列ARM处理器软件的开发效率,ARM公司从2008年开始,推动并开发了CMSIS软件接口标准。CMSIS是Cortex Microcontroller Software Interface Standard的首字母缩写,它的英文全称表明CMSIS主要面向Cortex-M系列ARM处理器,但现有的CMSIS软件包也提供了少量针对Cortex-A5/A7/A9系列ARM处理器的内容。

3.CMSIS子模块
·CMSIS-Core
CMSIS-Core提供ARM处理器启动时最初运行的代码、处理器内部单元的访问代码以及外设控制器部分代码。这些代码包括处理器、寄存器的基本配置,默认的中断服务程序的代码,时钟中断设置等。这部分代码为后续的软件执行提供一个最基本的运行环境。
·CMSIS-DAP
CMSIS-DAP中的DAP来自英文Debug Access Port的首字母。它规定了ARM处理器和调试器的统一接口,包括调试控制命令、数据格式等信息。CMSIS-DAP同时包括了ARM处理器调试控制固件(firmware)的具体实现,它使得PC端的调试软件通过USB口和ARM处理器通信,并执行调试任务。利用CMSIS-DAP提供的固件可以快速实现一个Cortex处理器的仿真器硬件,如图8-2所示。
关于CMSIS-DAP的细节,请参照https://arm-software.github.io/CMSIS_5,我们在这里不详细展开。

·CMSIS-Zone
对于复杂的ARM处理器架构以及多核ARM处理器,不同软件模块运行在相互分离的不同“空间”。这里的“空间”就是英文单词Zone,它包括了软件模块运行的地址访问范围以及能够访问的外围控制器集合两部分。CMSIS-Zone定义了用于描述不同空间的文件格式,并提供图形化的界面生成这些描述文件。而这些描述文件能够进一步被自动代码生成工具使用,生成各种程序源代码,包括编译链接脚本文件、地址空间定义的头文件、CPU启动时刻的初始化代码、C/C++代码框架等。
·CMSIS-RTOS
CMSIS-RTOS是实时操作系统(Real Time Operating System,RTOS)的接口API,它本身不是RTOS,需要和第三方提供的RTOS一起使用,但它为上层应用提供名称统一的API接口,通过这些API调用底层不同类型操作系统的服务。使用CMSIS-RTOS定义的API接口,使得运行在操作系统上的用户应用程序可以和底层操作系统的类型“无关”,方便应用程序移植到兼容CMSIS-RTOS的不同实时操作系统上。图8-3所示是基于CMSIS-RTOS架构的示意图。

·CMSIS-NN
CMSIS-NN包括和神经网络相关的数学运算代码,其中一部分运算基于CMSIS-DSP实现。它具体包括了神经网络卷积层的卷积运算、激活函数运算、神经网络全连接层的计算、softmax运算等。
·CMSIS-DSP
CMSIS-DSP包括一系列数学运算的实现代码,用于各类信号处理应用,内容包括快速算法、复数运算、矩阵运算、时域/频域变换运算、数据统计、插值等数学运算。它同时也包括和应用相关的滤波运算和电机控制代码。这些代码针对特定的处理器进行了手工优化,因此对于不同的ARM处理器类型有不同的版本,用户程序需要用“宏开关”来选择和所使用的处理器匹配的代码。
·CMSIS-Driver
CMSIS-Driver定义了处理器内置的外部设备控制器的驱动程序API接口,包括描述不同设备操作函数API的头文件以及建议的设备操作流程。使用CMSIS-Driver定义的驱动程序API接口使得用户应用程序能够和设备的具体型号保持相对“独立”,便于软件在不同处理器上移植。需要注意的是,驱动程序API接口仅仅是头文件里的函数申明,而具体的代码实现细节还是需要第三方开发完成。由于CPU外围控制器的多样性,CMSIS-Driver定义的内容随着硬件产品更新而不断扩充。
·CMSIS-SVD
CMSIS-SVD中的SVD是指System View Description,即“系统视图描述”,CMSIS-SVD定义了基于XML文本的处理器外设信息和参数格式,这一格式的文本能够清晰地描述每种Cortex-M处理器的特性,包括处理器型号、总线位宽、外围控制器特性、片内寄存器等。ARM的硬件调试器通过这些描述文件,在调试时为程序员提供处理器状态数据显示。图8-4给出了CMSIS-SVD定义的XML文件的层次化结构,它从高到低定义了ARM处理器的所有参数信息,包括了从器件级、处理器级、外围控制器级、存储器级、寄存器域级和每个位域取值的信息。

相关文章:
ARM资源记录《AI嵌入式系统:算法优化与实现》第八章(暂时用不到)
1.CMSIS的代码 书里给的5,https://github.com/ARM-software/CMSIS_5 现在有6了,https://github.com/ARM-software/CMSIS_6 这是官网的书,介绍cmsis函数的https://arm-software.github.io/CMSIS_5/Core/html/index.html 2.CMSIS介绍 Cort…...
微信小程序2
一,视图层 1.什么视图层 框架的视图层由 WXML 与 WXSS 编写,由组件来进行展示。 将逻辑层的数据反映成视图,同时将视图层的事件发送给逻辑层。 WXML(WeiXin Markup language) 用于描述页面的结构。 WXS(WeiXin Script) 是小程序的一套脚本语…...
G.711语音编解码器详解
语音编解码利用人听觉上的冗余对语音信息进行压缩从而达到节省带宽的目的。值得注意的是,本文说的是语音编解码器,也就Speech codec,而常用的还有另一种编解码器称作音频编解码器,英文是Audio codec,它们的区别如下。 以前在学校的时候研究了很多VoIP的编解码器从G.723到A…...
蓝桥杯每日一题2023.10.17
迷宫 - 蓝桥云课 (lanqiao.cn) 题目描述 样例: 01010101001011001001010110010110100100001000101010 00001000100000101010010000100000001001100110100101 01111011010010001000001101001011100011000000010000 0100000000101010001101000010100000101010101100…...
16.SpringBoot前后端分离项目之简要配置一
SpringBoot前后端分离项目之简要配置一 前面对后端所需操作及前端页面进行了了解及操作,这一节开始前后端分离之简要配置 为什么要前后端分离 为了更低成本、更高效率的开发模式。 前端有一个独立的服务器。 后端有一个独立的服务器。两个服务器之间实时数据交换…...
Probability Calibration概率校准大比拼:性能、应用场景和可视化对比总结
在机器学习中,概率校准(Probability Calibration)是一个重要的概念。简单来说,概率校准就是将分类器输出的原始预测概率转换为更准确、更可靠的概率值。这样做的目的是为了让模型的预测结果更接近实际情况,从而提高模型在特定应用场景中的可用性。 在Python的Scikit-Lear…...
PHP 球鞋在线商城系统mysql数据库web结构apache计算机软件工程网页wamp计算机毕业设计
一、源码特点 PHP球鞋在线商城系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 php球鞋在线商城系统 代码 https://download.csdn.net/download/qq_41221322/8843725…...
使用Apache和内网穿透实现私有服务公网远程访问——“cpolar内网穿透”
文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…...
PreparedStatement
使用参数化查询:使用预编译的语句和参数化查询来执行SQL语句,而不是将用户输入直接嵌入到SQL语句中。这将帮助防止恶意输入注入SQL语句。...
CSS3 新增属性-边框圆角-文字阴影-盒子阴影
边框圆角 CSS 边框圆角可以通过 border-radius 属性来实现。该属性用于设置元素的圆角大小,支持四个值分别表示上左、上右、下右和下左四个角的圆角半径大小,也可以使用两个值分别表示上下和左右两个方向的圆角大小,甚至可以只使用一个值来…...
制作.a静态库 (封盒)
//云库房间 1.GitHub上创建开源框架项目须包含文件: LICENSE:开源许可证;README.md:仓库说明文件;开源项目;(登录GitHub官网) 2. 云仓储库构建成功(此时云库中没有内容三方框架)!!! 3. 4.5. //…...
一台服务器,一个新世界
我如何看待服务器 当我拥有一台服务器,我看到的不仅仅是一块硬件,而是一扇打开未来的大门,一个我可以将自己的愿景和创意投射到其中的平台。这台服务器是我的工具,我的画布,我将在其中铸造我的数字梦想。 第一步我要…...
keep-alive 是 Vue 的一个内置组件,用于缓存其他组件的实例,以避免重复渲染和销毁,它可以在需要频繁切换的组件之间提供性能优化
目录 keep-alive 使用 keep-alive 的示例代码: 手动清除组件缓存的示例代码: keep-alive 组件有以下几个优点: keep-alive 的原理: 使用 keep-alive 组件,你可以包裹需要缓存的组件,然后这些组件在切…...
(八)Python类和对象
Python 语言在设计之初,就定位为一门面向对象的编程语言,“Python 中一切皆对象”就是对 Python 这门编程语言的完美诠释。 类和对象是 Python 的重要特征,相比其它面向对象语言,Python 很容易就可以创建出一个类和对象。同时&am…...
黑客利用人工智能窃取医疗数据的 7 种方式
人工智能被描述为医疗保健行业的一把双刃剑。基于人工智能的系统可以分析大量数据并在早期和可治疗的阶段检测疾病,它们可以比任何人类更快地诊断症状,并且人工智能正在帮助药物开发,使新的救命药物得以识别并将其推向市场速度更快且成本显着…...
OJ第四篇
文章目录 链表分割环形链表有效的括号 链表分割 链接: 链表分割 虽然这个题牛客网中只有C,但是无所谓,我们只要知道C是兼容C的就可以了 至于说这个题的思路,我们就弄两个链表,把小于x的结点放到一个链表中,剩下的放到另一个链表…...
L2-022 重排链表
给定一个单链表 L1→L2→⋯→Ln−1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln−1→L2→⋯。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。 输入格式: 每个输入包含1个测试用例。每个测试用例…...
css 特别样式记录
一、 这段代码神奇的地方在于, 本来容器的宽度只有1200px,如果不给img赋予宽度100%,那么图片 会超出盒子,如果给了img赋予了宽度100%,多个图片会根据自己图片大小的比例,去分完那1200px,如图二。…...
多数元素[简单]
优质博文:IT-BLOG-CN 一、题目 给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数大于n/2的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3…...
34 个高质量免费教育资源
🧑🎓 综合型在线学习网站:21个 🛜 专业类在线教育网站:13个 ⬇️⬇️⬇️ 0 examtopics www.examtopics.cn 专业的AWS等IT认证考试题库 一、综合型在线学习网站 1、Coursera coursera.org 美国斯坦福大学两名计算机…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
背包问题双雄:01 背包与完全背包详解(Java 实现)
一、背包问题概述 背包问题是动态规划领域的经典问题,其核心在于如何在有限容量的背包中选择物品,使得总价值最大化。根据物品选择规则的不同,主要分为两类: 01 背包:每件物品最多选 1 次(选或不选&#…...
Java中HashMap底层原理深度解析:从数据结构到红黑树优化
一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...
二维数组 行列混淆区分 js
二维数组定义 行 row:是“横着的一整行” 列 column:是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...
