ARM嵌入式实时系统(RTOS) 中通过页表关闭DCACHE的方法

ARM RTOS中通过页表关闭DCACHE的方法
本文介绍了在ARM Cortex-A7的实时系统(RTOS)中,如何通过页表来关闭数据缓存(DCACHE)。文章详细讨论了启用CACHE的依赖条件,特别是ACTLR.SMP的重要性,并展示了在ACTLR.SMP为0时执行ldrex/strex指令会导致异常。同时,文章还阐述了页表项如何建立非CACHE映射,以及内存区域的不同属性设置。

        现在的嵌入式实时系统规模越来越大,很多在linux中使用的特性,例如虚拟内存管理,动态加载等功能也加入进来,进一步增加了RTOS开发的难度.在应用开发中,和cache相关的同步问题有两个,一个是flush操作,另一个是invalidate操作,有时候为了确认问题是否和cache同步有关,需要关闭dcache来验证.这里介绍一种经过验证过的通过页表项关闭DCACHE的实践。

Cortex-A7中启用cache的依赖条件:

 在启用cache前,需要设置ACTLR.SMP=1,它表示“Enables coherent requests to the processor", 即使是在单核Cortex-A7上也是如此,详细的解释看arm官方回复:

Even in a single core Cortex-A7 processor the ACTLR.SMP bit must be set. The caches are disabled when ACTLR.SMP is set to 0 regardless of the value of the cache enable bit (SCTLR.C). 

It must ensure the ACTLR.SMP bit is set to 1 before the caches and MMU are enabled, or any cache and TLB maintenance operations are performed. The only time this bit is set to 0 is during a processor power-down sequence. 

So the ACTLR.SMP bit should not introduce so

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值