估计大家经常看见MCU、MPU、MMU等这类缩写词,你们了解MPU吗?1写在前面
不知道大家有没有关注过Cortex-M内核的一些内容,在STM32大部分型号中都有MPU。
MPU是Cortex-M的选配件,拿STM32F1来说,STM32F10X_XL系列的芯片才具有这个MPU存储保护单元,而其他STM32F1芯片没有。
可能很多人都处于简单知道,或认识MPU的阶段,今天就写点关于MPU的内容,让大家进一步认识和了解MPU。2认识MPU,及作用
MPU:Memory Protection Unit,内存保护单元。
MPU存储器保护单元,它可以实施对存储器(主要是内存和外设寄存器)的保护,以使软件更加健壮和可靠。在使用前,必须根据需要对其编程。如果没有启用MPU,则等同于系统中没有配MPU。
MPU有如下的能力可以提高系统的可靠性:阻止用户应用程序破坏操作系统使用的数据。
阻止一个任务访问其它任务的数据区,从而把任务隔开。
可以把关键数据区设置为只读,从根本上消除了被破坏的可能。
检测意外的存储访问,如,堆栈溢出,数组越界。
此外,还可以通过MPU设置存储器regions的其它访问属性,比如,是否缓区,是否缓冲等。3了解野指针
上面简单认识了一下MPU的功能,其实它有个重要的功能就是对指针访问的内存具有保护作用。所以,这里让大家认识一下指针和野指针。回顾一下