阅读:2079回复:10
wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or uncache
wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or uncache
我现在遇到一个问题在我的usb device driver 里,usb mass storage class 给PDD 层的指针是 什么类型的,如 cache or uncache。 我怎么将cache的指针转化成uncache. |
|
沙发#
发布于:2007-08-04 07:30
Re:wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or u
1.WINCE的地址是这样划分的:0x80000000到0xa0000000是CACHED. 0xa0000000到0xc0000000是UNCACHED. MDD传下来的地址应该是CACHED,一般不需要将其转化成UNCACHED的地址.如果使用CPU给设备填数据,直接使用这些地址就行了.如果使用DMA,可以先分配或者预留一块物理内存,把数据拷贝到那个内在中去,再把地址传给DMA |
|
|
板凳#
发布于:2007-08-06 11:56
Re:wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or u
非常感谢班主的释惑我现在要用带有scatter /gather 的DMA所以我要把MDD 层传下来的指针转换成uncache得指针 我现在已经将其传下来的指针转化为物理指针,可是有时候,MDD层得指针看到的内容是错误的。 所以我想首先要得到uncache pointer 然后得到物理地址phycical |
|
地板#
发布于:2007-08-06 11:57
Re:wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or u
非常感谢班主的释惑我现在要用带有scatter /gather 的DMA所以我要把MDD 层传下来的指针转换成uncache得指针 我现在已经将其传下来的指针转化为物理指针,可是有时候,MDD层得指针看到的内容是错误的。 所以我想首先要得到uncache pointer 然后得到物理地址phycical |
|
地下室#
发布于:2007-08-06 11:58
非常感谢班主的释惑
我现在要用带有scatter /gather 的DMA所以我要把MDD 层传下来的指针转换成uncache得指针 我现在已经将其传下来的指针转化为物理指针,可是有时候,MDD层得指针看到的内容是错误的。 所以我想首先要得到uncache pointer 然后得到物理地址phycical |
|
5楼#
发布于:2007-08-06 12:42
uncache的地址为cache地址+0x20000000
0x80000000~0xa0000000为CACHED. 0xa0000000~0xc0000000为UNCACHED. cache的地址可以在oemaddresstable找到,加上0x20000000就是uncache的地址了。如果要用到虚拟地址,就用uncache的地址做virtual copy |
|
6楼#
发布于:2007-08-06 14:03
回 1楼(microsun)的帖子
非常感谢班主的释惑我现在要用带有scatter /gather 的DMA所以我要把MDD 层传下来的指针转换成uncache得指针 我现在已经将其传下来的指针转化为物理指针,可是有时候,MDD层得指针看到的内容是错误的。 所以我想首先要得到uncache pointer 然后得到物理地址phycical |
|
7楼#
发布于:2007-08-07 11:14
我怎么将cache的指针转化成uncache.
|
|
8楼#
发布于:2007-08-07 19:33
Re:wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or u
不需要你那样做,只需要把地址传给DMA之前调用CacheFlushRange把你那块地址的CACHED内容刷新到内存中就行了. |
|
|
9楼#
发布于:2007-08-09 13:08
Re:wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or u
谢谢版主:) |
|
10楼#
发布于:2007-11-25 23:55
学习一下
|
|
|