STM32
直播中

钱一辰

8年用户 1040经验值
私信 关注
[问答]

如何配置MPU中的tex,C,B,S位?

看了编程手册关于MPU的使用仍然一头雾水,还是不知道如何配置MPU中的tex,C,B,S位

  •   MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
  •   MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
  •   MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
  •   MPU_InitStruct.Number = RAM_REGION_NUMBER;
  •   MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;

回帖(1)

石双厚

2024-3-25 16:17:14
虽然说你这里只提及几个字母,其实涉及东西很多。这里跟你聊聊,供你参考。

本质上讲,类似资料都来自于ARM公司,如果可能,尽量到ARM网站搜索相关资料。

这里推荐下载ARM V7-M架构参考手册,里面有较为详细的介绍。其中有个表格
B3-13 有罗列 TEX/C/B的配置与相关存储属性的对应关系。

比方 TEX=000,C=0,B=0, Device memory type, sharable.

这里C 对应是否可以使用Cache,B是否支持Bufferabe,这个bufferable不太好理解,
ARM手册上也没做太多介绍。可以简单地大致理解为是否支持写操作时仍然运行代码。

若要深入理解它,可能需要阅读相关AXI协议、甚至指令系统。

一搬来讲,strongly ordered Memory 不支持Cache,不支持bufferable, 默认共享。

Device memory 不支持Cache,但可以支持bufferable, 共享特性可配置。

Normal memory 支持Cacheable,bufferable,Sharable,均可配置。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分