MPU-存储保护单元概述

 

 

        在Cortex‐M3处理器中可以选配一个存储器保护单元(MPU),它可以实施对存储器(主要是内存和外设寄存器)的保护,以使软件更加健壮和可靠。在使用前,必须根据需要对其编程。如果没有启用MPU,则等同于系统中没有配MPU。MPU有如下的能力可以提高系统的可靠性: 
         阻止用户应用程序破坏操作系统使用的数据 
         阻止一个任务访问其它任务的数据区,从而把任务隔开。 
        可以把关键数据区设置为只读,从根本上消除了被破坏的可能。 
        检测意外的存储访问,如,堆栈溢出,数组越界。 
        此外,还可以通过MPU设置存储器regions的其它访问属性,比如,是否缓区,是否缓冲等。 
     

    MPU在执行其功能时,是以所谓的“region”为单位的。一个region其实就是一段连续的地址,只是它们的位置和范围都要满足一些限制(对齐方式,最小容量等)。CM3的MPU共支持8个regions。怎么,嫌少?是少了点,不过,还允许把每个region进一步划分成更小的“子region”。此外,还允许启用一个“背景region”(即没有MPU时的全部地址空间),不过它是只能由特权级享用。在启用MPU后,就不得再访问定义之外的地址区间,也不得访问未经授权的region。否则,将以“访问违例”处理,触发MemManage fault。 
       MPU定义的regions可以相互交迭。如果某块内存落在多个region中,则访问属性和权限将由编号最大的region来决定。比如,若1号region与4号region交迭,则交迭的部分受4号region控制。

 

 详细介绍在《cortex-m3权威指南》--存储保护单元MPU

你可能感兴趣的:(32位单片机基础)