WinCE Cache操作函数

本文介绍了WinCE操作系统中与Cache管理相关的两个关键函数OEMARMCacheMode和OEMCacheRangeFlush。OEMARMCacheMode用于设置基于ARM处理器页表的Cache模式,主要通过配置MMU页表中的控制位来实现。而OEMCacheRangeFlush则用于刷新指定地址范围内的Cache和TLB,支持多种刷新操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:ARM-WinCE

OAL 中有两个和 Cache 相关的函数,一个是 OEMARMCacheMode ,另一个是 OEMCacheRangeFlush 函数,这两个函数在 ARM 处理器上是必须实现的。

OEMARMCacheMode 函数用于设置基于 ARM 处理器页表的 cache 模式,主要是设置 MMU 页表中的 C B 控制位,达到控制相应的存储空间的缓冲特性的目的。一般默认 C B 控制位都被设置为 1 ,表示对 Write-through 模式和 Write-back 模式采用 cache write buffer 技术。

函数实现如下:

LEAF_ENTRY OEMARMCacheMode

mov r0, #0x0C

 

该函数已经被实现,在 PLATFORM 目录下可以被搜索到。默认情况下将 C B 都设置为 1 ,将值保存在 r0 寄存器中。

 

 

OEMCacheRangeFlush 用于刷新某个地址范围内的 Cache TLB ,会被 WinCE 内核调用。在 OEMInit 函数被内核调用以后,内核会调用该函数刷新整个指令和数据 TLB

函数定义如下:

void OEMCacheRangeFlush(LPVOID pAddr, DWORD dwLength, DWORD dwFlags)

pAddr :要被刷新的虚拟起始地址

dwLength :被刷新的大小

dwFlags :刷新标记位,如下:

        CACHE_SYNC_WRITEBACK :写回被 cache 的数据

        CACHE_SYNC_DISCARD :写回并刷新 cache 的数据

       CACHE_SYNC_INSTRUCTIONS 刷新 所有的指令 cache 数据

       CACHE_SYNC_FLUSH_I_TLB :刷新指令 TLB

          CACHE_SYNC_FLUSH_D_TLB :刷新数据 TLB

          CACHE_SYNC_FLUSH_TLB :刷新指令和数据 TLB

          CACHE_SYNC_L2_WRITEBACK :写回二级 cache 数据

        CACHE_SYNC_L2_DISCARD :写回并刷新 二级 cache 数据

       CACHE_SYNC_ALL :做上面所有的操作

 

该函数也已经被实现,在 ”Platform/COMMON” 目录下可以搜索到。一般来说上面两个函数不需要再被实现了,我想只要知道这两个函数,了解一下就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值