首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心理工论文电子通信
   嵌入式系统中的CACHE问题      ★★★ 【字体: 】  
嵌入式系统中的CACHE问题
收集整理:佚名    来源:本站整理  时间:2009-01-10 22:31:01   点击数:[]    

ACHE项进行访问时,CACHE就会从RAM中重新载入有效数据。在copyback模式下,处理器对CACHE进行写操作时,RAM相应地址中的内容就变成过时。如果另外一个设备想访问RAM中的这部分内容,CACHE就会抢占该访问周期,将有效的数据写入RAM。然后被抢占的访问周期重新开始并将读到RAM中的有效数据。但是,目前提供监听能力的板子并不多。

3 解决的方法

根据上面的分析和讨论,可见问题正是由数据CACHE / RAM的不一致性引起的。虽然关掉CACHE就可以解决一致性的问题,并且能够减小程序开发的复杂度。但是一个高性能的系统是需要CACHE的,关掉CACHE会大大降低系统的性能。因此,本文仅讨论在程序中加入代码来克服一致性问题的方法。

可以采用以下几种加入代码的方法来解决一致性的问题本文使用WIND RIVER公司的嵌入式实时多任务操作系统VxWORKS,下面的函数都是VxWORKS提供的:

(1)对于时间上不是那么关键的程序段,可以先用下面的代码维护数据CACHE的一致性。

cacheInvalidate DATA_CACHE address bytes

/ 输入缓冲区/

...

cacheFlush DATA_CACHE address bytes

/输出缓冲区/

(2)对于时间上比较关键的程序段采用如下原则:在每次使用输出缓冲区前将其更新;在每次使用输入缓冲区前使其无效。

将缓冲区标示为“non-cacheable”可以防止一致性问题,这需要MMU支持。在分配缓冲区时,将其标示为“non-cacheable”即可。然而,动态缓冲区在释放时要标为“cacheable”,否则内存总会产生大量的缓冲区碎片。

下面给出一个高性能的驱动程序例子,它把更新/无效的概念进行了扩展。不是对整个CACHE系统,而是对每一个缓冲区都这样做。即通过分配对CACHE安全的缓冲区,在一个缓冲区的基础上操作,从而防止了不需要的更新/无效操作。在这个例子中使用了CACHE库中的函数cacheDMAMalloc ,宏CACHE_DMA_INVALIDATE和CACHE_DMA_FLUSH实现一致性。在第4行调用函数cacheDMAMalloc 后,如果指针返回为非空,则说明分配到了一块对于一致性问题来说是安全的缓冲区。

第7行驱动程序在缓冲区中写入要传给外部设备的数据,在第9行准备传给外设之前,驱动程序必须更新数据CACHE以保证要传的数据是在内存中,而不是在CACHE中。

当驱动程序准备读外设传给内存的数据,在第13行驱动程序处理这些数据之前,必须使数据CACHE中对应于输入缓冲区的那部分无效以消除这些包含过时内容的条目。之后,驱动程序才能安全地处理从内存中取来的输入数据。

1: STATUS drvExample pBuf

2: void pBuf / 缓冲区指针 /

3: {   /* 

4: pBuf = cacheDMAMalloc BUF_SIZE

5: if pBuf == NULL

6: return ERROR /内存分配失败/

7: /其它初始化代码和向发送缓冲区填数据/

8: CACHE_DMA_FLUSH pBuf BUF_SIZE

9: drvWrite pBuf /向外设发送数据/

10: …… / 其它代码 /

11: drvWait  /等待外设来的数据/

12: CACHE_DMA_INVALIDATE pBuf BUF_SIZE

13: / 处理外设来的数据 /

14: cacheDMAFree pBuf /释放内存 /

15: return OK

16:}



上一页  [1] [2] 


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:在Linux下驱动STN彩色LCD

  • 下一篇文章:用CPLD实现嵌入式平台上的实时图像增强
  • 返回上一页】【打 印】【关闭窗口
    中查找“嵌入式系统中的CACHE问题”更多相关内容 5VAR论文频道
    中查找“嵌入式系统中的CACHE问题”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››嵌入式系统的通信规约管理平台设计...
  • ››一种基于七号信令的局间话单采集系...
  • ››对于变频器的制动技术分析
  • ››电子文件管理元数据宏观结构多维分...
  • ››浅论卫星电视接收机的常见故障的检...
  • ››信息时代网络用户信息检索焦虑的心...
  • ››论GIS在高校房产管理中的实际应用
  • ››关于电力通信发展战略的思考 金李莎...
  • ››2G、3G切换精细化优化分析思路探讨...
  • ››光纤自动化生产的需求与时机
  • ››嵌入式系统中“软外设”的研究
  • ››嵌入式系统的设计与开发
  • ››嵌入式系统关键技术分析与开发应用...
  • ››嵌入式系统设计方法的演化—从单片...
  • ››嵌入式系统中的Flash存储管理
  • ››嵌入式系统硬件抽象层的建立及软件...
  • ››嵌入式系统与普适计算
  • ››嵌入式系统面向低功耗的协同设计
  • ››嵌入式系统的定义与发展历史
  • ››嵌入式系统应用设计应关注MPW
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .