Cortex-M4之FPU单元

最近在学习实时操作系统,以下是我对学习实时操作系统过程中做的一些笔记。

一、FPU单元

在 Coretex-M4 处理器中有一个可选的单精度 FPU 单元,一般 STM32F429 就有 FPU 单元, 如果使能了 FPU 单元的话就可以使用它来对单精度浮点数进行计算, 双精度浮点数的计算仍然要使用到 C 运行库。

二、FPU寄存器

FPU 单元包含一系列的寄存器:
1、 CPACR 寄存器,在 SCB 块中
2、 浮点寄存器块, S0-S31
3、FPU 状态和控制寄存器: FPSCR
4、 其他的一些 FPU 寄存器

(1)CPACR寄存器

可以使能 FPU, CPACR 寄存器的地址为 0XE000ED88,我们也可以通过“SCB->CPACR”来访问 CPACR 寄存器, CPACR 寄存器的 bit0-bit19 和 bit24-bit31 不允许使用,为保留位,其中[20:21]为 CP10, [22:23]为 CP11。 我们通过设置 CP10 和 CP11 来开启 FPU,CP10 和 CP11 设置情况如表 2.2.1 所示,注意 CP10 和 CP11 都为 2bit

 默认情况下 CP10 和 CP11 都为 00,如果要使用 FPU 的话需要软件设置 CPACR 来开启FPU,通过设置 CP10 和 CP11 都为 11 来开启,实例代码如下:

SCB->CPACR|=0X00F00000; //使能 FPU

 (2)浮点寄存器块

浮点寄存器快包含 32 个 32 位的寄存器,这 32 个寄存器可以两两组合成一个 64 位的双精度寄存器,如图 所示。

说明:S0-S15 是 caller-saved 寄存器,如果一个应用 A 调用了另外一个应用 B,那么应用 A 在调
用 B 之前一定要保存这些寄存器
,因为在调用的时候这些寄存器会被改变。

S16-S31 被称callee-saved 寄存器,如果一个应用 A 调用应用 B,而且 B 需要大于 16 个寄存器来做计算,那么应用 B 就需要保存这些寄存器。并且在返回应用 A 的时候必须恢复这些寄存器。

三、Lazy Stacking 

对于 Cortex-M4 来说 Lazy Stacking 是一个重要的特性, 在使用 FPU 的情况下,不使用这个特性会在异常处理的时候消耗 29 个时钟周期, 因为要将 25 个寄存器压栈,以前只需要将 8个压栈。

如果使用 Lazy Stacking 这个特性的话,那么在异常处理的时候只需要消耗 12 个时钟周期, 默认情况下 Lazy Stacking 是使能的。 可以看出如果在任务切换中使用 Cortex-M4 的这个特性将会极大的提高任务切换的速度

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

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

相关文章

【探索Linux世界|中秋特辑】--- 倒计时和进度条的实现与演示

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Linux专栏】🎈 本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌 演示环境&#xff1…

栈的详细实现

一 定义 概念 栈是一种特殊的线性表,只允许在固定的一端进行操作。该端叫做栈顶,相对的另一端叫做栈底。 符合LIFO(后进先出)的规则 关于栈顶的两个操作: 压栈/入栈/进栈:在栈顶部插入数据 出栈:栈顶删…

2023华为杯研究生数学建模C题分析

完整的分析查看文末名片获取! 问题一 在每个评审阶段,作品通常都是随机分发的,每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性,不同专家评审的作品集合之间应有一些交集。但有的交集大了,则…

软件测试缺陷报告详解

【软件测试行业现状】2023年了你还敢学软件测试?未来已寄..测试人该何去何从?【自动化测试、测试开发、性能测试】 缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report(SBR)或软件问题报告Software Pr…

《动手学深度学习 Pytorch版》 7.5 批量规范化

7.5.1 训练深层网络 训练神经网络的实际问题: 数据预处理的方式会对最终结果产生巨大影响。 训练时,多层感知机的中间层变量可能具有更广的变化范围。 更深层的网络很复杂容易过拟合。 批量规范化对小批量的大小有要求,只有批量大小足够…

智能合约漏洞案例,NeverFall 漏洞复现

智能合约漏洞案例,NeverFall 漏洞复现 1. 漏洞简介 https://twitter.com/BeosinAlert/status/1653619782317662211 2. 相关地址或交易 https://explorer.phalcon.xyz/tx/bsc/0xccf513fa8a8ed762487a0dcfa54aa65c74285de1bc517bd68dbafa2813e4b7cb 攻击交易 攻击…

Python绘制X-bar图和R图 | 统计过程控制SPC

X-bar图和R图是用于统计过程控制(SPC)的两种常用工具,用于监测过程的平均值和范围(变异性)。这些图有助于识别过程中的变化和异常,以便及时采取纠正措施。 **X-bar图(平均值控制图)…

pcl--第十二节 2D和3D融合和手眼标定

2D&3D融合 概述 截止目前为止,我们学习了机器人学,学习了2D和3D视觉算法。我们也学习了2D相机(图像数据的来源)和3D相机(点云数据的来源)工作原理。 实际上,我们最终要做的,是一个手眼机器人系统。在这个系统里&#xff0c…

zookeeper + kafka

Zookeeper 概述 Zookeeper是一个开源的分布式服务管理框架。存储业务服务节点元数据及状态信息,并负责通知再 ZooKeeper 上注册的服务几点状态给客户端 Zookeeper 工作机制 Zookeeper从设计模式角度来理解: 是一个基于观察者模式设计的分布式服务管理框架&…

微信小程序底部安全区域高度获取

CSS 属性 safe-area-inset-bottom safe-area-inset-bottom 就是安全区的高度 padding-bottom:env(safe-area-inset-bottom); wx.getSystemInfoSync() wx.getSystemInfoSync()可以获取系统信息 let system wx.getSystemInfoSync() let bottomSafe system.screenHeight -…

yolov5使用最新MPDIOU损失函数,有效和准确的边界盒回归的损失,优于GIoU/EIoU/CIoU/EIoU(附代码可用)

文章目录 1. 论文1.1. 主要目的1.2. 设计思路2 代码3.总结1. 论文 MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (一个有效和准确的边界框损失回归函数) 论文地址 1.1. 主要目的 当预测框与边界框具有相同的纵横比,但宽度和高度值完全不同时,大多数…

【湖科大教书匠】计算机网络随堂笔记第1章(计算机网络概述)

目录 1.1、计算机网络在信息时代的作用 我国互联网发展状况 1.2、因特网概述 1、网络、互连网(互联网)和因特网 2、因特网发展的三个阶段 因特网服务提供者ISP(Internet Service Provider) 基于ISP的三层结构的因特网 3、因特网的标准化工作 4、因特网的…

2023华为杯数学建模D题——碳排放路径优化基于指数分解法的LMDI 模型

LMDI 模型是基于指数分解法(IDA) 发展而成的一种因素分解法。LMDI模型在 Kaya 拓展式的基础上, 利用对数平均法对影响因素进行分析。 综合比较其他的指数分解方法, LMDI 分解法有着可完全分解因子、 无残差项等优势。根据对 Kaya …

Xamarin.Android实现App内版本更新

目录 1、具体的效果2、代码实现2.1 基本原理2.2 开发环境2.3 具体代码2.3.1 基本设置2.3.2 系统的权限授予2.3.3 进度条的layout文件2.3.4 核心的升级文件 3、代码下载4、知识点5、参考文献 1、具体的效果 有事需要在程序内集成自动更新的功能,网上找了下&#xff…

企业级数据仓库-理论知识

D3 AM 大数据中间件 Hive:将SQL转化成分布式Map/Reduce进行运算,也支持转换成Spark,需要单独安装Hive集群才能访问Spark,支持60%的SQL,延迟比较大。SparkSQL:属于Spark生态圈,Hive on Sqark。HBase: NoSQL,高并发读,适…

thinkphp8路由

thinkphp8已出来有好一段时间了。这些天闲来无事,研究了下tp8的路由。默认情况下,tp8的路由是在route\app.php的文件里。但在实际工作中,我们并不会这样子去写路由。因为这样不好管理。更多的,是通过应用级别去管理路由。假如项目…

设计模式之解释器模式

一、定义 1、定义 Given a language,define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.(给定一门语言,定义它的语法的一种表示,并定义一个解释器&…

Winform直接与Wpf交互

Winform项目中,可以直接使用wpf中的自定义控件和窗体 测试环境: vistual studio 2017 window 10 一 winform直接使用wpf的自定义控件 步骤如下: 1 新建winfrom项目,名为WinFormDemo,默认有一个名为Form1的窗体…

【GAMES103】基于物理的计算机动画入门(1)前置的基础数学知识

GAMES103: 基于物理的计算机动画入门 链接:GAMES103 1. 坐标系的划分 在游戏引擎中分为右手和左手坐标系,区分的依据是什么? 上图可以看到如果是左手坐标系,那么所有的物体都在屏幕后面,意味着x,y&#x…

物联网的未来:连接的智能世界

物联网(IoT)是引领我们走向未来的一项关键技术。它让物品通过互联网进行连接,交流,开创了智能生活新时代。预计到2025年,全球将拥有超过410亿的IoT设备。在对人类生活的每个方面产生影响的同时,物联网也正在…