myswin
驱动小牛
驱动小牛
  • 注册日期2003-10-13
  • 最后登录2005-11-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2449回复:3

VXWORKS请教一些Cache、DMA的问题

楼主#
更多 发布于:2004-08-18 16:38
对于Cache不是很清楚其操作,因为看到很多一致性的问题。
现在要做PCI卡的DMA操作,那么要注意这个问题吗?
看了可以用cacheDmaMalloc()来分配一段不可缓存的空间,这时是不是要先用一下
sysMmuMapAdd(..VM_STATE_CACHEABLE_NOT..)啊?
之后还要使用cacheFlush( ),cacheInvalidate()操作吗?
=========== D =========== R =========== I =========== V =========== E ---------抵制日货-------
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-11 21:06
cacheDmaMalloc()函数是从系统空间中分配空间的,他分配的空间已经实现noncache了;
sysMmuMapAdd表示将别的空间(非系统空间)添加到MMU列表中。这是两个概念。
你如果要使用DMA操作,你可以在系统保留空间进行,将这个空间设置为noncache就行了。
有了驱动,人才有了力量。
myswin
驱动小牛
驱动小牛
  • 注册日期2003-10-13
  • 最后登录2005-11-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-14 09:56
我用cacheDmaMalloc()分配的空间老是会page fault,加上sysMmuMapAdd这个就没问题了~~~~
=========== D =========== R =========== I =========== V =========== E ---------抵制日货-------
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-14 21:20
你如果要使用DMA操作,你可以在系统保留空间进行,将这个空间设置为noncache就行了。我就用这种方法。

有了驱动,人才有了力量。
游客

返回顶部