pci device(pci device驱动下载)快来看
1.1、PCI嗅探扫描从按下PC的电源按钮开始,BIOS就接管系统控制权开始工作,它会先进行一些内存和设备的初始化工作,包括PCI设备。下面开始
1.1、PCI嗅探扫描从按下PC的电源按钮开始,BIOS就接管系统控制权开始工作,它会先进行一些内存和设备的初始化工作,包括PCI设备下面开始分析,BIOS中,PCIe设备是如何被找到以及初始化的PCI设备的扫描是基于深度优先搜索算法(DFS:Depth First Search),也就是说,下级分支最多的PCI桥将最先完成其子设备的扫描。
下面以图片来具体说明,BIOS是如何一步步完成PCI 设备扫描的第一步:PCI Host 主桥扫描Bus 0上的设备(在一个处理器系统中,一般将与HOST主桥直接相连的PCI总线被命名为PCI Bus 0),系统首先会忽略Bus 0上的D1,D2等不会挂接PCI桥的设备,主桥发现Bridge 1后,将Bridge1下面的PCI Bus定为 Bus 1,系统将初始化Bridge 1的配置空间,并将该桥的Primary Bus Number 和 Secondary Bus Number寄存器分别设置成0和1,以表明Bridge1的上游总线是0,下游总线是1,由于还无法确定Bridge1下挂载设备的具体情况,系统先暂时将Subordinate Bus Number设为0xFF。
如图 1.1所示:
图 1.1 PCIE扫描第一步**第二步:系统开始扫描Bus 1,将会发现Bridge 2系统将Bridge 2下面的PCI Bus定为Bus2,并将该桥的Primary Bus Number 和 Secondary Bus Number寄存器分别设置成1和2,和上一步一样暂时把Bridge 2的Subordinate Bus Number设为0xFF。
如图 1.2所示:
** 图 1.2 PCIE扫描第二步**第三步:系统继续扫描Bus 2,将会发现Bridge 4系统将Bridge 4下面的PCI Bus定为Bus 3,并将该桥的Primary Bus Number 和 Secondary Bus Number寄存器分别设置成2和3,此后系统继续扫描后发现Bus 3下面已经没有任何Bridge了,意味着该PCI总线下已经没有任何挂载下游总线了,因此Bridge 4的Subordinate Bus Number的值已经可以确定为3了。
如图 1.3所示:
** 图 1.3 PCIE扫描第三步**第四步:完成Bus 3的扫描后,系统返回到Bus 2继续扫描,发现Bus 2下面已经没有其他Bridge了此时Bridge 2的Subordinate Bus Number的值也已经可以确定为3了。
如图 1.4所示:
** 图 1.4 PCIE扫描第四步**第五步:完成Bus 2的扫描后,系统返回到Bus1继续扫描,会发现Bridge 3,系统将Bridge 3下面的PCI Bus定为Bus 4并将Bridge 4的Primary Bus Number 和 Secondary Bus Number寄存器分别设置成1和4,此后系统继续扫描后发现Bus 4下面已经没有任何Bridge了,意味着该PCI总线下已经没有挂载任何下游总线了,因此Bridge 3的Subordinate Bus Number的值已经可以确定为4了。
如图 1.5所示:
** 图 1.5 PCIE扫描第五步**第六步:完成Bus 4的扫描后,系统返回到Bus 1继续扫描, 发现Bus 1下面已经没有其他Bridge了此时Bridge 1的Subordinate Bus Number的值已经可以确定为4,系统返回Bus 0继续扫描(Bus 0下如果有其他它Bridge,将重复上述的步骤进行扫描)。
至此,本例中的整个PCI的设备扫描已经完成了最终的设备和总线的扫描结果如图 1.6所示:
** 图 1.6 PCIE扫描第六步**一般来说,可以通过两个寄存器来访问PCI的配置空间(寄存器CONFIG_ADDRESS与CONFIG_DATA),在x86体系下,这两个寄存器分别对应0xCF8和0xCFC端口,对配置空间的访问都是通过对这两个寄存器的读写来实现先。
CONFIG_ADDRESS寄存器的具体位组成如图 1.7所示:
** 图 1.7 x86配置寄存器**Bus Number : 总线号(8 bit),范围0--255Device Number: 设备号(5 bit),范围0--31Function Number: 功能号(3 bit),范围0--7。
Register Number: 寄存器号(6 bit),范围0--63(配置空间一共256个字节,分割成64个4字节的寄存器,从0--63编号)每个PCI设备可根据上图所示的四个信息:Bus Number, Device Number, Function Number,Register Number来进行具体设备的定位并对其配置空间访问。
当访问PCI设备的配置空间时,先根据以上格式设置CONFIG_ADDRESS寄存器,然后再读取CONFIG_DATA寄存器即可得到相应的配置空间寄存器的值通过以上这些步骤,BIOS就完成了所有PCI设备的扫描,并且为每个设备分配好了系统资源。
1.2、PCI空间分配PCI设备的三种地址空间:配置空间:256byteI/O空间Memory空间注意:1>系统初始化时会给每个PCI设备初始化配置空间寄存器;2>UEFI提供了PCI_IO_Protocol操作PCI设备,他可以读写PCI设备配置空间,I/O空间等;
3>PCI设备中的I/O空间,Memory空间被划分为6个互不重叠的子空间,配置空间中的BaseAddress0~5表示上述6个子空间的基地址。2、重定向3、USB4、显卡5、硬盘
- 标签:
- 编辑:李松一
- 相关文章
-
特价一折机票查询(机票查询预订特价)怎么可以错过
熙熙攘攘的五一假期收官,记者从携程等线上平台了解到,五一假期后两周,国内机票价格大幅下降,不少用户开始规划错峰出游。…
-
万茜结婚了吗(万茜老公徐洪涛结婚照)学会了吗
1月17日,有八卦媒体在社交平台上晒出知名女演员万茜现身机场的画面,不仅如此,万茜还和家人一起吃饭,一家人相处的十分愉快,她的老公和…
- 华为c8813d(华为c8817e)新鲜出炉
- 华为c8813d(华为c8817e)新鲜出炉
- 中信建投同花顺(中信建投同花顺APP)速看
- 5.29是什么日子(农历5.29是什么日子)一看就会
- 5.29是什么日子(农历5.29是什么日子)速看