文章目录
0
参考资料:
http://www.szcdxkmcu.com/PIC/PIC/CM3权威指南CnR2.pdf
MMU 是应用处理器中的概念,主要作用是实现虚拟内存和内存分区。由于其具有不确定性,所以嵌入式设备中不能容忍,但是嵌入式中也不能没有分区保护的功能,于是内存分区便引入进来,称为MPU。因此可以把MPU称为MMU的子集。
MPU有如下的能力可以提高系统的可靠性:
- 阻止用户应用程序破坏操作系统使用的数据
- 组织一个任务访问其他任务的数据区,从而把任务隔开。
- 把关键数据区设置为只读,从根本上消除被破坏的可能
- 检测意外的存储访问,如堆栈溢出,数组越界。
- 可以设置存储器region的其他访问属性,比如是否缓存,是否缓冲等。
Cortex-M3 有一个可选的存储器保护单元。配上它之后,就可以对特权级访问和用户级访问分别施加不同的访问限制。当检测到犯规(violated)时, MPU 就会产生一个 fault 异常,可以由fault 异常的服务例程来分析该错误,并且在可能时改正它。
MPU 有很多玩法。最常见的就是由操作系统使用 MPU,以使特权级代码的数据,包括操作系统本身的数据不被其它用户程序弄坏。 MPU 在保护内存时是按区管理的(“区”的原文是 region,以后不再中译此名词——译注)。它可以把某些内存 region 设置成只读,从而避免了那里的内容意外被更改;还可以在多任务系统中把不同任务之间的数据区隔离。一句话,它会使嵌入式系统变得更加健壮,更加可靠(很多行业标准,尤其是航空的,就规定了必须使用 MPU 来行使保护职能——译注)。
当出现MPU的异常中断时,编号是4。