关于MPU的笔记

news2024/10/7 5:48:34

MPU(memory protection unit)内存保护单元。这些系统必须提供一种机制来保证正在运行的任务不破坏其他任务的操作。即要防止系统资源和其他一些任务不受非法访问。嵌入式系统有专门的硬件来检测和限制系统资源的访问。它能保证资源的所有权,任务需要遵守一组由操作环境定义的、由硬件维护的规则,在硬件级上授予监视和控制资源程序的特殊权限。受保护系统主动防止一个任务使用其他任务的资源。因此使用硬件主动监视系统比协调加强的软件历程,提供了更好的保护。

MPU的主要作用如下:

1、设置不同存储区域的存储器访问权限(管理员级、用户级);

2、设置存储器内存和外设属性(可缓存、可缓冲、可共享)。

MPU的优点如下:

1、阻止用户应用程序破坏操作系统使用的数据;

2、阻止一个任务访问其他任务的数据区,从而隔离任务;

3、把关键数据区域设置为只读,从根本上解决被破坏的可能;

4、检测意外的存储访问,如堆栈溢出、数组越界等;

5、将SRAM或RAM空间定义为不可执行,防止代码攻击,提高嵌入式的安全性,使系统更安全。

--------------------------------------------------------------------------------

MPU可配置8/16个内存区域,每个区域最小要求为256字节,每个区域还可以配置8个子区域(但需要大小一致)。在保护的16个内存空间内,有可能会出现保护区域的重叠或嵌套,优先级从0~15越来越大。下图为MPU内存地址映射的区域。

--------------------------------------------------------------------------------

对于配置好的MPU,我们不可以访问定义外的地址空间,也不能对配置好的区域进行未经授权的操作,否则属于非法访问,会触发错误异常(MemManage)。下图为几种权限类型。

 --------------------------------------------------------------------------------

接下来介绍三种内存类型(访问属性)

访问属性分为:Normal memory, Device memory, Strongly ordered memory。

Normal memory(ROM, FLASH, SRAM):CPU以最高效的方式加载和存储字节、半字和字,CPU对于这种内存区的加载或存储不一定要按照程序代码顺序执行。

Device memory:加载、存储要严格按照次序进行,确保寄存器按照正确顺序设置。

Strongly ordered memory:完全按照代码顺序执行,会导致性能下降。

 --------------------------------------------------------------------------------

Cache(高级缓存):

缓存(Cache)是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。缓存分为D-Cache(数据缓存)和I-Cache(指令缓存)。支持4种操作:使能、禁止、清空、失能。

CPU访问内存可以直接访问,也可以通过缓存访问的,还可以通过DMA访问。

对于写操作,如果CPU要写的SRAM数据在缓存里已经开辟了对应的数据,叫写命中(Cache hit);反之则称为写Cache Miss。对于读操作,如果CPU要读的SRAM数据在缓存里已经开辟了对应的数据,叫读命中(Cache hit);反之则称为读Cache Miss。

对于Core读Cache,cache hit直接读取数据即可;对于Cache Miss有两种处理方法:1、(Read Through)直接用内存读出数据,不通过Cache读取,2、(Read Allocate)把数据从内存加载到Cache,再从Cache中读取。

对于Core读Cache。cache hit有两种处理方法:1、(Write Through)直接写到内存中并加载到cache中,内存和擦车同步更新;2、(Write Back)数据更新时只写入cache,只在数据被替换的cache数据才写入内存,写入速度快。cache miss有两种处理方法:1、(Write allocate)先把要写的数据加载到cache,对cache写入后再写入内存;2、(No Write Allocate)直接写入内存,不用Cache。

用软件对cache进行维护

1、Clean:cache已变化,SRAM数据未更新。DMA搬运数据前,将Cache相应数据更新到SRAM(用函数SCB_CleanCache / SCB_CleanInvalidateDCache)

2、Invalidate:SRAM数据已变化,Cache未更新。DMA搬运数据后,Cache数据无效,需要从SRAM获取(用函数SCB_InvalidateDCache / SCB_CleanInvalidateDCache)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

unity 性能优化之画质分级

如果你的游戏兼容多平台,或者当前平台的设备也有硬件差距,比如低端设备就是带不动你的画质,无论如何你如何优化就是带不动。这种情况下,我们可以考虑对画质进行分级,减少一些特性,来提高运行质量。接下来我…

JavaWeb《HTML基础标签》

本笔记学习于Acwing平台 MDN官方文档https://developer.mozilla.org/zh-CN/ 目录 1. html文件结构 2. 文本标签 3. 图片 4. 音频和视频 5. 超链接 6. 表单 7. 列表 8. 表格 9. 语义标签 10. 特殊符号 1. html文件结构 文档结构 html的所有标签为树形结构&#xff…

AI模型推理(3)——ModelMesh使用

参考: ModelMesh installation - KServe Documentation Website ModelMesh Overview - KServe Documentation Website 前言 Kserve提供了“Serverless”和“ModelMesh”两种安装模式。其中Serverless是通过Knative组件实现动态扩缩容等功能。而ModelMesh则是另一…

华南X99F8D开不了机——主板出现错误码67的解决方案

华南X99F8D开不了机——主板出现错误码67的解决方案 前言 笔者的双路e5:大数据双路e5主机搭建:2696v3256g内存 配置: 主板:x99f8d CPU:e5 2696v3 *2 【36核72线程】 内存条:DDR4 ECC 32G *8 【256G】 显…

Nginx + LVS + KeepAlived实现高可用集群

文章目录 一、名词解释1、高可用集群2、LVS3、Keepalived 二、搭建流程1、安装Docker2、安装Nginx3、安装Keepalived4、编写nginx_check.sh脚本 一、名词解释 1、高可用集群 对于中小型互联网公司,产品所承受的请求量还是比较低的,所以一般使用单节点N…

碳中和专题:智慧城市建设能否提高碳生产率?—基于中国智慧城市试点的准自然实验

一.研究内容 目前,中国面临着如何在保证经济增长的前提下实现减排目标的困境。智能城市建设作为一种新型的城市发展模式,有可能成为解决这一问题的关键。本文使用多周期双重差分DID模型进行实证分析,旨在评估智能城市试点政策对碳生产率的影响…

论文笔记:Model-Contrastive Federated Learning

0 简介 论文:Model-Contrastive Federated Learning 代码:https://github.com/QinbinLi/MOON 相关链接:本文主要是将SimCLR对比学习的思想迁移到联邦学习中,关于SimCLR的介绍见https://blog.csdn.net/search_129_hr/article/deta…

最好的物联网教程:软硬结合——从零打造物联网

在大学里不同专业有着不同的追求:机械类与强电类专业学生追求的是 “机电合一” ,既懂机械又懂电气,整个电气机械自动化便能打通。弱电类专业学生追求的是 “软硬结合” ,既懂硬件又懂软件,整个电子产品便能打通。我作…

唱作音乐人朱卫明新歌全网首发,当初恋遇到《龙仙街》

今年唱作音乐人朱卫明正式出道25周年了!为纪念这个生涯里程碑,朱卫明近日在酷狗音乐首发全新单曲《龙仙街》,上酷狗搜索“朱卫明”,即可抢先收听。 这首歌是继《酒吧情歌》《不爱她》《只要陪着你》《有缘无分》《断了吧》《疯狂爱…

Linux——基础IO

目录 C语言文件操作 fprintf​编辑 Linux下的文件操作(文件的系统调用接口) open open的第三个参数 open的第二个参数 write read 文件描述符fd 进程与被打开文件的关系(理解的关键) 见见猪跑 fd文件描述符的分配规则 结论 重定向 输入重定向原理 输出重…

Linux线程:互斥锁mutex的使用

1. 同步 & 互斥 (1)同步 多个进程或线程按照一定的执行顺序完成某一任务;如B任务依赖A任务产生的数据。 (2)互斥 临界资源同一时刻只能被一个进程或线程使用。 2. 临界资源 和 临界区 (1&#xff…

feign远程调用原理

目录 一、简介 二、调用流程分析 2.1 添加注解 2.2 Import(FeignClientsRegistrar.class), 2.3 代理创建流程 2.4 代理调用 一、简介 feign是springCloud全家桶中的远程调用组件,其底层主要依赖于Java的动态代理机制,然后基于http client…

【软件测试】全网火爆,实战Web项目前后台的bug定位(超详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 系统整体架构 Se…

【Java入门合集】第二章Java语言基础(三)

【Java入门合集】第二章Java语言基础(三) 博主:命运之光 专栏:JAVA入门 学习目标 掌握变量、常量、表达式的概念,数据类型及变量的定义方法; 掌握常用运算符的使用; 掌握程序的顺序结构、选择结…

【微信小程序开发】微信小程序集成腾讯位置项目配置

第一步 进入官网 按照Hello World流程走 腾讯位置服务官网 1、申请密钥 当然没账号的要先注册一个账号 在我的应用里创建一个新的应用,印象中需要小程序ID,去微信开发者工具里面找到自己的小程序ID填入即可 添加key中勾选勾选WebServiceAPI 2、下载S…

锐龙7000PBO温度墙设置

AMD的锐龙7000处理器首发评测大家也都看过了,很多人关心的都是它的性能是否可以超越12代酷睿甚至即将发布的13代酷睿,这方面的测试结果差不多了,但是很多人不知道的是散热问题更需要关注。 在评测中,锐龙9 7950X在拷机时温度达到…

【PCIE体系结构七】数据链路层介绍

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考书籍:PCI_Express体系结构导读 目录 前言 数据链路层概述 数据链路层…

命名ACL配置

命名ACL配置 【实验目的】 掌握命名ACL的配置。验证配置。 【实验拓扑】 实验拓扑如图1所示。 图1 实验拓扑 设备参数如表所示。 表1 设备参数表 设备 接口 IP地址 子网掩码 默认网关 R1 S0/3/0 192.168.1.1 255.255.255.252 N/A Fa0/0 192.168.2.1 255.255.…

05_Uboot源码目录分析

目录 Uboot 源码目录分析 arch 文件夹 board 文件夹 configs 文件夹 .u-boot.xxx_cmd 文件 Makefile 文件 u-boot.xxx文件 .config文件 README Uboot 源码目录分析 学会uboot使用以后就可以尝试移uboot到自己的开发板上了,但是在移植之前需要我们得先分析一遍uboot的…

什么是Spring FactoryBean?有什么作用?

1、什么是Spring Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IOC和AOP为内核。含有七大核心模块 2、Spring的七大模块 (1)Spring Core:核心容器提供了Spring的基本功能。核心容器的核心功能是用IOC 容器来管理类的依赖关系&#xff…