在受保护的系统中,主要有两类资源需要监视:存储器系统和外围设备.存储器中对区域的访问可以是读/写,只读或不可访问,基于当时的处理器模式--管理模式或用户模式,还有一些附加的权限.区域还有控制cache和写缓冲器属性的cache写策略.当处理器访问主存的一个区域时,MPU比较该区域的访问权限属性和当时的处理器模式.如果请求符合区域访问标准,则MPU允许内核读/写主存;如果存储器请求导致存储器访问违例,则MPU产生一个异常信号.
区域与内核是冯.诺依曼结构还是哈佛结构无关.每个区域通过0~7的号码来标识和引用.区域的属性如下:
(1)区域可以相互重叠;
(2)每个区域都分配有一个优先级,该优先级与分配区域的权限无关;
(3)当区域重叠时,具有最高优先级的区域的属性可以覆盖其他区域的属性,优先级仅作用于重叠部分的地址;
(4)区域的起始地址必须是其大小的倍数;
(5)区域的大小可以是4KB~4GB之间的任何2的乘幂;
(6)访问所定义区域外的存储器将产生异常.如果是内核预取指令,则MPU产生预取指令中止异常;如果是存储器数据请求,则产生数据中止异常.
   
    在启用存储器保护单元之前,必须至少定义一个数据区域和一个指令区域,而且必须在启用cache和写缓冲器之前(或同时)启用存储器保护单元.控制器通过设置CP15的主寄存器c1~5来配置MPU.通过配置寄存器c2和c3来设置区域的cache和写缓冲器的属性,寄存器c5控制区域的访问权限,在寄存器c6里有8个或16个次寄存器用来定义每个区域的大小和位置.初始化MPU,cache和写缓冲器需要以下步骤:
(1)使用CP15:c6来定义指令和数据区域的大小和位置
(2)使用CP15:c5来设置每个区域的访问权限
(3)分别使用CP15:c2和CP15:c3来设置每个区域的cache和写缓冲器属性
(4)使用CP15:c1来使能cache和MPU
每个内核有3个CP15寄存器用来控制区域的cache和写缓冲器属性.其中CP15:c2:c0:0和CP15:c2:c0:1两个寄存器保存D-cache和I-cache区域属性;第三个寄存器,CP15:c3:c0:0用于保存区域写缓冲器属性,并应用于存储器数据区域.当配置数据区域时,区域的cache位和写缓冲器位一起决定区域的策略.写缓冲器位有2个用途:使能和禁止区域的写缓冲器和设置区域的cache策略.区域的cache位控制写缓冲器位的作用.当cache位为0时,写缓冲器位为1,则使能写缓冲器;写缓冲器位为0,则禁用写缓冲器.当cache位为1时,cache和写缓冲器都被使能,此时写缓冲器位决定cache策略.若写缓冲器位为0,则区域使用直写策略;若写缓冲器位为1,则区域使用回写策略.

转载于:https://blog.51cto.com/bluefish/59996

arm的存储保护单元MPU相关推荐

  1. mpu 配置内存空间_ARM存储器之:存储保护单元MPU

    本文引用地址:http://www.eepw.com.cn/article/257010.htm 15.4.2内存访问顺序 当ARM处理器产生一个内存访问信号时,内存保护单位MPU将负责检查要访问的地 ...

  2. NAND FLASH ECC校验原理与实现

    NAND FLASH ECC校验原理与实现 2008-01-25 14:57:27 转自:http://blog.csdn.net/nhczp/archive/2007/07/20/1700031.a ...

  3. 痞子衡嵌入式:ARM Cortex-M内核那些事(9.1)- 存储保护(MPU - PMSAv6/7)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Cortex-M存储保护模块(MPU). <ARM Cortex-M内核MCU开发那些事>的内核篇连载最早是 201 ...

  4. conrtex 和 ARM 的关系

    3.1.1 ARM内核特点 ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低.它具有经典RISC的特点: * 大的.统一的寄存器文件: * 简单的寻址模式: * 统 ...

  5. 强制生成32位arm程序_ARM版本系列及家族成员梳理

    作者: QLinux 原文: https://www.cnblogs.com/QLinux/articles/2498084.html 本文对ARM处理器家族成员做了个梳理归纳,小编能力有限,不当之处 ...

  6. ARM版本系列及家族成员梳理

    ARM公司简介 ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能.廉价.耗能低的RISC (精简指令集)处理器. 1985年第一个AR ...

  7. 嵌入式系统(二):ARM芯片及体系架构(上)

    文章结构 一. ARM芯片主要类别 二.ARM Cortex-M3简介 1.Cortex-M3功能说明 2.Cortex M3的总线接口 3.寄存器组说明 (1)低组寄存器,高组寄存器 (2)堆栈指针 ...

  8. Cortex M3内核架构

    CortexM3内核架构 宗旨:技术的学习是有限的,分享的精神是无限的. 1.ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元( CPU). 完整的基于CM3的MCU ...

  9. cortex-m 2017 whitepaper (English and Chinese)

    Cortex-M for Beginners - 2017_EN_v2.pdf: https://pan.baidu.com/s/1CFW5TdzoZr7vsDFkG8MxCA 提取码: t938 C ...

最新文章

  1. 深度学习在不同领域的应用,我去,这也行!?
  2. 宿主机windows Xp部署virtualBox虚拟机并在其上安装linux Centos(Red Hat)操作系统
  3. 得力助手 消防员的 消防机器人_消防机器人:消防员的“得力助手”(科技大观)...
  4. python selenium对浏览器自动截图
  5. 信息系统项目管理师优秀论文:论信息系统范围管理
  6. 如何将SAP云平台Neo环境的Subaccount注册到IAS服务里
  7. 非专业人士观点(3)不要假如
  8. win10浏览器闪退_win10纯净版系统中edge浏览器闪退的解决方法
  9. linux注册节点报错,Linux 运维4月17日 5.102-5.103
  10. python3安装cv2 安装opencv 2019发布
  11. 知识积累:wps宏 开发工具 vb代码 合并多个excel文件到一个excel文件,并去掉表头的方式,宏合并excel表格,多表格合并
  12. 软件调试方法及调试原则
  13. QDialog的accept()函数和reject()函数
  14. AVFrame的数据填充方式
  15. 【题目回顾】广工大2020年10月ACM第一次月赛B题--Dio的面包工坊
  16. 安卓案例:读取与解析JSON
  17. Ai-WB2系列的eclipes搭建环境教程
  18. Python 教你自动发微博,每日实现一句心灵鸡汤
  19. ABAP 设置ALV复选框
  20. android 图表实现,Android实现图表绘制和展示

热门文章

  1. 天地伟业tiandy如何连手机_关注 | 天地盖手工盒裱纸选铜版纸还是白牛皮纸?
  2. ipv4校验(java)
  3. 【企业管理】2020年的经营关键词
  4. 【分享】扎克伯格的26条提升效率点子
  5. 网络安全技术——数字证书技术原理
  6. CentOS7中使用编译github源码方式离线安装Node-RED
  7. C#中通过单例模式以及Dictionary实现键值对的映射,通过key获取value
  8. Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限
  9. 八、二分查找(Binary Search)
  10. 一个统计编码时长的Vscode插件神器