Caching STM32H7 MPU可共享内存属性和强顺序内存类型

Caching STM32H7 MPU可共享内存属性和强顺序内存类型,caching,stm32,cortex-m,mpu,Caching,Stm32,Cortex M,Mpu,我对STM32H7 MPU的一些属性感到困惑 我读过几个文件:STM32H7参考和编程手册、STMicro MPM应用说明等 我知道shareable完全等同于non-cacheable(至少在单核STM32H7上)。对吗 我需要为QSPI闪存定义一个MPU区域。MicroChip的一份文件(参考TB3179)指出,QSPI内存应按强顺序配置。我真的不明白为什么 问题:我知道shareable完全等同于non-cacheable(至少在单核STM32H7上)。对吗 以下是有关MPU配置的ST指南

我对STM32H7 MPU的一些属性感到困惑

我读过几个文件:STM32H7参考和编程手册、STMicro MPM应用说明等

我知道shareable完全等同于non-cacheable(至少在单核STM32H7上)。对吗

我需要为QSPI闪存定义一个MPU区域。MicroChip的一份文件(参考TB3179)指出,QSPI内存应按强顺序配置。我真的不明白为什么

问题:我知道shareable完全等同于non-cacheable(至少在单核STM32H7上)。对吗

以下是有关MPU配置的ST指南:

如果某个区域可缓存且可共享,则在STM32F7/H7中只使用指令缓存

因为STM32[F7和H7]微控制器不包含任何硬件 用于保持数据一致性的功能,将区域设置为可共享 表示区域中未使用数据缓存。如果该地区不是 可共享,可使用数据缓存,但总线之间的数据一致性 大师级需要软件来保证

禁用指令访问时,STM32H7上的可共享似乎与非缓存访问隐式同义(从不执行,禁用代码执行)

此外,

sharability属性告诉处理器它必须执行任何操作 是允许共享该数据所必需的<那到底是什么 方法取决于特定处理器的功能。

在具有多CPU硬件缓存一致性的处理器上;这个 shareability属性是一个启用缓存一致性逻辑的信号。 例如,A57可以保持内部可共享数据的缓存一致性 集群和集群之间(如果通过相干网络连接) 互连

在没有硬件缓存一致性的处理器(如Cortex-A8)上,共享数据的唯一方法是将数据从缓存中推出 就像你猜的那样。在A8上,可共享、可缓存的内存结束 被视为未缓存。

有人,如果我错了,请纠正我——很难就这个话题做出明确而简洁的陈述


问题:我需要为QSPI闪存定义一个MPU区域。 QSPI内存应配置为强顺序。我真的不明白为什么

上面的MPU指南至少声明了两点:防止推测性访问和防止写入被碎片化(例如,被读取操作中断)

推测性内存读取可能导致高延迟甚至系统错误 在SDRAM或四SPI等外部存储器上执行时

外部存储器甚至不需要连接到微控制器, 但是它的内存范围可以通过推测读取来访问,因为 默认情况下,其内存区域设置为正常

从不对强顺序和设备内存进行推测性访问 区域。

强顺序内存类型用于需要每次写入都是单个事务的内存中

对于强顺序内存区域CPU等待内存访问结束指令

最后,我怀疑对齐可能是来自内存端的一个需求,它由强制对齐读/写访问的内存类型充分表示

但是,设备和强顺序内存始终是不可缓存的。 另外,对设备或强顺序内存的任何未对齐访问 生成校准UsageFault,因此不会导致任何AXI 转移这意味着本章给出了访问示例 切勿显示对设备或强顺序内存的未对齐访问

问题:我知道shareable完全等同于non-cacheable(至少在单核STM32H7上)。对吗

以下是有关MPU配置的ST指南:

如果某个区域可缓存且可共享
,则在STM32F7/H7中只使用指令缓存

因为STM32[F7和H7]微控制器不包含任何硬件 用于保持数据一致性的功能,将区域设置为可共享 表示区域中未使用数据缓存。如果该地区不是 可共享,可使用数据缓存,但总线之间的数据一致性 大师级需要软件来保证

禁用指令访问时,STM32H7上的可共享似乎与非缓存访问隐式同义(从不执行,禁用代码执行)

此外,

sharability属性告诉处理器它必须执行任何操作 是允许共享该数据所必需的<那到底是什么 方法取决于特定处理器的功能。

在具有多CPU硬件缓存一致性的处理器上;这个 shareability属性是一个启用缓存一致性逻辑的信号。 例如,A57可以保持内部可共享数据的缓存一致性 集群和集群之间(如果通过相干网络连接) 互连

在没有硬件缓存一致性的处理器(如Cortex-A8)上,共享数据的唯一方法是将数据从缓存中推出 就像你猜的那样。在A8上,可共享、可缓存的内存结束 被视为未缓存。

有人,如果我错了,请纠正我——很难就这个话题做出明确而简洁的陈述


问题:我需要为QSPI闪存定义一个MPU区域。 QSPI内存应配置为强顺序。我真的不明白为什么

上面的MPU指南至少声明了两点:防止推测性访问和防止写操作碎片化。