首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

arm中关于dma的一些疑问dma_m地图_writecombine和dma_alloc_coherent

2013-03-27 
arm中关于dma的一些疑问dma_mmap_writecombine和dma_alloc_coherenthi 大家好:最近再工作中遇到疑问想到一

arm中关于dma的一些疑问dma_mmap_writecombine和dma_alloc_coherent
hi 大家好:
最近再工作中遇到疑问想到一个问题,想请教一下大家。希望高手指点。
dma_mmap_writecombine
dma_alloc_coherent
网上找了一些相关资料描述这两个函数的区别:
1,禁止cache 和 禁止 buffer(读写缓存)
2,dma_alloc_coherent是不带cache和buffer的
3,dma_mmap_writecombine是不带cache但是有buffer的

问题是这样的:
1,很多dma的buf是使用dma_mmap_writecombine这个函数分配缓存区的,那么如果这个按照上述中带有buffer(读缓存)的话。如果cache中的内容还没有及时更新到dam的分配内存中。这样一来,当dma操作数据搬移的话,没有把最新的内容更新到buf中。会不会导致dma把滞后的数据搬移出去?
2,这个是不是和CPU架构有关?当cache中的内容没有更新到内存中的时候,是不会触发dma动作的?

谢谢。我的板子是cortex-A8的。
[解决办法]
这两个不都是禁止cache的吗?又何来cache的内容呢?
[解决办法]
对于dma_alloc_coherent,在x86的平台是硬件保证cache一致性  arm平台是软件保证 关闭cache 在深入linux设备驱动内核机制中有讲 对于dma_mmap_writecombine不太了解

热点排行