保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

嵌入式系统中的CACHE问题


“non-cacheable”即可。然而,动态缓冲区在释放时要标为“cacheable”,否则内存总会产生大量的缓冲区碎片。
  
  下面给出一个高性能的驱动程序例子,它把更新/无效的概念进行了扩展。不是对整个CACHE系统,而是对每一个缓冲区都这样做。即通过分配对CACHE安全的缓冲区,在一个缓冲区的基础上操作,从而防止了不需要的更新/无效操作。在这个例子中使用了CACHE库中的函数cacheDMAMalloc??,宏CACHE_DMA_INVALIDATE和CACHE_DMA_FLUSH实现一致性。在第4行调用函数cacheDMAMalloc??后,如果指针返回为非空,则说明分配到了一块对于一致性问题来说是安全的缓冲区。
  
  第7行驱动程序在缓冲区中写入要传给外部设备的数据,在第9行准备传给外设之前,驱动程序必须更新数据CACHE以保证要传的数据是在内存中,而不是在CACHE中。
  
  当驱动程序准备读外设传给内存的数据,在第13行驱动程序处理这些数据之前,必须使数据CACHE中对应于输入缓冲区的那部分无效以消除这些包含过时内容的条目。之后,驱动程序才能安全地处理从内存中取来的输入数据。
  
  1:?STATUSdrvExample?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:}
  
 

《嵌入式系统中的CACHE问题(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/168813.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。