首页 理论教育 ARMCortex-M3STM系列:MPU介绍

ARMCortex-M3STM系列:MPU介绍

时间:2023-11-23 理论教育 版权反馈
【摘要】:如果没有启用MPU,则等同于系统中没有配MPU。MPU在执行其功能时,是以所谓的“region”为单位的。Cortex-M3的MPU共支持8个regions,并允许把每个region进一步划分成更小的“子region”。此外,还允许启用一个“背景region”,不过它是只能由特权级享用。在启用MPU后,就不得再访问定义之外的地址区间,也不得访问未经授权的region。比如,若1号region与4号region交迭,则交迭的部分受4号region控制。

ARMCortex-M3STM系列:MPU介绍

在Cortex-M3处理器中,可以选配一个存储器保护单元(MPU),它可以实施对存储器(主要是内存和外设寄存器)的保护,以使软件更加健壮和可靠。在使用前,必须根据需要对其编程。如果没有启用MPU,则等同于系统中没有配MPU。MPU有以下功能可以提高系统的可靠性

①阻止用户应用程序破坏操作系统使用的数据;

②阻止一个任务访问其他任务的数据区,从而把任务隔开;

③可以把关键数据区设置为只读,从根本上消除了被破坏的可能;

④检测意外的存储访问,如堆栈溢出、数组越界;

⑤此外,还可以通过MPU设置存储器regions的其他访问属性,比如,是否缓区,是否缓冲等。

MPU在执行其功能时,是以所谓的“region”为单位的。一个region其实就是一段连续的地址,只是它们的位置和范围都要满足一些限制(对齐方式、最小容量等)。Cortex-M3的MPU共支持8个regions,并允许把每个region进一步划分成更小的“子region”。此外,还允许启用一个“背景region”(即没有MPU时的全部地址空间),不过它是只能由特权级享用。在启用MPU后,就不得再访问定义之外的地址区间,也不得访问未经授权的region。否则,将触发MemManage fault。

MPU定义的regions可以相互交迭。如果某块内存落在多个regions中,则访问属性和权限将由编号最大的region来决定。比如,若1号region与4号region交迭,则交迭的部分受4号region控制。

典型情况下,在启用MPU的系统中,都会有下列的regions:(www.xing528.com)

①特权级的程序代码(如OS内核和异常服务例程);

②用户级的程序代码;

③特权级程序的数据存储器,位于代码区中(data_stack);

④用户级程序的数据存储器,位于代码区中(data_stack);

通用的数据存储器,位于其他存储器区域中(如SRAM);

⑥系统设备区,只允许特权级访问,如NVIC和MPU的寄存器所有的地址区间;

⑦常规外设区,如UART、ADC等。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈