hear_rain
驱动牛犊
驱动牛犊
  • 注册日期2004-07-06
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1288回复:7

关于PCI板卡的memory读写

楼主#
更多 发布于:2004-07-22 10:15
我刚刚接触PCI的驱动,正在做WDM驱动,环境是Windows2K + Windows 2K DDK + DriverStudio3.1

在一块板子上测试,用DriverStudio生成WDM驱动,增加了一个KMemoryRange m_MemoryRange0。
在OnStartDevice里Initialize这个m_MemoryRange0,想测试通过m_MemoryRange0读写。
我不知道是不是我用得不对,感觉好像写不进去,不管怎么写,读出来的都是类似0xff这样的数据,比如
UCHAR data00 = 0x01;
m_MemoryRange0.outb(0x200, data00);
data00 = m_MemoryRange0.inb(0x200);
t <<"data00: "<<data00<<"n";
发现0x01根本没有写进去

请高手指点一下,多谢
CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-22 21:34
那个写的应该是你的内部的寄存器的值,你把01写到寄存器里面去了
答得好的话,请兄弟们加点分,那是对我的肯定
hear_rain
驱动牛犊
驱动牛犊
  • 注册日期2004-07-06
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-23 09:54
不好意思,内部寄存器是不能写的?
baby301
驱动牛犊
驱动牛犊
  • 注册日期2004-07-27
  • 最后登录2004-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-27 16:35
我在开发中遇到了的问题还不如你,我的程序在通过driver winzard自动生成后(生成了m_ioportrange0),什么程序都不写,也会出现ERROR opening device:return from creatfile这个错误,我只是想访问并口而已,你的程序既然通过了这一关,可否告诉我一下是如何解决的?
hear_rain
驱动牛犊
驱动牛犊
  • 注册日期2004-07-06
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-27 17:20
我没有遇到过你的问题。
是不是你的板子没有I/0 range?
baby301
驱动牛犊
驱动牛犊
  • 注册日期2004-07-27
  • 最后登录2004-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-27 17:33
能都用qq聊天
我想问你写问题,多谢大侠指教
我的qq:66267476
OpenCore
驱动牛犊
驱动牛犊
  • 注册日期2003-03-31
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-29 00:44
PCI 的 BAR0 是PCI配置寄存器空间一般不要对其进行写操作!
你EEPROM的配置所对应的空间应该是在后面的
如果EEPROM里配置了BAR0 & BAR1有效,
那么你配置的第一个Mem的Local Space应该是在BAR2,
也就是MemoryRange2..
你配置的第一个IO的Local Space 应该是在BAR3...
以此类推……
kucy_zhou@163.c
驱动牛犊
驱动牛犊
  • 注册日期2003-11-26
  • 最后登录2005-11-04
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-30 10:33
我也遇到了同样的问题:环境是Windows2K + Windows 2K DDK + DriverStudio3.1

在一块板子上测试,用DriverStudio生成WDM驱动,增加了一个KMemoryRange m_MemoryRange0(bar0)和KMemoryRange m_MemoryRange1(bar3)。
在OnStartDevice里Initialize这个m_MemoryRange0和m_MemoryRange1,对m_MemoryRange0能写进去,可是对m_MemoryRange1好像写不进去。
我不知道是不是我用得不对,程序:
m_MemoryRange0.outb(0x6c, 0x40000000);
m_MemoryRange1.outb(0x4c00, 0x140000);
m_MemoryRange1.outb(0x4000, 0x140000);
m_MemoryRange1.outb(0x8c00, 0x700);

发现0x700根本没有写进去

你们的解决了,能告诉我怎么回事么?

游客

返回顶部