阅读:3098回复:30
pci基地址是什么类型的地址,答对有10分送上
有谁知道pci板子的pci基地址是什么类型的地址,答对有10分送上。
|
|
最新喜欢:flying
|
沙发#
发布于:2003-04-09 15:28
你描述的不规范,反而不好回答。你把相关的英文写出来,我们还比较清楚你想知道什么。
|
|
板凳#
发布于:2003-04-09 16:01
其实我想知道的是 pci板子的pci基地址是什末类型的地址.例如我的
板子的pci基地址是0xd800,0000 .因为win2000的地址类型不外呼 虚拟地址,线性地址,物理地址,所谓的pci地址空间的板子的pci基地址到底属于这里面的那一种. |
|
|
地板#
发布于:2003-04-09 17:19
你说的是操作系统自动分配的还是配置芯片里你写入的?
|
|
地下室#
发布于:2003-04-09 18:23
是虚拟地址,
从PCI配置寄存器中取得的是该PCI卡向OS映射过去的虚拟地址! |
|
5楼#
发布于:2003-04-10 09:24
此地址bios在加电自检时分配的,不是自己写的.
如果,此地址是虚拟地址,那嬷如果我使用ddk编写驱动,在 startdevice使用stack->parameters.startdevice.ResourceAllocateTranlated获取该地址 后,就不用进一步转化为虚拟地址,而可以使用WRITE_REGISTER_UCHAR()直接向该地址空间写数据了.是这样吗? |
|
|
6楼#
发布于:2003-04-11 11:10
配置寄存器的内容绝对是物理地址.
|
|
|
7楼#
发布于:2003-04-11 11:44
有谁知道pci板子的pci基地址是什么类型的地址,答对有10分送上。 如果我答对了,我就成笨...。还是自己再看看书,要说清你的问题可以写半本书。 |
|
8楼#
发布于:2003-04-11 14:18
我现在已知道是物理地址,可惜分数已经给过,无法给松涛分了。
在此谢谢各位的支持。 |
|
|
9楼#
发布于:2003-04-13 12:13
我现在已知道是物理地址,可惜分数已经给过,无法给松涛分了。 如果你这样理解,说明你还没完全懂。 |
|
10楼#
发布于:2003-04-16 10:13
[quote] 我现在已知道是物理地址,可惜分数已经给过,无法给松涛分了。 如果你这样理解,说明你还没完全懂。 [/quote] 难道还有别的什么玄机吗?至少我从来没有遇到过. |
|
|
11楼#
发布于:2003-04-16 21:31
[quote] 我现在已知道是物理地址,可惜分数已经给过,无法给松涛分了。 如果你这样理解,说明你还没完全懂。 [/quote] 我只能理解到这一步,我可是查了很多书而不得其解.请 x_ray不要吝啬笔墨,赐教一下!thanks! |
|
|
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。 在这种硬包软,软包硬的系统中用逻辑地址可能更合适,如果你能宽展物理地址的概念当然也可以。 |
|
13楼#
发布于:2003-04-17 12:22
你问题中的“pci基地址”可以有几种理解 x_ray你上面说的我知道,这个地址有pnp管理器分配.但是我不认同 你将其称为逻辑地址,programing the wdm一书中,逻辑地址即为 总线地址,是通过映射寄存器映射的物理地址.当然我对总线地址 的概念还没有理解. |
|
|
14楼#
发布于:2003-04-17 12:27
你问题中的“pci基地址”可以有几种理解 我的感觉是要么我没有完全明白你的意思,要么就是你自己概念错误. PCI是PNP这点毫无疑问,PNP是在BIOS或操作系统启动时分配的.启动以后绝对不会像内存页一样随时可能被释放或改变映射关系.PCI基地址寄存器的内容就是实实在在的物理地址,是硬件可以直接使用的地址,至于逻辑地址,一般的概念就是用户可直接使用的地址,保护模式下的系统的逻辑地址和实际物理地址之间是有映射关系的,驱动程序里可以得到对应关系. 再说的明白点,“例如我的板子的pci基地址是0xd800,0000”,这句话应当理解为从PCI配置寄存器里得到的PCI基地址寄存器的内容是0xd800,0000.那么这快板卡实际的物理地址就是他,但在保护模式下你是不能直接使用的,你需要使用驱动程序获得相应的逻辑地址,这个逻辑地址当然就不会凑巧是0xd800,0000. |
|
|
15楼#
发布于:2003-04-17 13:23
[quote]你问题中的“pci基地址”可以有几种理解 我的感觉是要么我没有完全明白你的意思,要么就是你自己概念错误. PCI是PNP这点毫无疑问,PNP是在BIOS或操作系统启动时分配的.启动以后绝对不会像内存页一样随时可能被释放或改变映射关系.PCI基地址寄存器的内容就是实实在在的物理地址,是硬件可以直接使用的地址,至于逻辑地址,一般的概念就是用户可直接使用的地址,保护模式下的系统的逻辑地址和实际物理地址之间是有映射关系的,驱动程序里可以得到对应关系. 再说的明白点,“例如我的板子的pci基地址是0xd800,0000”,这句话应当理解为从PCI配置寄存器里得到的PCI基地址寄存器的内容是0xd800,0000.那么这快板卡实际的物理地址就是他,但在保护模式下你是不能直接使用的,你需要使用驱动程序获得相应的逻辑地址,这个逻辑地址当然就不会凑巧是0xd800,0000. [/quote] 你不仅对PCI理解片面,而且对PnP的理解也是片面的。如果你编驱动,那么一定不知道DEVICEENTRY和ADDDEVICE的区别。 |
|
16楼#
发布于:2003-04-17 14:17
我来说两句,逻辑地址有两个理解,一个是用户虚拟地址,一个是
总线地址,两个不是一个概念。所以逻辑地址这个概念应慎用。 再者,pci板卡的物理地址分配,启动时由bios实现,但我记得win2000下pnp管理器可以根据资源情况再行分配。 再次谢谢各位的支持!!!!!! |
|
|
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] |
|
|
18楼#
发布于:2003-04-17 20:24
再问一下,《programing the wdm》一书中提到将不连续的物理
地址映射为连续的总线地址,到底什末是总线地址,别的书中没有 提到这个概念。谢谢各位的支持!!!! |
|
|
19楼#
发布于:2003-04-17 20:56
再问一下,《programing the wdm》一书中提到将不连续的物理 如果是这样,那么所谓总线地址的概念似乎就接近虚拟地址了. |
|
|
上一页
下一页