MPU学习笔记

43 篇文章 2 订阅

Cortex-M4的寻址空间类型被地址映射规则(上图)和MPU程序划分成了不用的区域,这些区域有以下3大类型内存:

一般(Normal)类、设备(Device)类、强有序(Strongly-Ordered)类


小端 Little-Endian 模式,即字的最低位(LSB)位于低地址字节。


MPU属于Cortex-M4内核的一个外设

Cortex-M4还为用户提供了一系列“同步原语”指令,使得操作系统中的进程和线程可以使用这些“同步原语”来实现对内存的无打断访问(无锁编程?),从而实现有保障的“read-modify-write”内存刷新机制和信号量机制。
这些同步原语通常要成对使用,分为“加载专用原语(Load-Exclusive)”和“存储专用原语(Store-Exclusive)”,前者用于无打断地访问内存地址,后者用于无打断地写入内存地址(有返回值,0表示成功写入,1表示地址被锁写入失败)。
上述原语无法直接通过一般的C编译器生成,用户可以使用由CMSIS提供的内建函数来调用


MPU属于Cortex-M4内核的一个外设,它根据Cortex-M4可寻址空间模型(Memory Model)对内存空间定义(分区、地址、大小、属性等)来限制CPU的访问行为,起到保护内存数据的作用。

MPU支持以下主要功能:
独立设置内存空间分区的属性
内存分区重合
输出内存分区属性到系统


Cortex-M4的MPU定义了:
8块可被独立定义、配置的存储区,编号0-7;
1块背景存储区。

用户可以为不同的存储区配置不同的属性(如:内存类型、访问许可),这些属性将决定了CPU访问这些内存的行为(若发生了分区重合,那么重合区域的属性以编号数字更大的存储区的属性为准)。

若用户使能了MPU但未为其配置内存分区规则时,整个系统内存空间都会被默认为是一整块背景存储区,此时该空间仅能被“特权级”程序访问。

MPU位于CPU内核的内存接口(Memory Interface)与各总线内部连接矩阵之间,监视着CPU的一切内存访问行为。
若某个程序命令CPU去访问被MPU禁止访问的空间,MPU将会产生一个“内存管理故障(Memory Management Fault)”异常,这有可能导致在OS上运行的相关线程被直接终结。

可见,MPU实际上就是Cortex-M4可寻址空间模型/映射规则(Memory Model/Map)的实际监督者。
MPU属于内核的一部分

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值