阅读:1097回复:3
求助!PCI初始化的问题(给分)
我知道PCI有三种空间:配置空间,I/O空间和内存空间,系统在查询到PCI插槽上有一个PCI设备,并且VendorID和DeviceID都符合的时候,是通过读取相应空间的基址寄存器来分配资源的吧,至于I/O空间和内存空间的资源分配我可以理解,可是配置空间是什么时候分配,以及怎样分配的呢?系统在查询到PCI设备之后,是怎么知道它的配置空间在哪里呢?
因为按我的理解,系统首先要知道配置空间的起始地址,然后才能读配置寄存器的吧,可是系统在刚刚查询到PCI设备的时候还没有分配资源,它又从什么地址去读PCI协议中定义的那64Byte的寄存器呢?但是从另一个方面来说,系统还没读取PCI协议中定义的配置寄存器(主要是基址寄存器),那它怎么来分配资源(也就是配置空间的start地址)?对了,PCI设备的VendorID和DeviceID也是属于PCI协议定义的那64Byte寄存器中的,那系统又是怎么读到呢?因为在刚开始的时候,系统还没有为配置空间分配地址啊。 是不是我理解有错误?或者,那64Byte寄存器不用系统分配地址,可以直接读的? 另外,我经常看到有PCI BIOS一说,那请问一下,PCI BIOS是在PC机上的,跟主板BIOS差不多的;还是在PCI设备上,需要在设计PCI卡时自行设计的?那64Byte寄存器又是不是由PCI BIOS来读取的呢? |
|
沙发#
发布于:2005-05-04 22:21
配置空间就是指配置寄存器了吧(256B),,设计硬件的时候实现的。。系统配置软件读取它相应寄存器内容决定分配IO或者内存资源的喽。。。。
总之一句吧“配置空间是设备硬件自己拥有的,不是系统分配的”你的所有问题就解决了。。。 PCI BIOS在系统上的了。。由它完成对PCI配置空间的读写。。不用自己设计的了。。 |
|
|
板凳#
发布于:2005-05-05 14:57
谢谢,已给分
|
|
地板#
发布于:2005-05-24 12:03
PCI BIOS是属于设备的,但不是每个设备都必须实现的
|
|