【我所认知的BIOS】->PCI enumerate

本文详细介绍了PCI bridge的工作原理,包括PCI总线的Type0和Type1访问方式,以及PCI枚举过程中bus number的分配规则。在枚举过程中,遵循所有位于PCI-PCI bridge后的总线必须在secondary bus number和subordinate bus number之间的原则。通过具体的步骤阐述了PCI bus number的初始化过程,为理解PCI系统提供了清晰的指导。
摘要由CSDN通过智能技术生成

PCI enumerate

By Lightseed   

10/06/2010 

 

这篇文章本是很久以前写的,最近感觉比较懒惰今天才贴出来。近两年开始EFI越来越流行了,可以说逐渐有颠覆legacy bios的趋势。处于对知识的渴望和追求我也最近对EFI有了一些简单的了解,我打算在后续的文章中做一个关于EFI的专题,基于EDK来写blog应该不错。毕竟它是开源的嘛,如果以AMI的EFI来写文章我估计可能会涉及到商业机密的问题。希望能像网上那个《linux的那些事儿》那样做成一个一个的小专题。也希望如果有兴趣的朋友或者BIOSER能够和我联系,咱们一起研究哈。期待您的加入。。。先说说我的打算,PCI,IDE等这些比较重要的东西都各自做一个小专题。至于其他的嘛暂时还没想到。形式以code为例子直接加注或者说明。

   

另外之前有关于ACPI的文章,但是看了看,真的觉得没啥好说的,都是架构上的一些东西。估计要说的话,肯能也就要结合到实际的代码,我再斟酌斟酌用什么形式来表达出来会比较好。

1PCI bridge的工作原理

PCI的架构中,引入了PCI bridge的概念来扩展使用更多的PCI设备。其他的基本东西就不多讲了,开门见山先分析在PCI bridge处理总线上访问的原理。

1.1PCI总线的两种方式

PCI总线上有两种访问方式,分别是Type0Type1。且bridge会通过比对自己的secondary bus numbersubordinate bus number后做出后续的反应是type0还是type1的配置。

1.2详细说说type1

当总线上CPU发出了一个访问PCI的动作,(假设说CPU用的是type0的方式,经过bridge1后被其配置成了type1)那么PCI bridge会去做比对,这时就出现了三种情况:

①如果此总线序号不在bridgesecondary bus numbersubordinate bus number之间则忽略掉它。

②如果此总线序号与bridgesecondary bus number相同则将其转换成类型0 配置命令。

③如果此总线序号位于bridgesecondary bus numbersubordinate bus number之间则将它不作改变的传递到二级总线接口中。

总之就是通过这中方式找到PCI总线上的对应的PCI设备,然后访问之~

2PCI 在枚举过程

2.1PCIbus number必须遵循的一个规则

在我们当前的主板上面PCI to PCI bridge是基本上都会有的,整个PCI系统要能够正确地被解析访问到,PCIbus number必须遵循一个规则:

All PCI buses located behind a PCI-PCI bridge must reside between the seondary bus number and the subordinate bus number.

有了这个规则,那么不管是BIOS还是linux

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值