Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ARM Cortex M7的MPU设置_Arm_Cortex M_Mpu - Fatal编程技术网

ARM Cortex M7的MPU设置

ARM Cortex M7的MPU设置,arm,cortex-m,mpu,Arm,Cortex M,Mpu,我正在研究一个具有几个Cortex M7内核的SoC。它将SRAM映射到region0x2000 0000->0x3FFFFFF并将DDR映射到0x6000 0000->0xDFFF FFFF 似乎将DDR的4个分区配置为高速缓存的普通内存(WT、WB或WBA)会触发一个硬件错误,几秒钟后整个芯片就会冻结即使调试器也会断开连接。请注意,我不需要访问DDR来提出问题。只要在SRAM中运行代码来配置MPU并执行各种操作,就会在随机延迟后触发错误 配置MPU时设置的属性是否有任何限制? 我想说的是,只

我正在研究一个具有几个Cortex M7内核的SoC。它将SRAM映射到region
0x2000 0000
->
0x3FFFFFF
并将DDR映射到
0x6000 0000
->
0xDFFF FFFF

似乎将DDR的4个分区配置为高速缓存的普通内存(WT、WB或WBA)会触发一个硬件错误,几秒钟后整个芯片就会冻结即使调试器也会断开连接。请注意,我不需要访问DDR来提出问题。只要在SRAM中运行代码来配置MPU并执行各种操作,就会在随机延迟后触发错误

配置MPU时设置的属性是否有任何限制?

我想说的是,只有
0xE000 0000
中的系统空间具有固定属性,其他空间可以根据硬件实现自由配置,但我有一个疑问,因为如果我参考ARMv7-M arch ref手册,我可以找到以下内容:

B3.1系统地址映射(第588页)

[…]声明的缓存类型可以降级,但不能升级[…]

我不确定这是否只是两个连续配置在运行时的限制,还是禁止在0xA为分区启用缓存的绝对限制。。。和0xC。。。即使在初始化期间也会有一次,因为它们在默认地址映射中未启用

此外,文档表明DDR是普通内存,但如果我将其默认配置为设备空间(不考虑此配置固有的较慢的非重新排序访问),是否存在任何问题


以下是4个DDR分区的确切配置:

RBAR -> 60000000 80000000 A0000000 C0000000 (start addresses)
RASR => 03080039 03080039 13010039 13100039 (default settings)
RASR => 03020039 03020039 03020039 03020039 (new settings triggering the bug)
请注意,对于SRAM,我保持相同的设置:

RBAR -> 20000000 
RASR => 030B0039 

它认为cortex-m架构对用户(芯片供应商)的地址空间限制更大,但您已经打开了文档。我假设您的缓存方案完全在arm之外,并且与它们的体系结构无关,只要总线和内核可以通过数据传输与这些地址空间脱离内核。