shiplou
驱动牛犊
驱动牛犊
  • 注册日期2007-01-09
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1507回复:5

DDK开发PCI读具体地址的问题

楼主#
更多 发布于:2007-01-19 17:46
  因配合硬件开发,用DDK写了个驱动框架。
Driver里面有DeviceIoControl等功能,另外还有一个Write功能(主要用RtlCopyMemory执行从ExAllocatePool分配的缓存读到systembuffer的功能)。
测试例子里面使用了WriteFile、ReadFile等函数,发现确实是读写进去了,但不知道具体的地址是什么地方去了。

请问:该如何读写具体的memory、IO等空间的值?能否在测试程序中发一个“读写某地址的值”,然后“返回该值”?
ruirui1
驱动牛犊
驱动牛犊
  • 注册日期2007-01-22
  • 最后登录2011-03-25
  • 粉丝0
  • 关注0
  • 积分287分
  • 威望100点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-01-25 12:57
在应用程序里如果是writefile,在buf的第一个低位字节写你的地址,高位写你的数据,在驱动程序里用outb()写到具体的空间里就行了,建议你看看武安河的书,应该是这样,我也是新手
shiplou
驱动牛犊
驱动牛犊
  • 注册日期2007-01-09
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-29 09:40
武安河的是DriverStudio。在DDK里面如何读写基地址为base0、base1等的偏移地址?他们是如何映射的?
另外我使用DMA(外部单独的硬件)搬数据,配给DMA的是物理地址,如何将DMA搬数据到我PC测试程序中malloc随机分配的内存中?
Turbo8332467
驱动牛犊
驱动牛犊
  • 注册日期2004-05-19
  • 最后登录2007-01-30
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-01-30 22:49
它不是有Memory1/2,IO1/2等等吗,分别对应你的Memory空间和IO空间,比如你就用Memory2.outd(address,data)等就可以了。
wwm_820924
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望169点
  • 贡献值1点
  • 好评度22点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-03-14 14:35
DDK开发的,直接WRITE_REGISTER_ULONG就行,或者内存读写复制都行,查查DDK文档。
例:WRITE_REGISTER_ULONG(pdx->kvMembase[2] + offset,value)
jackywangwen
驱动牛犊
驱动牛犊
  • 注册日期2006-03-14
  • 最后登录2008-04-09
  • 粉丝0
  • 关注0
  • 积分120分
  • 威望13点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-04-05 19:49
赞同楼上兄弟的观点
游客

返回顶部