wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
阅读:1982回复:10

wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or uncache

楼主#
更多 发布于:2007-08-03 09:52
wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or uncache
我现在遇到一个问题在我的usb device driver 里,usb mass storage class 给PDD 层的指针是
什么类型的,如 cache or uncache。
我怎么将cache的指针转化成uncache.
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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
学海无涯
wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-06 11:56
Re:wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or u
非常感谢班主的释惑
我现在要用带有scatter /gather 的DMA所以我要把MDD 层传下来的指针转换成uncache得指针
我现在已经将其传下来的指针转化为物理指针,可是有时候,MDD层得指针看到的内容是错误的。
所以我想首先要得到uncache pointer 然后得到物理地址phycical
wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-06 11:57
Re:wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or u
非常感谢班主的释惑
我现在要用带有scatter /gather 的DMA所以我要把MDD 层传下来的指针转换成uncache得指针
我现在已经将其传下来的指针转化为物理指针,可是有时候,MDD层得指针看到的内容是错误的。
所以我想首先要得到uncache pointer 然后得到物理地址phycical
wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-08-06 11:58
非常感谢班主的释惑
我现在要用带有scatter /gather 的DMA所以我要把MDD 层传下来的指针转换成uncache得指针
我现在已经将其传下来的指针转化为物理指针,可是有时候,MDD层得指针看到的内容是错误的。
所以我想首先要得到uncache pointer 然后得到物理地址phycical
buaadallas
驱动牛犊
驱动牛犊
  • 注册日期2005-03-16
  • 最后登录2007-10-18
  • 粉丝0
  • 关注0
  • 积分470分
  • 威望47点
  • 贡献值0点
  • 好评度47点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-08-06 12:42
uncache的地址为cache地址+0x20000000
0x80000000~0xa0000000为CACHED.
0xa0000000~0xc0000000为UNCACHED.
cache的地址可以在oemaddresstable找到,加上0x20000000就是uncache的地址了。如果要用到虚拟地址,就用uncache的地址做virtual copy
wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-08-06 14:03
回 1楼(microsun)的帖子
非常感谢班主的释惑
我现在要用带有scatter /gather 的DMA所以我要把MDD 层传下来的指针转换成uncache得指针
我现在已经将其传下来的指针转化为物理指针,可是有时候,MDD层得指针看到的内容是错误的。
所以我想首先要得到uncache pointer 然后得到物理地址phycical
wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-08-07 11:14
我怎么将cache的指针转化成uncache.
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-08-07 19:33
Re:wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or u
不需要你那样做,
只需要把地址传给DMA之前调用CacheFlushRange把你那块地址的CACHED内容刷新到内存中就行了.
学海无涯
wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-08-09 13:08
Re:wince 5.0 里。我怎么确定系统给驱动的指针是什么类型的如cache or u
谢谢版主:)
frostofmourne
驱动牛犊
驱动牛犊
  • 注册日期2007-11-25
  • 最后登录2007-12-25
  • 粉丝0
  • 关注0
  • 积分410分
  • 威望42点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-11-25 23:55
学习一下
march forth alone through the ashes
游客

返回顶部