PCI
即Peripheral Component Interconnect, 外设部件互联
ISA
MCA(Micro Channel Architecture)
EISA
PCI
PCI设备结构
这里有个Header type字段
Header Type为0x00时的设备结构:
registeroffsetbits 31-24bits 23-16bits 15-8bits 7-0
0000Device IDVendor ID
0104StatusCommand
0208Class codeSubclassProg IFRevision ID
030CBISTHeader typeLatency TimerCache Line Size
0410Base address #0 (BAR0)
0514Base address #1 (BAR1)
0618Base address #2 (BAR2)
071CBase address #3 (BAR3)
0820Base address #4 (BAR4)
0924Base address #5 (BAR5)
0A28Cardbus CIS Pointer
0B2CSubsystem IDSubsystem Vendor ID
0C30Expansion ROM base address
0D34ReservedCapabilities Pointer
0E38Reserved
0F3CMax latencyMin GrantInterrupt PINInterrupt Line
Header Type为0x01时的设备结构:
registeroffsetbits 31-24bits 23-16bits 15-8bits 7-0
0000Device IDVendor ID
0104StatusCommand
0208Class codeSubclassProg IFRevision ID
030CBISTHeader typeLatency TimerCache Line Size
0410Base address #0 (BAR0)
0514Base address #1 (BAR1)
0618Secondary Latency TimerSubordinate Bus NumberSecondary Bus NumberPrimary Bus Number
071CSecondary StatusI/O LimitI/O Base
0820Memory LimitMemory Base
0924Prefetchable Memory LimitPrefetchable Memory Base
0A28Prefetchable Base Upper 32 Bits
0B2CPrefetchable Limit Upper 32 Bits
0C30I/O Limit Upper 16 BitsI/O Base Upper 16 Bits
0D34ReservedCapability Pointer
0E38Expansion ROM base address
0F3CBridge ControlInterrupt PINInterrupt Line
Vendor ID字段
Vendor ID由PCI-SIG分配。可以从https://pcisig.com/membership/member-companies上查询各相关厂商分配的Vendor ID。如果该字段读出来为0xFFFF,表示是一个无效的Vendor ID。
例如Realtek的Vendor ID为4332 (0x10EC)
Realtek Semiconductor Corporation4332 (10EC Hex)
配置空间访问机制#1
这里涉及到两个IO端口:0xCF8和0xCFC。
0xCF8端口为CONFIG_ADDRESS端口,也就是配置地址端口,它被映射到一个32位的寄存器,也叫配置地址寄存器。
0xCFC端口为CONFIG_DATA端口,也就是配置数据端口,它也被映射到一个32为的寄存器,也叫配置数据寄存器。
配置地址寄存器
31 30 - 24 23 - 16 15 - 11 10 - 8 7 - 0
Enable Bit Reserved Bus Number Device Number Function Number Register Offset
可以看到Bus Number只有8位,也就是最多只能分配256(0~255)个Bus。Device Number只有5位,也就是最多32(0~31)个Device,Function Number只有3位,也就是最多8(0~7)个Function。这对于我们后面遍历出连接到电脑计算机上的所有PCI外设提供了一种遍历思路。
配置空间访问机制#2
这种访问机制在PCI 2.0版本中已经废弃。
这种访问机制也涉及到很多个IO端口:其中有两个端口0x0CF8和0x0CFA, 以及端口范围0xC000~0xCFFF(这其中有4096个端口)。
0xCF8端口为CONFIG_ADDRESS端口,也就是配置地址端口,但它被映射到一个8位的寄存器,也叫配置地址寄存器。
0x0CFA端口为跳转端口,它也被映射到一个8位的寄存器,也叫Forwarding Register(跳转寄存器)。
配置地址寄存器
7 - 43 - 10
Key (0 = access mechanism disabled, non-zero = access mechanism enabled)Function numberSpecial cycle enabled if set
0xC000~0xCFFF端口
15 - 1211 - 87 - 21 - 0
Must be 1100bDevice numberRegister indexMust be zero
遍历所有PCI外设
PCI-X
PCI-X 1.0
PCI-X 2.0
PCI-E(即PCI-Express)
基于内存映射PCI(Memory Mapped PCI)的配置空间访问机制
PCI-E 1.0
PCI-E 2.0
PCI-E 3.0
PCI
CPU
相关推荐
### PCI Express to PCI Bridge Specification,rev1.0 #### 概述 《PCI Express to PCI Bridge Specification,rev1.0》是一份详细介绍了如何在PCI Express(PCIe)与传统PCI或PCI-X总线之间建立桥接的标准文档。这...
PCI Express(Peripheral Component Interconnect Express),简称PCIe或PCI-E,是一种高速接口标准,用于计算机系统中的外部设备间的数据传输。PCIe规范是由PCI Special Interest Group(PCI-SIG)制定的,旨在替代...
PCI(Peripheral Component Interconnect)是计算机扩展总线标准,它允许在主板上添加各种外部设备,如显卡、声卡、网卡等。在IT领域,理解和操作PCI设备信息是系统编程、驱动开发以及硬件故障排查的重要环节。本文...
PCI9054数据手册是PLX Technology公司于1998年发布的资料,其中详细介绍了PCI9054这一桥接芯片的技术细节和使用方法。PCI9054是一个功能强大的PCI桥接芯片,广泛应用于各种硬件开发领域,特别是在高速数据通信和PCI...
PCI规范(Peripheral Component Interconnect Specification)是由PCI-SIG(PCI Special Interest Group,PCI特别兴趣小组)制定的一套标准,用于定义计算机系统中外围设备如何连接和交互。PCI规范3.0版本,即PCI ...
PCI9056是一款由PLX Technology公司生产,支持PCI(外围组件互连)总线的桥接芯片。它属于PCI905X系列,相比PCI9054芯片,PCI9056在功能上有所增强,包括增加了PCI总线仲裁器的功能,使其能够直接作为总线控制端的单...
在Linux操作系统中,xHCI(Extreme Host Controller Interface)PCI总线型USB主机控制器驱动程序扮演着至关重要的角色,它使得系统能够高效、稳定地与USB 3.0及更高版本的设备进行通信。xHCI是USB 3.0规范定义的一种...
PCISETUP.exe是PCI卡的驱动安装工具,您可以用这个工具来安装卡的驱动. 相关文件说明 -DRV_1P CH352(PCI转一并口)驱动文件目录. -LINUX linux驱动文件目录 -WINDOWS windows 98\2000\me\NT4.0\vista\xp\64位xp\64...
在Windows XP操作系统中开发PCI(Peripheral Component Interconnect)设备驱动程序是一项复杂而关键的任务,因为PCI设备是计算机硬件系统中的核心部分,它们负责提供高速数据传输和与其他硬件组件的交互。...
### Altera PCI IP Core 使用手册知识点详述 #### 关于Altera PCI Compiler **Altera PCI Compiler**是一款专为Altera FPGA设计的PCI接口编译工具。它支持多种Altera设备家族,并具备丰富的功能特性,旨在帮助用户...
### PCI9052在ISA与PCI总线接口中的应用 #### 一、PCI9052概述 **PCI9052**是由PLX公司研发的一款高性能的PCI总线接口芯片,它能够实现ISA(Industry Standard Architecture)总线与PCI(Peripheral Component ...
PCI9054是一款由PLX Technology公司设计的PCI接口控制器芯片,主要用于为嵌入式系统提供PCI(Peripheral Component Interconnect)总线扩展能力。在深入探讨PCI9054的知识点之前,我们先理解一下PCI总线的基本概念。...
PCI9052板卡是基于PCI(Peripheral Component Interconnect)接口的一种通用I/O扩展板卡,主要用于在个人计算机系统中增加额外的硬件功能。它通常由一块包含PCI9052芯片的电路板组成,该芯片是PLX Technology公司...
"PCI Express Base Specification Revision 2.0 协议规范" PCI Express Base Specification Revision 2.0 协议规范是PCI-SIG(Peripheral Component Interconnect Special Interest Group)发布的一份关于PCI ...
研华PCI-1730/PCI-1730U是一款功能强大的32路隔离数字量输入/输出卡,主要用于需要高电压隔离保护的工业应用,以确保系统在复杂环境中稳定可靠运行。此款卡提供了复位保护功能,当系统在热重启动时,能够保持每个...
PCI(Peripheral Component Interconnect)是一种计算机扩展总线标准,由英特尔公司在1992年推出,用于连接计算机系统中的外部设备,如显卡、网卡、声卡等。随着技术的发展,PCI接口经历了多次升级,其中PCI-Express...
PCI串行口驱动是计算机硬件系统中的一个重要组成部分,主要用于管理和控制PCI(Peripheral Component Interconnect)总线上的串行通信接口。PCI是一种高速局部总线标准,允许计算机内部的不同设备之间进行快速数据...
标题中的“fpga实现pci配置空间的读写”是指在硬件设计中,使用Field Programmable Gate Array(FPGA)来处理PCI(Peripheral Component Interconnect)总线的配置空间操作。PCI配置空间是PCI设备固有的一个内存映射...
PCI9052是一款由PLX Technology公司设计的PCI接口控制器,主要用于构建基于PCI(Peripheral Component Interconnect)总线的嵌入式系统。这款芯片在工业控制、数据通信、网络设备以及各种专业应用中有着广泛的应用。...
### PCI Express 3.0设计指南关键知识点 #### 一、PCI Express 3.0概述 **PCI Express(PCIe)3.0**是PCI Express I/O标准的下一代演进版本,旨在提供比前一代(PCIe 2.0)更高的性能、更低的成本以及更低的功耗。...