- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LinuxKernel核心中文手冊PCI
Peripheral?Component?Interconnect?(?PCI?),好像它的名字暗示的一样,是描述如何通过一个结构化和可控制的方式把系统中的外设组件连接起来的一个标准。标准的?PCI?Local?Bus?规范描述了系统组件电气连接的方法和它们行为的方法。本章探讨Linux?核心如何初始化系统的?PCI?总线和设备。图?6.1?是一个?PCI?基础的系统的逻辑图。?PCI?总线和?PCI-PCI?桥(?bridge?)是系统组件联系在一起的粘合剂。?CUP?和?video?设备连在主要的?PCI?总线,?PCI?总线?0?。一个特殊的?PCI?设备,?PCI-PCI?桥把主总线连接到次?PCI?总线,?PCI?总线1?。按照?PCI?规范的术语,?PCI?总线?1?描述成为?PCI-PCI?桥的下游而?PCI?总线?0是桥的上游。连接在次?PCI?总线上的是系统的?SCSI?和以太网设备。物理上桥、次要PCI?总线和这两种设备可以在同一块?PCI?卡上。系统中的?PCI-ISA?桥支持老的、遗留的?ISA?设备,本图显示了一个超级?I/O?控制芯片,控制键盘、鼠标和软驱。6.1?PCI?Address?Space?(?PCI?地址空间)CPU?和?PCI?设备需要访问它们所共享的内存。这些内存让设备驱动程序控制这些PCI?设备并在它们之间传递信息。一般地共享的内存包括设备的控制和状态寄存器。这些寄存器用于控制设备和读取它的状态。例如:?PCI?SCSI?设备驱动程序可以读取?SCSI?设备的状态寄存器,判断它是否可以向?SCSI?磁盘写一块信息。或者它可以写入控制寄存器让它关闭的设备开始运行。CPU?的使用的系统内存可以用作这种共享内存,但是如果这样的话,每一次?PCI?设备访问内存,?CPU?都不得不停顿,等待?PCI?设备完成。对于内存的访问通常有限制,同一时间只能有一个系统组件允许访问。这会使得系统速度降低。允许系统的外部设备在一个不受控的方式下访问主内存也不是一个好主意。这会非常危险:一个恶意的设备会让系统非常不稳定。外部设备由它们自己的内存空间。?CPU?可以访问这些空间,但是设备对于系统内存的访问受到严格的控制,必须通过?DMA?(?Direct?Memory?Access?直接内存存取)通道ISA?设备可以访问两种地址空间:?ISA?I/O?(输入?/?输出)和?ISA?内存。?PCI?由三:?PCI?I/O?、?PCI?内存和?PCI?配置空间(?configuration?space?)。?CPU?可以访问所有的地址空间其中?PCI?I/O?和?PCI?内存地址空间由设备驱动程序使用而?PCI?配置空间由?Linux?心中的?PCI?初始化代码使用。?Alpha?AXP?处理器没有对于除了系统地址空间之外的地址空间的天生的访问模式。它需要使用支持芯片来访问象?PCI?配置空间这样的其他地址空间。它使用了一个地址空间的映射方案,从巨大的虚拟地址空间中偷出一部分映射到?PCI?地址空间。6.2?PCI?Configuration?Headers?(?PCI?配置头)系统中的每一个?PCI?设备,包括?PCI-PCI?桥都由一个配置数据结构,位于?PCI?配置地址空间中。?PCI?配置头允许系统识别和控制设备。这个头位于?PCI?配置地址空间的确切位置依赖于设备使用的?PCI?拓扑。例如,插在?PC?主板一个?PCI?槽位的一个?PCI?显示卡配置头会在一个位置,而如果它被插到另一个?PCI?槽位则它的头会出现在?PCI?配置内存中的另一个位置。但是不管这些?PCI?设备和桥在什么位置,系统都可以发现并使用它们配置头中的状态和配置寄存器来配置它们。通常,系统的设计使得每一个?PCI?槽位的?PCI?配置头都有一个和它在板上的槽位相关的偏移量。所以,举例来说,板上的第一个槽位的?PCI?配置可能位于偏移?0?而第二个槽位的在偏移?256?(所有的头都一样长度,?256?字节),依此类推。定义了系统相关的硬件机制使得?PCI?配置代码可以尝试检查一个给定的?PCI?总线上的所有可能的PCI?配置头,试图读取头中的一个域(通常是?Vendor?Identification?域)得到一些错误,从而知道那些设备存在而那些设备不存在。?PCI?Local?Bus?规范描述了一种可能的错误信息:试图读取一个空的?PCI?槽位的?Verdor?Identification?和?Device?Indentification?域时候返回?0xFFFFFFFF?。图?6.2?显示了?256?字节的?PCI?配置头的布局。它包括以下域:参见?include/linux/pci.hVendor?Identificat
文档评论(0)