如何解决ARM Cortex M7 的 MPU 设置
我正在开发具有多个 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。