阅读:2449回复:3
VXWORKS请教一些Cache、DMA的问题
对于Cache不是很清楚其操作,因为看到很多一致性的问题。
现在要做PCI卡的DMA操作,那么要注意这个问题吗? 看了可以用cacheDmaMalloc()来分配一段不可缓存的空间,这时是不是要先用一下 sysMmuMapAdd(..VM_STATE_CACHEABLE_NOT..)啊? 之后还要使用cacheFlush( ),cacheInvalidate()操作吗? |
|
|
沙发#
发布于:2004-10-11 21:06
cacheDmaMalloc()函数是从系统空间中分配空间的,他分配的空间已经实现noncache了;
sysMmuMapAdd表示将别的空间(非系统空间)添加到MMU列表中。这是两个概念。 你如果要使用DMA操作,你可以在系统保留空间进行,将这个空间设置为noncache就行了。 |
|
|
板凳#
发布于:2004-10-14 09:56
我用cacheDmaMalloc()分配的空间老是会page fault,加上sysMmuMapAdd这个就没问题了~~~~
|
|
|
地板#
发布于:2004-10-14 21:20
你如果要使用DMA操作,你可以在系统保留空间进行,将这个空间设置为noncache就行了。我就用这种方法。
|
|
|