mpu内存保护单元功能及工作原理

ARM

36人已加入

描述

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

  内存保护单元(MPU)是ARM中配备的有效保护系统资源硬件的一种,提供了内存区域保护功能。

  MPU功能

MPU

  (1)保护内存区域。

  ARM处理器中的MPU使用“域(regions)”来对内存单元进行管理。域是与存储空间相关联的属性,处理器核将这些数据保存在协处理器CP15的一些寄存器中。通常域的个数为8个,编号为从0~7。

  域的大小和起始地址保存在CP15的寄存器c6中。大小可以是4KB~4GB的任何2的乘幂。域的起始地址必须是其大小的倍数。比如,一个定义为4KB的域其起始地址可以是0x12345000,而一个大小定义为8KB的域起始地址只能是0x2000的倍数。

  (2)将保护区域重叠。

  对于ARM处理器,存储空间的某一部分可以被分配给一个以上的区域。也就是说域可以重叠。在重叠的域内,可以设置域的优先级。在分配访问权限时重叠域比非重叠域有更大的灵活性。

  (3)控制访问权限。

  操作系统可以为这些域分配更多的属性:访问权限、cache和写缓存。存储器基于当时的处理器模式(管理模式或用户模式)可以设定这些区域的访问权限为读/写、只读和不可访问。

  当处理器访问主存的一个域时,MPU比较该域的访问权限属性和当时的处理器模式。如果请求符合域的访问标准,则MPU允许内核读/写主存;如果存储器请求不符号域的访问标准,将产生一个异常信号。

  (4)将存储器属性输出到系统。

  异常信号被送到处理器核。处理器核执行一个异常向量,然后跳转到异常处理程序,异常处理程序判断异常类型为预取指或数据中止,然后根据异常类型,跳转到相应的服务例程。

  MPU工作原理

MPU

  当ARM处理器产生一个内存访问信号时,内存保护单位MPU将负责检查要访问的地址是否在被定义的域中。

  1、如果地址不在任何域中,存储器产生异常。如果内核预取指令则MPU产生预取中止异常;如果是存储器数据请求,则产生数据中止异常。

  2、如果地址在多个域内,由MPU判断域的有效级来决定存储区域的访问属性。访问属性可以在CP15的寄存器中设定,可设定的位为C(Cache)、B(Buffer)、AP(Access Permission)。

  这些属性的具体定义为:

  · C和B可以控制Cache和写缓存属性的Cache策略。例如,可以设置一个域使用回写(write-back)策略访问存储器,而另一个域则以无Cache和无写缓存方式访问;

  · AP(access permission)决定域是否可以被访问。如果在当前处理器模式下,该域不能被访问,MPU将产生一个存储器访问异常。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分