Chinaunix首页 | 论坛 | 博客
  • 博客访问: 409184
  • 博文数量: 118
  • 博客积分: 294
  • 博客等级: 二等列兵
  • 技术积分: 667
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-16 20:31
文章分类

全部博文(118)

文章存档

2014年(3)

2012年(25)

2011年(90)

分类:

2012-01-14 18:49:54

原文地址:PCI总线概述 作者:luozhiyong131

总线是一种传输信号的信道;总线是连接一个或多个导体的电气连线。总线由电气接

编程接口组成,我们重点关注编程接口。

PCI概念

PCIPeripheral Component Interconnect(外围设备互联)的简称,是在桌面及更大型的计算机上普遍使用的外设总线。

PCI特点

PCI总线具有三个非常显著的优点:

v在计算机和外设间传输数据时具有更好的性能

v能够尽量独立于具体的平台

v可以方便地实现即插即用

PCI总线是一种不依附于某个具体处理器的局部总线,它是在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。

系统的各个部分通过PCI总线和PCI-PCI桥连接在一起。CPURAM通过PCI桥连接到PCI总线0(即主PCI总线),而具有PCI接口的显卡直接连接到主PCI总线上。PCI-PCI桥是一个特殊的PCI设备,它负责将PCI总线0PCI总线1连接在一起。图中连接到PCI 1号总线上的是SCSI卡和以太网卡。为了兼容旧的ISA总线标准,PCI总线还可以通过PCI-ISA桥来连接ISA总线,从而支持以前的ISA设备,图中ISA总线上连接着一个多功能I/O控制器,用于控制键盘、鼠标和软驱等。

PCI设备寻址

每个PCI设备由一个总线号、一个设备号、和一个功能号确定。PCI规范允许一个系统最多拥有256条总线,每条总线最多带32个设备,但每个设备可以是最多8个功能的多功能板(如一个音频设备带一个CD-ROM驱动器)。

/proc/iomem描述了系统中所有的设备I/O在内存地址空间上的映射。我们来看地址从1G开始的第一个设备在/proc/iomem中是如何描述的:

40000000-400003ff : 0000:00:1f.1

这是一个PCI设备,40000000-400003ff是它所映射的内存空间地址,占据了内存地址空间1024 bytes的位置,而0000:00:1f.1则是这个PCI外设的地址,它以冒号和逗号分隔为4个部分,第一个16位表示域,第二个8位表示一个总线号,第三个5位表示一个设备号,最后是3位,表示功能号。

因为PCI规范允许单个系统拥有最多256条总线,所以总线编号是8位。每个总线上可支持

32个设备,所以设备号是5位,而每个设备上最多可有8种功能,所以功能号是3位。由此

,由此可以得出上述的PCI设备的地址是0号总线上的31号设备上的1号功能。

使用lspci命令可以查看系统中的PCI设备

配置寄存器

每个PCI设备都有一组固定格式的寄存器,即配置寄存器,配置寄存器由Linux内核中的PCI初始化代码与驱动程序共同使用。内核在启动时负责对配置寄存器进行初始化,包括设置中断号以及I/O基址等。

配置空间

00H01H Vendor ID 制造商标识

02H03H Device ID 设备标识

04H05H Command 命令寄存器

06H07H Status 状态寄存器

08H Revision ID 版本识别号寄存器

09H0bH Class Code 分类代码寄存器

0cH Cache Line Size CACHE行长度寄存器

0dH Latency Timer 主设备延迟时间寄存器

0eH Header Type 头标类型寄存器

0fH Bulit-in-teset Register 自测试寄存器

10H13H Base Address Register 0 基地址寄存器0

14H17H Base Address Register 1 基地址寄存器1

18H1bH Base Address Register 2 基地址寄存器2

1cH19H Base Address Register 3 基地址寄存器3

20H23H Base Address Register 4 基地址寄存器4

24H27H Base Address Register 5 基地址寄存器5

28H2bH Cardbus CIS Pointer 设备总线CIS指针寄存器

2cH2dH Subsystem Vendor ID 子设备制造商标识

2eH2fH Subsystem Device ID 子设备标识

30H33H Expasion ROM Base Address 扩展ROM基地址

34H3bH ——— 保留

3cH Interrupt Line 中断线寄存器

3dH Interrupt Pin 中断引脚寄存器

3eH Min_Gnt 最小授权寄存器

3fH Max_Lat 最大延迟寄存器

v厂商标识(Vendor Id)

用来标识PCI设备生产厂家的数值。Intel的厂商标识为0x8086,全球厂商标识由PCI SpecialInterest Group来分配。

v设备标识(Device Id)

用来标识设备的数值。Digital 21141快速以太设备的设备标识为0x0009

v基地址寄存器(Base Address Registers)

记录此设备使用的I/O与内存空间的位置

v中断连线(Interrupt Line)

记录此设备使用的中断号

v中断引脚(Interrupt Pin)

记录此PCI设备使用的引脚号(A,B,C,D

阅读(1021) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~