MPU扫盲

什么是MPU

MPU:Memory Protection Unit,即内存保护单元。它是一种提供内存保护的计算机硬件单元,它是单片机内核中用于内存保护的可选组件,通常作为CPU的一部分来实现。主要负责定义内存空间的属性,例如特权指令和非特权指令以及Cache是否可访问。

MPU的作用

MPU可以将内存划分为不同的区域,并且可以设置每个区域的访问属性,提高系统的稳定性。

典型应用如下:

  • 划分特权用户访问区域和普通用户访问区域,在OS系统中提高系统稳定性。

  • 设置只读区域,防止关键数据被意外修改。

  • 检测堆、栈是否溢出。

相关寄存器

和Cache一样,MPU也是内核外设,Cortex-M3、Cortex-M4以及Cortex-M7内核的微控制器可以选配MPU功能。这里介绍几个MPU相关的寄存器。

MPU区域基地址寄存器(MPU_RBAR)

MPU区域属性和大小寄存器(MPU_RASR)

通常我们会在链接脚本里定义不同的section,将需要设为non-cacheable的内存块放置到特定的section里。在启动代码里对不同的section配置MPU相关寄存器。此后,
CPU在访问内存的时候,经过MPU,就会知道这块内存是cacheable还是non-cacheable的了。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2025 wrd
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信