WinCE Cache操作函数

kernel如何保证cache数据一致性 那么问题就来了,正因为嵌入式处理器软件管理cache,就需要我们代码主动去操作cache,但在内核开发中很少会直接进行cache操作,cache操作到底在哪里进行的,什么时候需要操作cache。 首先想明白一点,为什么要进行cache操作,只能说cache是天使也是魔鬼。cache在提高了系统性能同时却导致了数据的不一致性。嵌入式处理器软件管理cache的初衷就是保证数据一致性。 那什么地方需要保证数据一致性呢? 对于由CPU完全操作的数据,数据是完全一致的。也就是该数据完全由CPU写读操作,没有对CPU不 阅读详情

作者: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” 目录下可以搜索到。一般来说上面两个函数不需要再被实现了,我想只要知道这两个函数,了解一下就可以了。

大疆OcuSync系统背后的黑科技:跳频扩频技术如何让你的无人机飞得更稳 本文深入解析了大疆OcuSync系统如何运用跳频扩频技术等先进无线通信方案,显著提升无人机在复杂环境下的飞行稳定性。系统通过跳频扩频与直接序列扩频技术协同工作,结合双频智能切换与多天线MIMO,有效对抗信号干扰与多径效应,确保控制指令与高清图传的可靠、低延迟传输,为用户带来更安心、更流畅的飞行体验。 阅读详情

相关推荐

第1章>>1.5:神电测控为什么开发LabVIEW ZYNQ FPGA软件工具包?(ZYNQ芯片的特点与优势)《LabVIEW ZYNQ FPGA宝典》

ZYNQ是赛灵思公司(Xilinx)推出的新一代全可编程片上系统(APSoC,All-Programmable SoC),它将处理器的软件可编程性与FPGA的硬件可编程性进行完美整合,以提供无与伦比的系统性能、灵活性与可扩展性。Zynq-7000系列是Xilinx于2010年4月推出的行业第一个可扩展处理平台,旨在为视频监视、汽车驾驶员辅助、工厂自动化、医疗器械等高端嵌入式应用提供所需的处理能力与计算性能。这款基于ARM处理器的SoC可满足复杂嵌入式系统的高性能、低功耗和多核处理能力等要求。

qq_40694786的博客 1647

WinCE OAL中的Cache操作函数介绍

作者:ARM-WinCE 在OAL中有两个和Cache相关的函数,一个是OEMARMCacheMode,另一个是OEMCacheRangeFlush函数,这两个函数在ARM处理器上是必须实现的。 OEMARMCacheMode函数用于设置基于ARM处理器页表的cache模式,主要是设置MMU页表中的C,B控制位,达到控制相应的存储空间的缓冲特性的目的。一般默认C和B控制位都被设置为

唐勉的ARM/Linux/WinCE专栏 3813

4. PCIe 接口时序

在上一篇中,大致介绍IPcore接口。总的来说接口如下图数据的接收和发送通过transmitTLPinterface和ReceiveTLPinterface。收发数据的时序也只是描述这几个接口的关系。从手册上截取PCIex1的接口时序。

jjinl的专栏 6123

cache原理学习(作者:gooogleman)

作者:wogoyixikexie@gliet            cache是ARM最难理解,也是最具有闪光点的地方之一,现在是解决他的时候了。            对于这么经典的东西,我还是引用ARM工程师的书籍吧,免得误人子弟。 cache以及write buffer的介绍     A cache is a small, fast array of memory placed be

gooogleman#foxmail.com 1万+

使用 Python 和可视化编程控制树莓派机械臂myCobot

这些模块包括逻辑、循环、数学、文本、列表、颜色、变量、函数以及控制机械臂的函数等等,所以用户可以轻松入门编程,只需单击右上角的运行就可以启动程序,做一些有趣的应用。可以搭配任意摄像头进行图像识别,具有4个 USB 端口,可以通过 Raspberry Pi 的微型 HDMI 端口连接到显示器. 最后,40 个GPIO 接头可以进行更多扩展应用,机械臂每个接口都有清晰的标记,面板上还有一个电源开关和一个直流电源插孔。您现在可以将机器人放在地板或桌子上,并用力拧紧吸盘,以确保机械臂的底座在操作过程中不会移动。

m0_62456998的博客 3966

告别第三方工具!用Windows自带蓝牙玩转BLE设备调试(保姆级图文教程)

本文详细介绍了如何利用Windows自带的蓝牙功能进行BLE设备调试,无需第三方工具。从硬件准备、系统配置到实战操作,提供保姆级图文教程,帮助开发者高效完成设备发现、数据交互等全流程调试工作。特别适合物联网开发者和智能硬件爱好者。

o5p6q的博客 731

wince6下访问物理内存

S3C6410 wince6.0 DDR 从128MB 扩展为256MBwince6下访问物理内存(2009-09-07 11:27:21)标签:杂谈       在Wince下面已经不能通过简单的VirtualAlloc+VirtualCopy在应用程序中访问物理内存了。应用程序直接访问物理地址可以极大的方便硬件驱动开发.如直接

sunboyljp的专栏 858

uniapp - 实现手机端H5网页直播功能效果,拿到后端推流地址或播放资源后进行前端的流畅播放和画面展示功能,uniapp实时推流/拉流直播系统详细教程(提供完整示例代码,一键复制开箱即用!)

uniapp,h5网页,手机端H5网页,uniapp h5直播功能页面,uniapp直播实时推送显示,uniapp h5直播怎么做,怎么使用uniapp去实现移动端手机H5直播,h5 vue+uniapp怎么做直播,uniapp中使用videojs构建H5直播播放器,uniappH5端怎么实现直播推流,uniapp如何实现直播,直播聊天功能,h5平台端直播用什么插件,uniapp手机网页直播用什么组件插件播放器,uniapp手机H5直播播放器详细教程,直播项目,怎么使用vue+uniapp怎么做H5实时直播

✅ 精选推荐文章 8793

WINCE物理和虚拟地址的问题

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class

574

IgH EtherCAT 从入门到精通:第 30 章 实战:高可用 EtherCAT 系统设计

摘要:构建高可用EtherCAT系统的关键技术 本章详细介绍了工业级EtherCAT系统的高可用性设计方法,主要包括: 冗余链路架构:采用双网卡环形拓扑设计,主备网卡同时工作,通过IgH Master的冗余配置实现线缆故障自动切换。 状态监控机制:提供专用API实时监控主备链路状态,包括从站响应数、链路状态和冗余激活标志,形成完整的故障判断矩阵。 自动恢复功能:系统内置FSM架构支持热插拔自动检测和重配置,从站断线/重连时可自动完成状态恢复,同时允许应用层实施安全措施。 这些技术共同构成了生产环境下Ethe

从事嵌入式linux android驱动开发,拥有全栈能力 244

OV5645摄像头原理图设计,已量产

在嵌入式视觉项目里,摄像头小板真正决定量产稳定性的,往往不是把传感器接出来这件事本身,而是电源域有没有拆清、参考时钟够不够干净、主板调试时有没有留出可落地的接口。ATK-MC5645 这张原理图的价值,就在于它没有把 OV5645 裸接到一排连接器上,而是把 AFVDD_2V8、DOVDD_1V8、DVDD_1V5、24MHz 时钟和 MIPI/控制信号都收敛在一块独立模组上。

不脱发的程序猿 334

WinCE OAL中的Cache操作函数介绍 (转自:ARM-WinCE)

WinCE OAL中的Cache操作函数介绍收藏 在OAL中有两个和Cache相关的函数,一个是OEMARMCacheMode,另一个是OEMCacheRangeFlush函数,这两个函数在ARM处理器上是必须实现的。 OEMARMCacheMode函数用于设置基于ARM处理器页表的cache模式,主要是设置MMU页表中的C,B控制位,达到控制相应的存储空间的缓冲特性的

benben6415的专栏 327

RK3568平台开发系列讲解(安卓篇)LED呼吸灯系统流程

1.app层封装后使用NotificationManager发出:NotificationManager.notify() 2.Android 系统架构中:一个manager类对应一个aidl接口,一个manager对应一个底层的服务,notification也是这个架构

内核笔记 3646

【转载】WinCE OAL中的Cache操作函数介绍

转载自:http://blog.youkuaiyun.com/nanjianhui/article/details/3937207 在OAL中有两个和Cache相关的函数,一个是OEMARMCacheMode,另一个是OEMCacheRangeFlush函数,这两个函数在ARM处理器上是必须实现的。 OEMARMCacheMode函数用于设置基于ARM处理器页表的cache模式,主要是设置MM...

weixin_34249678的博客 87

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

WINCE6.0+S3C2443的启动过程---eboot1

<br /><br />WINCE6.0+S3C2443的启动过程---eboot<br /> <br />我们知道从nboot把eboot从nandflash中拷贝到内存指定的地址后,就接着在这个地址处开始运行eboot了,之后,nboot的工作就完成了,那么那么eboot开始执行的地址在哪里呢?我们看看/Src/Bootloader/Eboot/boot.bib下面的配置<br /> <br />MEMORY<br />;   Name     Start     Size      Type<br /

LoongEmbedded的专栏 2664

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCE6的KernelIoControl函数

 WINCE6的KernelIoControl函数在用户模式和内核模式下都可以调用,但是有很大的差别。在内核模式下调用KernelIoControl最终会执行到BSP中的OEMIoControl函数。在用户模式下则是调用oalioctl.dll中的IOControl函数。oalioctl.dll的源码在"WINCE600/PUBLIC/COMMON/OAK/

fengwx的专栏 993

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java memorycache原理_CPU Cache 原理及操作

CPU Cache原理CPU缓存(CacheMemory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数...

weixin_30842027的博客 760

WinCE OAL中的OEMInit函数

OEMInit是OAL中的重要函数,用来初始化板级的硬件设备。实际上,WinCE的内核最开始只做了CPU级的初始化,随后会初始化调试串口,然后就会调用该函数了。应该说OAL中的OEMInit函数有点像EBOOT中的OEMPlatformInit函数,我说的是有点像,毕竟应用不同。OEMInit函数主要完成以下功能:1. 初始化相应的硬件外设 2. 根据需要初始化KITL调试3. 设

lllchr88的专栏 466

WinCE BSP中OAL层中的OEMIoControl介绍

作者:ARM-WinCE 在WinCE的BSP中的OAL部分,会有一个ioctl.c或者oemioctl.c文件,里面主要定义了一个叫OEMIoControl(..)的函数。可以说OEMIoControl是一个很有用的WinCE内核输入/输出函数。在WinCE5.0中,应用程序和驱动程序可以通过调用KernelIoControl(..)函数来访问WinCE内核,导致调用OEMIoCon

唐勉的ARM/Linux/WinCE专栏 5135

WinCE 的DMA内存操作函数

HalAllocateCommonBuffer(..)和HalFreeCommonBuffer(..)分别用于为DMA申请和释放内存。1. DMA内存分配函数:PVOID HalAllocateCommonBuffer(PDMA_ADAPTER_OBJECT DmaAdapter, ULONG Length, PPHYSICAL_ADDRESS LogicalAddress, BOOLEAN CacheEnabled)    DmaAdapter:        DMA适配器结构指针    Length: 

jerrytong的专栏 2251

WinCE EBOOT的入口Startup.s

作者:ARM-WinCE 在Startup.s文件中包含一个startup的入口函数,该函数为EBOOT的最开始的入口。在系统上电或者冷启动的时候,这是第一个被执行的函数。该函数都是由汇编语言编写的,完成基于硬件平台的最初的初始化,也就是CPU的相关初始化,如果有必要,也可以在这里对外围的设备进行初始化。该函数执行到最后,会跳转到C语言的入口,一般是Main函数,或者叫做EBootMain

唐勉的ARM/Linux/WinCE专栏 5532

WinCE KernelIoControl函数5.0和6.0的区别

<br />在WinCE的BSP中的OAL部分,会有一个ioctl.c或者oemioctl.c文件,里面主要定义了一个叫OEMIoControl(..)的函数。可以说OEMIoControl是一个很有用的WinCE内核输入/输出函数。<br />在WinCE5.0中,应用程序和驱动程序可以通过调用KernelIoControl(..)函数来访问WinCE内核,导致调用OEMIoControl函数,这样应用程序和驱动程序就可以访问到OAL中的资源了。但在WinCE6.0中,提供了更好的安全性,应用程序能够访问

Jicky1984的专栏 2273

WinCE6.0的目录组织及PQOAL

   在搭建Wince6.0完开发平台以后,我们先熟悉一下WINCE600的目录组织和PQOAL的相关概念。不然会像无头苍蝇一样,找不到北。我曾经在这里晕了好久。   安装完成后, C盘的根目录下产生一个WINCE600的目录,这里包括WinCE6.0的源代码、BSP和一些编译WinCE时需要用到的工具和库文件。另外还产生一个C:/Program Files

dadahacker的笔记 2220

WinCE BSP中 OEMIoControl

在WinCE的BSP中的OAL部分,会有一个ioctl.c或者oemioctl.c文件,里面主要定义了一个叫OEMIoControl(..)的函数。可以说OEMIoControl是一个很有用的WinCE内核输入/输出函数。在WinCE5.0中,应用程序和驱动程序可以通过调用KernelIoControl(..)函数来访问WinCE内核,导致调用 OEMIoControl函数,这样应用程序和驱动

wolfcmd1231的专栏 564
上一篇: wince5.0 中断 详解
下一篇: 嵌入式操作系统 硬件抽象层 HAL
wolfcmd1231
博客等级 码龄17年 15粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值