资料介绍
15.4 存储保护单元MPU
一些嵌入式系统使用多任务的操作和控制。这些系统必须提供一种机制来保证正在运行的任务不破坏其他任务的操作。即要防止系统资源和其他一些任务不受非法访问。要达到这一目的通常有软件保护和硬件保护两种途径。这里软件保护是指仅靠软件来保护系统资源。系统中无保护硬件或硬件没启动。在多任务的系统中,通常要运行操作系统来达到任务间同步与通信。所以,这种软件的资源保护通常由操作系统来完成。但这种通过软件来协调任务运行,保护系统资源的做法有时会出现一些不可避免的问题。如当对一个通信用串口寄存器进行操作时,如果一个任务正在使用串口,则它没有办法来防止其他任务使用同一个串口。因此,若要成功使用该串口,则必须通过一个访问该串口的系统调用来协调。使用这些调用任务的非授权访问,很容易破坏经过该串口的通信。因此资源的不合理使用也许是不可避免的。
相反,受保护系统有专门的硬件来检测和限制系统资源的访问。它能保证资源的所有权,任务需要遵守一组由操作环境定义的、由硬件维护的规则,在硬件级上授予监视和控制资源程序的特殊权限。受保护系统主动防止一个任务使用其他任务的资源。因此使用硬件主动监视系统比协调加强的软件历程,提供了更好的保护。
ARM中配备的有效保护系统资源的硬件,有两种:
· MPU(Memory Protection Unit);
· MMU(Memory Management Unit)。
MMU是比MPU提供了功能更强大的内存保护机制,MPU只提供了内存区域保护,而MMU是在此基础上提供了虚拟地址映射技术,而且在操作上,MMU要比MPU负责。本节主要讨论带MPU的处理器内核,MMU将在下一节详细介绍。
15.4.1 保护域(Protection Regions)
ARM处理器中的MPU使用“域(regions)”来对内存单元进行管理。域是与存储空间相关联的属性,处理器核将这些数据保存在协处理器CP15的一些寄存器中。通常域的个数为8个,编号为从0~7。
域的大小和起始地址保存在CP15的寄存器c6中。大小可以是4KB~4GB的任何2的乘幂。域的起始地址必须是其大小的倍数。比如,一个定义为4KB的域其起始地址可以是0x12345000,而一个大小定义为8KB的域起始地址只能是0x2000的倍数。
另外,操作系统可以为这些域分配更多的属性:访问权限、cache和写缓存。存储器基于当时的处理器模式(管理模式或用户模式)可以设定这些区域的访问权限为读/写、只读和不可访问。
当处理器访问主存的一个域时,MPU比较该域的访问权限属性和当时的处理器模式。如果请求符合域的访问标准,则MPU允许内核读/写主存;如果存储器请求不符号域的访问标准,将产生一个异常信号。
异常信号被送到处理器核。处理器核执行一个异常向量,然后跳转到异常处理程序,异常处理程序判断异常类型为预取指或数据中止,然后根据异常类型,跳转到相应的服务例程。
对于ARM处理器,存储空间的某一部分可以被分配给一个以上的区域。也就是说域可以重叠。在重叠的域内,可以设置域的优先级。在分配访问权限时重叠域比非重叠域有更大的灵活性。后面一节将会详细介绍域的重叠。
15.4.2 内存访问顺序
当ARM处理器产生一个内存访问信号时,内存保护单位MPU将负责检查要访问的地址是否在被定义的域中。
① 如果地址不在任何域中,存储器产生异常。如果内核预取指令则MPU产生预取中止异常;如果是存储器数据请求,则产生数据中止异常。
② 如果地址在多个域内,由MPU判断域的有效级来决定存储区域的访问属性。访问属性可以在CP15的寄存器中设定,可设定的位为C(Cache)、B(Buffer)、AP(Access Permission)。这些属性的具体定义为:
· C和B可以控制Cache和写缓存属性的Cache策略。例如,可以设置一个域使用回写(write-back)策略访问存储器,而另一个域则以无Cache和无写缓存方式访问;
· AP(access permission)决定域是否可以被访问。如果在当前处理器模式下,该域不能被访问,MPU将产生一个存储器访问异常。
图15.16显示了一个存储器访问过程。
图15.16 存储器访问过程
15.4.3 使能MPU
通过对协处理器CP15的寄存器c1中的bit[0]置1,可以使能存储器保护单元MPU。在系统上电时,默认状态是该位清零,所有保护域无效。
在使能MPU之前,至少一个域要被设定,而且该域的属性和访问权限要预先设定好。
注意在数据和指令域分离的系统中,如ARM940T,在指令和数据域中都要有一个有效域被预先设定好。
另外,使能MPU的指令要设在有效的域中。如果在使能MPU之前,域的属性和访问权限没有设定,那么系统的运行结果将不可预知。
当MPU无效(将协处理器CP15寄存器r1的bit[0]置0)时,整个内存区域都被处理器视为无Cache、无写缓存、无存储保护状态。
15.4.4 重叠域
域的定义在MPU的作用下可以重叠。当重叠的域被访问时,MPU会判断域的优先权,决定使用那个域的属性来操作重叠域。
域属性优先级的排列顺序为:域7的有效级最高,其次为域6,域0的优先级最低。
【例15.3】
假设将一个从0x3000起始的4KB地址空间定义为域2,其访问属性AP定义为0b10(AP=0b10,特权模式读/写访问,用户模式只读)。
将起始地址为0x0的16KB地址空间定义为域1,其访问属性AP定义为0b01(AP=0b01,特权模式只读)。
系统域划分如图15.17所示。
图15.17 重叠域的访问
当处理器在用户模式下执行Load指令,从0x3010地址取数据时,0x3010地址既在域1中也在域2中,因为域2的属性优先级高于域1,所有MPU执行域2的访问属性从0x3010地址取数据。域2是用户模式可读,所以不会发生数据异常。
在分配访问权限时重叠区域比非重叠区域有更大的灵活性,它可以使内存的某个特定联系内存单位在程序中担任背景的作用,用来给一块大存储空间分配相同的属性的低优先级域。其他具有较高优先级域的区域与该背景域某些部分重叠,用来改变已定义的背景域的较小子集的属性。这样,具有较高优先级的域可以改变背景域属性的子集。背景域可以用来保护一些睡眠状态的存储空间,使其不受非法访问,而此时由另一个不同域控制下的背景域的其他部分可以处于活跃状态。
一些嵌入式系统使用多任务的操作和控制。这些系统必须提供一种机制来保证正在运行的任务不破坏其他任务的操作。即要防止系统资源和其他一些任务不受非法访问。要达到这一目的通常有软件保护和硬件保护两种途径。这里软件保护是指仅靠软件来保护系统资源。系统中无保护硬件或硬件没启动。在多任务的系统中,通常要运行操作系统来达到任务间同步与通信。所以,这种软件的资源保护通常由操作系统来完成。但这种通过软件来协调任务运行,保护系统资源的做法有时会出现一些不可避免的问题。如当对一个通信用串口寄存器进行操作时,如果一个任务正在使用串口,则它没有办法来防止其他任务使用同一个串口。因此,若要成功使用该串口,则必须通过一个访问该串口的系统调用来协调。使用这些调用任务的非授权访问,很容易破坏经过该串口的通信。因此资源的不合理使用也许是不可避免的。
相反,受保护系统有专门的硬件来检测和限制系统资源的访问。它能保证资源的所有权,任务需要遵守一组由操作环境定义的、由硬件维护的规则,在硬件级上授予监视和控制资源程序的特殊权限。受保护系统主动防止一个任务使用其他任务的资源。因此使用硬件主动监视系统比协调加强的软件历程,提供了更好的保护。
ARM中配备的有效保护系统资源的硬件,有两种:
· MPU(Memory Protection Unit);
· MMU(Memory Management Unit)。
MMU是比MPU提供了功能更强大的内存保护机制,MPU只提供了内存区域保护,而MMU是在此基础上提供了虚拟地址映射技术,而且在操作上,MMU要比MPU负责。本节主要讨论带MPU的处理器内核,MMU将在下一节详细介绍。
15.4.1 保护域(Protection Regions)
ARM处理器中的MPU使用“域(regions)”来对内存单元进行管理。域是与存储空间相关联的属性,处理器核将这些数据保存在协处理器CP15的一些寄存器中。通常域的个数为8个,编号为从0~7。
域的大小和起始地址保存在CP15的寄存器c6中。大小可以是4KB~4GB的任何2的乘幂。域的起始地址必须是其大小的倍数。比如,一个定义为4KB的域其起始地址可以是0x12345000,而一个大小定义为8KB的域起始地址只能是0x2000的倍数。
另外,操作系统可以为这些域分配更多的属性:访问权限、cache和写缓存。存储器基于当时的处理器模式(管理模式或用户模式)可以设定这些区域的访问权限为读/写、只读和不可访问。
当处理器访问主存的一个域时,MPU比较该域的访问权限属性和当时的处理器模式。如果请求符合域的访问标准,则MPU允许内核读/写主存;如果存储器请求不符号域的访问标准,将产生一个异常信号。
异常信号被送到处理器核。处理器核执行一个异常向量,然后跳转到异常处理程序,异常处理程序判断异常类型为预取指或数据中止,然后根据异常类型,跳转到相应的服务例程。
对于ARM处理器,存储空间的某一部分可以被分配给一个以上的区域。也就是说域可以重叠。在重叠的域内,可以设置域的优先级。在分配访问权限时重叠域比非重叠域有更大的灵活性。后面一节将会详细介绍域的重叠。
15.4.2 内存访问顺序
当ARM处理器产生一个内存访问信号时,内存保护单位MPU将负责检查要访问的地址是否在被定义的域中。
① 如果地址不在任何域中,存储器产生异常。如果内核预取指令则MPU产生预取中止异常;如果是存储器数据请求,则产生数据中止异常。
② 如果地址在多个域内,由MPU判断域的有效级来决定存储区域的访问属性。访问属性可以在CP15的寄存器中设定,可设定的位为C(Cache)、B(Buffer)、AP(Access Permission)。这些属性的具体定义为:
· C和B可以控制Cache和写缓存属性的Cache策略。例如,可以设置一个域使用回写(write-back)策略访问存储器,而另一个域则以无Cache和无写缓存方式访问;
· AP(access permission)决定域是否可以被访问。如果在当前处理器模式下,该域不能被访问,MPU将产生一个存储器访问异常。
图15.16显示了一个存储器访问过程。
图15.16 存储器访问过程
15.4.3 使能MPU
通过对协处理器CP15的寄存器c1中的bit[0]置1,可以使能存储器保护单元MPU。在系统上电时,默认状态是该位清零,所有保护域无效。
在使能MPU之前,至少一个域要被设定,而且该域的属性和访问权限要预先设定好。
注意在数据和指令域分离的系统中,如ARM940T,在指令和数据域中都要有一个有效域被预先设定好。
另外,使能MPU的指令要设在有效的域中。如果在使能MPU之前,域的属性和访问权限没有设定,那么系统的运行结果将不可预知。
当MPU无效(将协处理器CP15寄存器r1的bit[0]置0)时,整个内存区域都被处理器视为无Cache、无写缓存、无存储保护状态。
15.4.4 重叠域
域的定义在MPU的作用下可以重叠。当重叠的域被访问时,MPU会判断域的优先权,决定使用那个域的属性来操作重叠域。
域属性优先级的排列顺序为:域7的有效级最高,其次为域6,域0的优先级最低。
【例15.3】
假设将一个从0x3000起始的4KB地址空间定义为域2,其访问属性AP定义为0b10(AP=0b10,特权模式读/写访问,用户模式只读)。
将起始地址为0x0的16KB地址空间定义为域1,其访问属性AP定义为0b01(AP=0b01,特权模式只读)。
系统域划分如图15.17所示。
图15.17 重叠域的访问
当处理器在用户模式下执行Load指令,从0x3010地址取数据时,0x3010地址既在域1中也在域2中,因为域2的属性优先级高于域1,所有MPU执行域2的访问属性从0x3010地址取数据。域2是用户模式可读,所以不会发生数据异常。
在分配访问权限时重叠区域比非重叠区域有更大的灵活性,它可以使内存的某个特定联系内存单位在程序中担任背景的作用,用来给一块大存储空间分配相同的属性的低优先级域。其他具有较高优先级域的区域与该背景域某些部分重叠,用来改变已定义的背景域的较小子集的属性。这样,具有较高优先级的域可以改变背景域属性的子集。背景域可以用来保护一些睡眠状态的存储空间,使其不受非法访问,而此时由另一个不同域控制下的背景域的其他部分可以处于活跃状态。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 如何配置存储器保护单元(MPU)
- 如何管理STM32产品中的内存保护单元(MPU)
- AN5261 STM32 MCU和MPU的ESD保护
- AN5612 STM32 MCU和MPU的ESD保护
- InvenSense惯性测量单元IMU_MPU6050中文数据手 2次下载
- MPU6050常见问题的分析与处理
- 什么是Cortex-M内核的MPU(内存保护单元)?
- Cortex-M内核的MPU内存保护单元
- MPU6050开发 -- 数据分析
- 继电保护用开关电源的故障分析及措施综述 14次下载
- 单元串联高压变频系统的SPWM调制方法 11次下载
- 如何配置存储器保护单元(MPU) 13次下载
- MPU-3050运动处理单元产品说明书 22次下载
- 基于OTP存储器存储单元读取阀值 11次下载
- 目标数据存储控制单元的ASIC化设计 22次下载
- AUTOSAR内存分区和MPU关系简述 932次阅读
- CKS32F4xx系列I2S功能介绍 888次阅读
- CKS32F4xx系列DSP功能介绍 1356次阅读
- mpu6500和mpu6000哪个好 3077次阅读
- TC3xx芯片的MPU功能详解 1783次阅读
- 使用MPU监控创建安全可靠的嵌入式系统 使用MPU监控的原因和好处 702次阅读
- 如何为HMI选择正确的微处理单元 1539次阅读
- MPU是什么Cortex-M内核的MPU内存保护单元详细讲解 1w次阅读
- 一文看懂mpu9150和mpu6050区别 4.1w次阅读
- 一文看懂mpu6500和mpu6050区别 9.3w次阅读
- mpu6050和mpu3050有什么不同和相同(基础介绍和区别分析) 3.6w次阅读
- mpu6050姿态解算原理分析及程序设计 4.2w次阅读
- mpu内存保护单元功能及工作原理 1.2w次阅读
- E2PROM的存储单元 1562次阅读
- 熔丝型PROM的存储单元 2314次阅读
下载排行
本周
- 1HFSS电磁仿真设计应用详解PDF电子教程免费下载
- 24.30 MB | 126次下载 | 1 积分
- 2H桥中的电流感测
- 545.39KB | 7次下载 | 免费
- 3雷达的基本分类方法
- 1.25 MB | 4次下载 | 4 积分
- 4I3C–下一代串行通信接口
- 608.47KB | 3次下载 | 免费
- 5电感技术讲解
- 827.73 KB | 2次下载 | 免费
- 6从 MSP430™ MCU 到 MSPM0 MCU 的迁移指南
- 1.17MB | 2次下载 | 免费
- 7有源低通滤波器设计应用说明
- 1.12MB | 2次下载 | 免费
- 8RA-Eco-RA2E1-48PIN-V1.0开发板资料
- 35.59 MB | 2次下载 | 免费
本月
- 12024年工控与通信行业上游发展趋势和热点解读
- 2.61 MB | 763次下载 | 免费
- 2HFSS电磁仿真设计应用详解PDF电子教程免费下载
- 24.30 MB | 126次下载 | 1 积分
- 3继电保护原理
- 2.80 MB | 36次下载 | 免费
- 4正激、反激、推挽、全桥、半桥区别和特点
- 0.91 MB | 32次下载 | 1 积分
- 5labview实现DBC在界面加载配置
- 0.57 MB | 21次下载 | 5 积分
- 6在设计中使用MOSFET瞬态热阻抗曲线
- 1.57MB | 15次下载 | 免费
- 7GBT 4706.1-2024家用和类似用途电器的安全第1部分:通用要求
- 7.43 MB | 13次下载 | 免费
- 8PADS-3D库文件
- 2.70 MB | 10次下载 | 2 积分
总榜
- 1matlab软件下载入口
- 未知 | 935113次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191360次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183329次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81578次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73804次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65985次下载 | 10 积分
评论
查看更多