I/O体系结构和设备驱动程序(六)

现在以PCI总线为例进行简单介绍,PCI是peripheral component interconnect的缩写,是英特尔公司开发的一种标准总线,为一劳永逸的解决ISA总线设计上的固有缺陷,PCI总线规定了如下设计目标:

  •  支持高传输带宽;
  • 简单且易于自动化配置附接的外设;
  •  平台独立性,即不绑定到特定的处理器平台或系统平台。

PCI规范存在几个版本,因为在PCI发展过程中添加了各种增强特性,以涵盖更多新近技术进展。

5.1、PCI系统的布局

(一)  设备标识

系统的某一条PCI总线上的每个设备,都由一组3个编号标识。

l  总线编号:该设备所在总线的编号。编号从0开始,PCI规范准许每个系统最多255个总线;

l  插槽编号:总线内部的一个唯一标识编号。一条总线最多能够附接32个设备。不同总线上的设备插槽编号可能相同;

l  功能编号:用于在一个扩展卡上,实现包括多个(经典意义上)扩展设备的设备。例如,为节省空间,可将两个网卡放在一块扩展卡上,在这种情况下通过不同的功能编号来指定不同的接口。PCI标准将一个设备上功能部件的最大数目定义为8。

每个设备都通过一个16位编号唯一标识,其中8个比特位用于总线编号,5个用于插槽编号,3个用于功能编号。

(二)  地址空间

有3个地址空间支持与PCI设备的通信:

l  I/O空间用32个比特位描述,因而,对用于与设备通信的端口地址,提供了最大4GB的空间;

l  取决于处理器类型,数据空间由32或64个比特位描述。只有当CPU字长为64位时,才支持后者。系统中的设备分配到上述两个地址空间中,因而有唯一的地址;

l  配置空间包含了各个设备的类型和特征的详细信息,以省去危险的自动探测工作。

这些地址空间会根据处理器类型映射到系统虚拟内存的不同位置,使得内核和设备驱动程序能够访问对应的资源。

(三)  配置信息

PCI总线是一种无跳线系统。换言之,扩展设备能够完全通过软件手段配置,无需用户干涉。为了支持这种配置,每个PCI设备都有一个256字节长的配置空间,其中包括该设备的特点和要求的有关信息。如下图所示:

尽管该结构长度必须是256字节,但只有前64字节是标准化的。其余空间可自由使用,通常用于设备和驱动程序之间交换附加信息。该信息的结构(或应该)定义在硬件文档中。但是应注意到:并非前64字节都是强制性的,一些项可选,如果设备不需要,可以填充字节0.在图中,强制性的项用深灰色突出显示。

  • Vendor ID和DeviceID唯一标识了厂商和设备类型。前者由PCI Special Interest Group分配用于标识各个公司,后者可由厂商自选,只用于确保地址空间中不会出现重复。这两个ID合起来通常称之为设备的签名。
  • Subsystem VenderID和Subsystem DeviceID:可同时使用,以更精确的描述设备的通用接口。
  • Rev ID用于区分不同的设备修订级别。这有助于用户选择设备驱动程序的版本。
  • Class Code:字段用于将设备分配到各种不同的功能组,该字段分为2部分,前8个比特位表示基类,而剩余的16个比特位用于表示基类的一个子类。例如:

              <pci_ids.h>:

    •  大容量存储器(PCI_BASE_CLASS_STORAGE)
      • SCSI控制器(PCI_CLASS_STORAGE_SCSI);
      •  IDE控制器(PCI_CLASS_STORAGE_IDE);
      • RAID控制器(PCI_CLASS_STORAGE_RAID)用于组合多个磁盘驱动器
    •  网络(PCI_BASE_CLASS_NETWORK)
      • 以太网(PCI_CLASS_NETWORK_ETHERNET)
      • FDDI(PCI_CLASS_NETWORK_FDDI)
    • 系统组件(PCI_BASE_CLASS_SYSTEM)
      •  DMA控制器(PCI_CLASS_SYSTEM_DMA)
      •  实时时钟(PCI_CLASS_SYSTEM_RTC)

        此外还有很多类别,详细参考<pci_ids.h>

  •  6个基地址字段:每个包含32比特位,用于定义PCI设备和系统其余部分通信所用的地址。在涉及64位设备(Alpha和Sparc64系统上是有可能的),需要将基地址字段两两合并,以描述内存中的位置。这样可用的基地址数目就只有3个了。就内核而言,剩余字段中相关的只有IRQ编号,可以接受0和255之间的任意值,用于指定设备使用的中断。值为0表示设备并不使用中断。

尽管PCI标准支持最多255个中断,但能够实际使用的编号通常受限于具体的体系结构,在这样的系统上,如果要支持比中断请求线更多的设备数目,那么必须采用诸如中断共享之类的方法。

剩余的字段由硬件使用&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值