首页 > 其他分享 >存储保护单元(MPU)的简介

存储保护单元(MPU)的简介

时间:2024-08-20 14:55:17浏览次数:13  
标签:R0 R1 简介 region 寄存器 MPU 内存 存储保护

MPU主要解决了软件的隔离问题,防止不同任务或错误的代码访问或破坏关键数据区。特别是在多任务操作系统中,MPU通过定义不同的内存区域,为每个任务分配独立的内存区域,确保了操作系统的核心安全和数据的完整性。

MPU支持分成8个region,每个region又可以分成更小的子region,但是子reigion最少需要256字节的空间。我们通过内存分区,对每一个内存块赋予不同的权限来保护数据。当然手册中指出When\, the\, MPU \, is \, enabled, accesses\, to \, the \, System\, Control \, Space \, and \, vector\, table \, are \, always \, permitted.

也就是我们的中断和系统控制的内存是可以不受权限限制进行访问的

配置过程其实相当简单:只有配置相关寄存器以及使能。下面是一个小例子

LDR   R0, =0xE000ED98  ; Region号寄存器
MOV   R1, #0           ; 选择region 0
STR   R1, [R0]
LDR   R1, =0x00000000  ; 基址 = 0x00000000
STR   R1, [R0, #4]     ; MPU Region 基址寄存器
LDR   R1, =0x0307002F  ; R/W, TEX=0, S=1, C=1, B=1, 16MB, Enable=1
STR   R1, [R0, #8]     ; MPU Region 属性及容量寄存器

其中地址为0xE000ED98的是MPU的region寄存器(MPURNR),用于选定是哪一个region

R0+4的是基址寄存器,确定了这一块region的起始地址

R0+8则是真正意义上对region的属性进行配置,由于英文手册的配置过于琐碎杂乱,故展示中文手册的配置表

MOV   R1, #1          ; 准备使能MPU
STR   R1, [R0,#-4]    ; 使能MPU(0xE000ED98-4=0xE000ED94)

最后置1使能MPU即可。这样我们就配置了一段0x0000 0000-0x00FF FFFF(16MB) 、全访问、可缓存的内存。当然如何配置以及配置多少还是要看项目实际需求

标签:R0,R1,简介,region,寄存器,MPU,内存,存储保护
From: https://blog.csdn.net/2301_79791448/article/details/141357349

相关文章

  • STM32学习记录-01-STM32简介
    1ARM2STM32F103C8T6系列:主流系列STM32F1内核:ARMCortex-M3主频:72MHzRAM:20K(SRAM)ROM:64K(Flash)供电:2.0~3.6V(标准3.3V)封装:LQFP483片上资源/外设4系统结构左上角为Cortex-M3内核,内核引出三条总线,分别是ICode指令总线、DCode数据总线、System系统总线,ICode与DCode主......
  • 手机摄像头马达供应商简介
    手机摄像头马达厂商简介阿尔卑斯中蓝三星电机三美浩泽新思考江鑫微TDK睿恩阿尔卑斯阿尔卑斯电气株式会社是一家日本公司,自从1948年成立以来一直从事各种电子元件的生产。基于创新的专有技术以及广阔的市场前景,该公司提供了前沿的电子元件,在五个商业领域为多媒体社......
  • vue3 响应式 API:computed()
    介绍基本概念:computed()接收一个getter函数或者一个包含getter和setter函数的对象作为参数,并返回一个基于原始响应式数据计算得到的新的响应式数据对象。计算属性的值会根据其依赖的响应式数据自动更新,当依赖的数据发生变化时,计算属性的值也会自动重新计算。返......
  • __gnu_pbds::tree 用法简介
    __gnu_pbds::tree用法简介概述pbds即平板电视,里面实现了很多数据结构,NOI系列赛事可以使用,但很多OJ和网站无法使用。其中有__gnu_pbds::tree,是平衡树,支持查找位置、查找第\(k\)大、分裂、合并。功能远强与std::set。性能实现是红黑树,空间常数是Treap的\(1.5\)倍,时......
  • AIoTedge边缘计算平台产品简介
    边缘计算兴起边缘计算是在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的开放平台,就近提供边缘智能服务,满足行业数字化在敏捷联接、实时业务、数据优化、应用智能、安全与隐私保护等方面的关键需求。边缘侧感知终端海量接入和AI大量应用推动边缘计算兴起,向......
  • TF16精度简介
    TF16是指TensorFlow的混合精度(MixedPrecision)训练中使用的16位浮点数格式。它通常与FP16(16位浮点数)和BF16(BrainFloatingPoint16位浮点数)相结合使用。TF16是TensorFlow中对这些16位浮点格式的统称,而不是一种特定的浮点格式。混合精度训练混合精度训练是指在......
  • bf16精度简介
    bfloat16(bf16),即BrainFloatingPoint16-bit,是一种16位浮点数格式,主要用于深度学习和机器学习中的高效计算。它是在Google的TPU(TensorProcessingUnit)硬件中引入的,并已被其他硬件架构(如NVIDIAA100、IntelXeon)广泛采用。bf16的主要特性位分布:1位符号位:用于表示数值的......
  • 全面指南:LLMs中的Llama-3模型——简介、安装教程、使用技巧及案例实践详解
    LLMs之Llama3:Llama-3的简介、安装和使用方法、案例应用之详细攻略导读:2024年4月18日,Meta重磅推出了MetaLlama3,本文章主要介绍了Meta推出的新的开源大语言模型MetaLlama3。模型架构Llama3是一种自回归语言模型,采用了优化的Transformer架构。调优版本使用了监督......
  • 操作符简介及部分例子
    操作符文章目录操作符1.简单介绍1.2"++"和"--"前置与后置的区别2.强制类型转换2.1=与==的区别3.条件操作符及格式4.逗号表达式5.下标引用,函数调用和结构成员5.1下标引用操作符"[]"5.2函数调用操作符c语言提供了非常丰富的操作符,使得用起来就比较灵活。1.简单......
  • Burp Suite简介
    【任务目标】了解BurpSuite的基本情况和安装步骤了解BurpSuite的主要模块和基本操作1.1概述BurpSuite解释说明是什么BurpSuite是用于攻击web应用程序的集成平台,包含了许多工具。BurpSuite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共......