mpu 配置内存空间_【STM32H7教程】第23章 STM32H7的MPU内存保护单元(重要)

本文是STM32H7教程的第23章,主要介绍了MPU的功能,包括内存区域划分、内存保护、外设保护和代码访问保护。详细讲解了MPU的16个独立内存区域、内存映射、三种内存类型,以及寄存器配置,如RASR的XN、AP、TEX、C、B和S位等,强调了MPU在系统安全和性能优化中的重要作用。
摘要由CSDN通过智能技术生成

23.1 初学者重要提示

本章节主要是为下一章Cache的讲解做个铺垫,需要初学者把本章节涉及到的基础知识点掌握了。

初学MPU时,可能有些知识点无法一下子就搞明白,在后续章节的各种应用后,会有一个较深的认识。这个知识点基本会贯穿整个教程。

23.2 MPU简介

MPU可以将memory map内存映射区分为多个具有一定访问规则的区域,通过这些规则可以实现如下功能:

防止不受信任的应用程序访问受保护的内存区域。

防止用户应用程序破坏操作系统使用的数据。

通过阻止任务访问其它任务的数据区。

允许将内存区域定义为只读,以便保护重要数据。

检测意外的内存访问。

简单的说就是内存保护、外设保护和代码访问保护。

内存映射

内存映射就是32位的CM7内核整体可以寻址的0 到2^32 -1共计4GB的寻址空间。通过这些地址可以访问RAM、Flash、外设等。下面是内存映射的轮廓图,IC厂家使用时,再做细分,添加相应的硬件功能。

23.3 MPU的功能实现

MPU可以配置保护16个内存区域(这16个内存域是独立配置的),每个区域最小要求256字节,每个区域还可以配置为8个子区域。由于子区域一般都相同大小,这样每个子区域的大小就是32字节,正好跟Cache的Cache Line大小一样。

MPU可以配置的16个内存区的序号范围是0到15,还有默认区 default region,也叫作背景区,序号-1。由于这些内存区可以嵌套和重叠,所以这些区域在嵌套或者重叠的时候有个优先级的问题。序号15的优先级最高,以此递减,序号-1,即背景区的优先级最低。这些优先级是固定的。

下面通过一个具体的实例帮助大家理解。如下所示共有7个区,背景区和序号0-5的区。内存区4跟内存区0和1有重叠部分,那么重叠部分将按照内存区4的配置规则执行;内存区5被完全包含在内存区3里面,那么这部分内存区将按照内存区5的配置规则执行。

23.4 MPU可以配置的三种内存类型

MPU可以配置的三种内存类型如下:

Normal memory

CPU以最高效的方式加载和存储字节、半字和字,对于这种内存区,CPU的加载或存储不一定要按照程序列出的顺序执行。

Device memory

对于这种类型的内存区,加载和存储要严格按照次序进行,这样是为了确保寄存器按照正确顺序设置。

Strongly ordered memory

程序完全按照代码顺序执行,CPU需要等待当前的加载/存储指令执行完毕后才执行下一条指令。这样会导致性能下降。

23.5 MPU的寄存器和对应的库参数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值