当我们阅读一些STM32F7或STM32H7系列芯片例程,或者基于这两类芯片通过cubeMx进行配置并用到MPU功能时,往往会在代码里看到下面这段MPU配置。
对这段代码可能有人有些疑问,这里重点一起聊聊其中的3个,供参考。
第一个疑问,那行做赋值0x87的代码是什么意思?
第二个疑问,这段代码的注释【绿色】是说将未定义的区域配置为Strongly Ordered存储属性,这个未定义到底如何理解?从代码看,这里清晰地对从0开始的整个4G空间做了配置,未定义区域到底指的哪里?
第三个疑问,这段代码往往并不是开发者自己配置的。如果使用CubeMx进行配置它会自动给我们加上这段,为什么要加这段?很多时候经测试,即使没这段代码似乎也没有什么问题。
这几个问题,涉及到MPU和Cortex M7内核芯片试探性访问的知识。我尽量通俗地加以介绍,知晓怎么回事即可。
我们知道,通过MPU可以配置特定地址空间的存储属性,给CPU约定访问权限。我们在对某块地址空间做MPU配置时,通常需要设置起始地址、空间大小、Cacheable、Bufferable、Shareable、子区属性、区块编号等。这里的地址空间,英文用Region来特指,后面都使用该词。
实际应用中我们往往会针对不同的Re