gpt4 book ai didi

ARM Cortex-R4F、缓存和 MPU

转载 作者:行者123 更新时间:2023-12-01 13:46:17 25 4
gpt4 key购买 nike

在 ARM Cortex-R4F 上,当我使用 SCTLR 寄存器位 I 和 C 禁用指令和数据缓存时,将区域属性定义为可缓存(回写)的 MPU 区域会发生什么情况?它会因为全局缓存被禁用而被忽略还是会导致未知行为?

最佳答案

在 ARMv7-A/R 架构下,SCTLR C 和 I 位是否影响启用的 MMU/MPU 生成的属性实际上是实现定义的。但是,从 default memory map attributes in the Cortex-R4 TRM 的描述来看,它看起来属于“按预期运行”的阵营,其中 SCTLR.C = 0 表示对任何普通内存区域的访问都是不可缓存的。

即使情况并非如此,替代方案也只是该位无效,并且使用 MMU/MPU 属性。幸运的是,这里没有完全不可预测的行为。

也就是说,要考虑的更毛茸茸的方面是,虽然保证不可缓存的访问不会在缓存中分配,但如果该位置的有效条目是否仍然可以命中,则由实现定义恰好在场。因此,如果您在进行任何可缓存访问后关闭缓存,您将希望在继续之前立即清理并使整个内容无效 - 我不确定该实现选择 Cortex-R4 落在哪一边,但无论哪种方式我不会冒险不这样做。

关于ARM Cortex-R4F、缓存和 MPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35874533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com