
STM32H7-MPU! r9 | H- x) D9 |$ D# g 一、MPU的作用 防止不受信用的应用程序访问受保护的内存区域 防止用户应用程序破坏操作系统使用的数据$ l* K1 e" r$ G3 z2 z: W1 g: Z, t 通过阻止任务访问其他任务的数据区 允许将内存区域定义为只读,以便保护重要数据。 检测意外的内存访问4 K, G; I. q' a 简单来说,就是内存保护、外设保护和代码访问保护。 二、MPU的功能实现 MPU可以配置保护16个内存区域,每个区域都是独立配置的。每个区域的最小要求是32字节,同时每个区域还可以配置为8个子区域,通过寄存器对应的bit来使能。5 Q5 o) @+ z1 I( t8 k $ G( P0 z+ m1 Q* X; l" x/ s* J2 w2 R MPU可配置的16个内存区的序号范围是0-15,还有一个默认区(背景区)序号为-1,这些内存区可以重叠以及嵌套——序号为15的优先级最高、背景区的优先级最低。例如下图,共有七个内存区:一个背景区+序号为0-5的内存区。内存区4和内存区0、1有重叠部分,则重叠部分按照内存区4的配置规则执行;内存区5被完全包含在内存区3里面,则这部分内存区的配置按照内存区5的配置规则进行。 ![]() - _ X0 K( ^2 n: s. Q. z4 D 三、MPU常用的寄存器(RASR寄存器和控制寄存器)9 V/ [3 ^6 x& W9 A7 B ) K5 _6 I! c; U* }9 ~/ | ![]() 0 d. {6 Z. r+ _8 S4 D$ T XN位:表示是否使能指令的提取 XN=0:使能指令提取,即这块内存可以执行程序代码 XN=1:禁止指令提取,机这块内存禁止执行程序代码 AP位:设置指定区域的访问权限类型 ; X8 X- K* `& q6 L ![]() TEX、C、B、S位:用于配置Cache的策略 . A4 q7 g) J4 f4 b5 y' w C位:用于使能或者禁止Cache9 ?- d1 v( ^" a% f+ | B位:用于配合C位实现Cache下是否使用缓冲/ M! `6 { O$ Q: C. H" H% F S位:用于解决多总线或者多核访问的共享问题( I, N3 l* l6 e * a5 T+ H7 f" J1 e% q q ![]() ![]() ) }, M( \$ i9 U0 ?- g# L read/write-through/back/allocate的区别: ! Y2 f: N" M: n" X/ b 一、CPU读Cache( b7 V6 @& l+ ^- d U1 X% }3 q 8 U* i: F. }" u7 ? Read through:直接从内存区读取数据. n5 j4 P; u9 T. U( [5 {/ ` v Read allocate:先把数据读取到Cache中,再从Cache中读取数据 二、CPU写Cache & s5 \; v* H, s: X: `% l' Q 若hit命中,有两种处理方式: Write-through:在数据更新时,把数据同时写入Cache和存储区% a K1 v9 W+ O& { 操作简单,但是写入速度慢 Write-back:只有在数据被替换出缓存时,被修改的缓存数据才会被写到后端存储。0 ^% I& m; ^3 t9 L& A 写入速度快,但是一旦更新后的数据未被写入时出现断电,则数据无法找回 若miss,有两种处理方式:( C; u7 |/ S, w A' a Q * |, G# {: L0 h# |, [ Write allocate:先把要写的数据载入到Cache中,写Cache,然后再通过flush的方式写入到内存中。 No-write allocate:并不将写入位置读入缓存,直接把要写的数据写入到内存中。% E9 { I* E R$ l 什么叫hit/miss: 一、读操作 如果CPU要读取的SRAM区数据在Cache中已经加载好,这就叫读命 中(Cache hit),如果Cache里面没有怎么办,这就是所谓的读Cache Miss。4 u- O3 l$ m0 M. q 二、写操作 如果CPU要写的SRAM区数据在Cache中已经开辟了对应的区域(专业词汇叫Cache Line,以32字节为单位),这就叫写命中(Cache hit),如果Cache里面没有开辟对应的区域怎么办,这就是所谓的写Cache Miss。* F/ Q d! y4 S3 |; f$ _ SRD位:用于控制内存区的子区域,一共有8bit,一个bit控制一个子区域,一般都开启 SIZE位:配置保护的内存的大小0 T: h2 x: ~7 h d1 I( ` * G$ E) @! V E* e* A* h9 S 四、MPU的HAL库配置函数8 x3 c7 f1 @/ b, o4 r/ I% W, b& X HAL_MPU_Disable:配置前要禁止MPU# g7 S% r" \1 _' D9 S* I' X. p HAL_MPU_Enable:使能 一般使用参数MPU_PRIVILEGED_DEFAULT$ W: }! {' [- \, l$ ^, S# b6 r HAL_MPU_ConfigRegion:配置MPU
|
STM32H7的TCM,SRAM等五块内存基础知识
STM32H7的TCM,SRAM等五块内存基础知识
简单了解一下STM32H7的BDMA
有奖预约 | STM32H7R7基于RT-Thread RTOS的智能终端GUI解决方案
【STM32H745I-DISCO】基于TouchGFX的工业控制器界面设计
STM32H745I-DISCO串口打印
【STM32H745I-DISCO】TouchGFX探索——3、触屏滑屏操作与中文显示
TouchGFX软件下载及使用
【STM32H745I-DISCO】TouchGFX探索——2、照葫芦画瓢
STM32H745I-DISCO硬件信号为空,M4、M7对于硬件信号的优先性判断