0

我正在开发具有多个 Cortex M7 内核的 SoC。它有 SRAM 映射到区域0x2000 0000 ->0x3FFF FFFF和 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 
4

0 回答 0