brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1609回复:4

ds中如何取得pci配置空间基址?紧急!(20分)

楼主#
更多 发布于:2002-06-10 10:58
我在ds中使用KPciConfiguration类,在构造函数中实例化。
调用KPciConfiguration::WriteBaseAddress(0,0xFFFFFFFF);
再调用KPciConfiguration::ReadBaseAddress(0);
读出的值与0xFFFC相与,可是得到的地址跟计算机管理中显示的资源不同。为什么?

另外,是不是一般pci设备驱动只对第一个配置空间基址操作即可(共6个)?

最新喜欢:

Ice_BinIce_Bi...
打一枪……换个地方……再打一枪……
James.Ji
驱动老牛
驱动老牛
  • 注册日期2001-09-17
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分-9分
  • 威望-8点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-10 17:12
1、我在ds中使用KPciConfiguration类,在构造函数中实例化。
调用KPciConfiguration::WriteBaseAddress(0,0xFFFFFFFF);
再调用KPciConfiguration::ReadBaseAddress(0);
读出的值与0xFFFC相与,可是得到的地址跟计算机管理中显示的资源不同。为什么?

  什么资源?内存地址范围?

2、另外,是不是一般pci设备驱动只对第一个配置空间基址操作即可(共6个)?

 一般是这样。看你板子的设计了。



车到山前必有路。 虽然有些土,却是我最有感触的一句话。
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-10 17:22
卡是映射在io空间的。在2000的系统资源中可以看到有两个io范围是分配到该设备的:e400~e43f;e800~e83f。
可是我在驱动中通过读取配置空间基址寄存器
(KPciConfiguration::WriteBaseAddress(0,0xFFFFFFFF);
KPciConfiguration::ReadBaseAddress(0);)然后与fffc相与,
得到的值是第0和第四个基址是ffc0;
还有第3基址得到一个内存映射地址ffffffc0.

????????
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-11 09:57
问题解决了,谢谢
打一枪……换个地方……再打一枪……
Dragon2008
驱动中牛
驱动中牛
  • 注册日期2002-04-01
  • 最后登录2006-03-13
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-11 12:22
恭喜恭喜!
一来为你问题的解决;二来为你也小升一级。
我姓龙,我属龙,我叫龙。。。
游客

返回顶部