fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:3100回复:30

pci基地址是什么类型的地址,答对有10分送上

楼主#
更多 发布于:2003-04-09 09:47
有谁知道pci板子的pci基地址是什么类型的地址,答对有10分送上。

最新喜欢:

flyingflying
有了驱动,人才有了力量。
mustang
驱动小牛
驱动小牛
  • 注册日期2002-05-17
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-09 15:28
你描述的不规范,反而不好回答。你把相关的英文写出来,我们还比较清楚你想知道什么。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-09 16:01
其实我想知道的是 pci板子的pci基地址是什末类型的地址.例如我的
板子的pci基地址是0xd800,0000 .因为win2000的地址类型不外呼
虚拟地址,线性地址,物理地址,所谓的pci地址空间的板子的pci基地址到底属于这里面的那一种.
有了驱动,人才有了力量。
mustang
驱动小牛
驱动小牛
  • 注册日期2002-05-17
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-04-09 17:19
你说的是操作系统自动分配的还是配置芯片里你写入的?
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-04-09 18:23
是虚拟地址,
从PCI配置寄存器中取得的是该PCI卡向OS映射过去的虚拟地址!
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-04-10 09:24
  此地址bios在加电自检时分配的,不是自己写的.
  如果,此地址是虚拟地址,那嬷如果我使用ddk编写驱动,在
startdevice使用stack->parameters.startdevice.ResourceAllocateTranlated获取该地址
后,就不用进一步转化为虚拟地址,而可以使用WRITE_REGISTER_UCHAR()直接向该地址空间写数据了.是这样吗?
有了驱动,人才有了力量。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-04-11 11:10
配置寄存器的内容绝对是物理地址.
兄弟们,给点分吧
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-04-11 11:44
有谁知道pci板子的pci基地址是什么类型的地址,答对有10分送上。


如果我答对了,我就成笨...。还是自己再看看书,要说清你的问题可以写半本书。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-04-11 14:18
  我现在已知道是物理地址,可惜分数已经给过,无法给松涛分了。
在此谢谢各位的支持。  
有了驱动,人才有了力量。
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-04-13 12:13
 我现在已知道是物理地址,可惜分数已经给过,无法给松涛分了。
在此谢谢各位的支持。  


如果你这样理解,说明你还没完全懂。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-04-16 10:13
[quote]  我现在已知道是物理地址,可惜分数已经给过,无法给松涛分了。
在此谢谢各位的支持。  


如果你这样理解,说明你还没完全懂。 [/quote]
难道还有别的什么玄机吗?至少我从来没有遇到过.
兄弟们,给点分吧
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-04-16 21:31
[quote]  我现在已知道是物理地址,可惜分数已经给过,无法给松涛分了。
在此谢谢各位的支持。  


如果你这样理解,说明你还没完全懂。 [/quote]
我只能理解到这一步,我可是查了很多书而不得其解.请
x_ray不要吝啬笔墨,赐教一下!thanks!
有了驱动,人才有了力量。
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-04-17 11:54
你问题中的“pci基地址”可以有几种理解
1指pci配置寄存器的基地址
2指pci配置寄存器的设备地址寄存器的地址
3指pci设备的基地址
从上面的问答看出你问的是pci设备的基地址。如果你把他看成不变的物理地址“例如我的板子的pci基地址是0xd800,0000”那么你就错了。pci设备的基地址是由pci配置寄存器的设备地址寄存器的内容决定;pci配置寄存器的设备地址寄存器的内容由OS的PnP管理器动态分配,所以在实际系统中你的pci基地址不是0xd800,0000。
在这种硬包软,软包硬的系统中用逻辑地址可能更合适,如果你能宽展物理地址的概念当然也可以。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-04-17 12:22
你问题中的“pci基地址”可以有几种理解
1指pci配置寄存器的基地址
2指pci配置寄存器的设备地址寄存器的地址
3指pci设备的基地址
从上面的问答看出你问的是pci设备的基地址。如果你把他看成不变的物理地址“例如我的板子的pci基地址是0xd800,0000”那么你就错了。pci设备的基地址是由pci配置寄存器的设备地址寄存器的内容决定;pci配置寄存器的设备地址寄存器的内容由OS的PnP管理器动态分配,所以在实际系统中你的pci基地址不是0xd800,0000。
在这种硬包软,软包硬的系统中用逻辑地址可能更合适,如果你能宽展物理地址的概念当然也可以。

x_ray你上面说的我知道,这个地址有pnp管理器分配.但是我不认同
你将其称为逻辑地址,programing the wdm一书中,逻辑地址即为
总线地址,是通过映射寄存器映射的物理地址.当然我对总线地址
的概念还没有理解.



有了驱动,人才有了力量。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-04-17 12:27
你问题中的“pci基地址”可以有几种理解
1指pci配置寄存器的基地址
2指pci配置寄存器的设备地址寄存器的地址
3指pci设备的基地址
从上面的问答看出你问的是pci设备的基地址。如果你把他看成不变的物理地址“例如我的板子的pci基地址是0xd800,0000”那么你就错了。pci设备的基地址是由pci配置寄存器的设备地址寄存器的内容决定;pci配置寄存器的设备地址寄存器的内容由OS的PnP管理器动态分配,所以在实际系统中你的pci基地址不是0xd800,0000。
在这种硬包软,软包硬的系统中用逻辑地址可能更合适,如果你能宽展物理地址的概念当然也可以。

我的感觉是要么我没有完全明白你的意思,要么就是你自己概念错误.
PCI是PNP这点毫无疑问,PNP是在BIOS或操作系统启动时分配的.启动以后绝对不会像内存页一样随时可能被释放或改变映射关系.PCI基地址寄存器的内容就是实实在在的物理地址,是硬件可以直接使用的地址,至于逻辑地址,一般的概念就是用户可直接使用的地址,保护模式下的系统的逻辑地址和实际物理地址之间是有映射关系的,驱动程序里可以得到对应关系.
再说的明白点,“例如我的板子的pci基地址是0xd800,0000”,这句话应当理解为从PCI配置寄存器里得到的PCI基地址寄存器的内容是0xd800,0000.那么这快板卡实际的物理地址就是他,但在保护模式下你是不能直接使用的,你需要使用驱动程序获得相应的逻辑地址,这个逻辑地址当然就不会凑巧是0xd800,0000.
兄弟们,给点分吧
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-04-17 13:23
[quote]你问题中的“pci基地址”可以有几种理解
1指pci配置寄存器的基地址
2指pci配置寄存器的设备地址寄存器的地址
3指pci设备的基地址
从上面的问答看出你问的是pci设备的基地址。如果你把他看成不变的物理地址“例如我的板子的pci基地址是0xd800,0000”那么你就错了。pci设备的基地址是由pci配置寄存器的设备地址寄存器的内容决定;pci配置寄存器的设备地址寄存器的内容由OS的PnP管理器动态分配,所以在实际系统中你的pci基地址不是0xd800,0000。
在这种硬包软,软包硬的系统中用逻辑地址可能更合适,如果你能宽展物理地址的概念当然也可以。

我的感觉是要么我没有完全明白你的意思,要么就是你自己概念错误.
PCI是PNP这点毫无疑问,PNP是在BIOS或操作系统启动时分配的.启动以后绝对不会像内存页一样随时可能被释放或改变映射关系.PCI基地址寄存器的内容就是实实在在的物理地址,是硬件可以直接使用的地址,至于逻辑地址,一般的概念就是用户可直接使用的地址,保护模式下的系统的逻辑地址和实际物理地址之间是有映射关系的,驱动程序里可以得到对应关系.
再说的明白点,“例如我的板子的pci基地址是0xd800,0000”,这句话应当理解为从PCI配置寄存器里得到的PCI基地址寄存器的内容是0xd800,0000.那么这快板卡实际的物理地址就是他,但在保护模式下你是不能直接使用的,你需要使用驱动程序获得相应的逻辑地址,这个逻辑地址当然就不会凑巧是0xd800,0000. [/quote]

你不仅对PCI理解片面,而且对PnP的理解也是片面的。如果你编驱动,那么一定不知道DEVICEENTRY和ADDDEVICE的区别。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-04-17 14:17
我来说两句,逻辑地址有两个理解,一个是用户虚拟地址,一个是
总线地址,两个不是一个概念。所以逻辑地址这个概念应慎用。
再者,pci板卡的物理地址分配,启动时由bios实现,但我记得win2000下pnp管理器可以根据资源情况再行分配。
再次谢谢各位的支持!!!!!!
有了驱动,人才有了力量。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-04-17 19:47
你不仅对PCI理解片面,而且对PnP的理解也是片面的。如果你编驱动,那么一定不知道DEVICEENTRY和ADDDEVICE的区别。

年轻人是不是有点不知天高地厚了?是不是写了几个驱动就觉得自己了不起了呢?口出狂言只能让人觉得你无知,出言不逊也只能让人怀疑你的个人素质.
如果想讨论技术,我这里非常欢迎,但希望保持谦虚态度.
我的工作范围包含从芯片IP到具体的API编写的绝大多数内容,如果需要证实我的观点,可以从很多的角度说明.
首先,最基本的从芯片设计角度谈,PCI的IP是怎么写的,如果你写过,那么上面的争论就是多余的.
其次,PCI总线是独立于CPU和操作系统的总线系统,也就是说无论你是用什么样的CPU,什么样的操作系统,PCI都是可以使用的,那么很多CPU是不存在保护模式的,很多操作系统是没有驱动程序的,自然也没有WDM,更谈不上DeviceEntry或AddDevice.那么配置寄存器里到底写的是什么呢?
再次,就算我们讨论win2000,IA体系,用WDM,当然就有DeviceEntry和AddDevice.那么也无非存在两种情况,一种系统分配了资源,可是这时配置寄存器里还是物理地址,另一种当然是没有分配资源,这时配置寄存器里是无效的0,最直接的证明就是直接使用物理地址的硬件访问,硬件访问是不会使用虚拟地址的.至于具体的驱动程序,显然是调用了AddDevice后系统才分配资源的,但很可惜,PCI配置寄存器是系统写的,你自己不能随便写,驱动里你可以得到分配的物理地址(其实就是从PCI基址寄存器里得到的),然后可以映射成虚拟地址,用户态程序可以用这个地址访问,但是配置寄存器里绝对不会是这个地址.
只有一种可能我们的观点不冲突,那就是你所说的逻辑地址就是总线地址,也就是我们通常概念的物理地址.

[编辑 -  4/17/03 by  jst7792]
兄弟们,给点分吧
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-04-17 20:24
再问一下,《programing the wdm》一书中提到将不连续的物理
地址映射为连续的总线地址,到底什末是总线地址,别的书中没有
提到这个概念。谢谢各位的支持!!!!
有了驱动,人才有了力量。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-04-17 20:56
再问一下,《programing the wdm》一书中提到将不连续的物理
地址映射为连续的总线地址,到底什末是总线地址,别的书中没有
提到这个概念。谢谢各位的支持!!!!

如果是这样,那么所谓总线地址的概念似乎就接近虚拟地址了.
兄弟们,给点分吧
上一页
游客

返回顶部