pci配置空间内容解析

📅 2026/7/10 20:18:58
pci配置空间内容解析
首先通过lspci 。查看硬件的总线BDF (总线号、设备号功能号)查看我们的硬件编码卡显示为2b:00.0 Processing accelerators: EMERGETECH Company Ltd. Seirios 2063 Video Codec (rev 01)2b 总线号00 设备号0 功能号2b:00.0 Processing accelerators: EMERGETECH Company Ltd. Seirios 2063 Video Codec (rev 01)00: bd 1e 01 01 06 04 10 08 01 00 00 12 10 00 00 0010: 04 00 00 ec 00 00 00 00 04 00 00 e8 00 00 00 0020: 0c 00 00 e0 00 00 00 00 00 00 00 00 00 00 00 0030: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 00 00详细字段解析1、设备识别信息偏移量0x00-0x03偏移 十六进制 字段名 解析值 含义0x00-0x01 be 1e Vendor ID(供应商ID) 0x1ebd 厂商编码对应Emergetech company ltd0x02-0x03 01 01 Device ID(设备ID) 0X0101 设备型号对应Serios 2063 Video Codec.2.命令与状态寄存器偏移量0x04-0x07偏移 十六进制 字段名 解析值 含义0x04-0x05 0604 command 0x0406 Bit 00(I/O空间禁用)Bit 11(内存空间启用) Bit21(启用总线主控) 这也是DMA的本质不经过cpu 而直接进行DMA.0x06-0x07 10 08 Status(状态) 0x0810Bit 4 1Capabilities List具备高级功能列表Bit 11 1Signaled Target Abort曾经发过“目标中止”信号3. 设备分类 (偏移量 0x08 - 0x0B)偏移十六进制字段名解析值含义0x0801Revision ID0x01芯片修订版本号 1。0x0900Programming Interface0x00编程接口标准未定义特定接口。0x0A00Sub-Class0x00子类代码0x00 表示此类别的通用设备。0x0B12Base Class0x12主类 处理加速器 (Processing Accelerators)这与lspci文本输出完全吻合。4. 头标类型与缓存 (偏移量 0x0C - 0x0F)偏移十六进制字段名解析值含义0x0C10Cache Line Size16 字节系统缓存行大小PCIe 通常要求设置为 16 字节 (0x10)。0x0D00Latency Timer0PCI 延迟定时器PCIe 设备该值无效。0x0E00Header Type0x00普通 PCI 设备非桥接器且为单功能设备最高位 Bit 7 为 0。0x0F00BIST0x00内建自测试未启用。5. 基址寄存器 (BAR) - 最关键的内存映射信息 (偏移量 0x10 - 0x27)这里定义了设备内部寄存器/内存被映射到物理内存空间的位置供 CPU 和驱动访问。BAR偏移原始十六进制 (小端)解析后的地址/属性详细含义BAR00x10-0x1304 00 00 ec0xEC00000032-bit 非预取内存空间。地址为0xEC000000。0x04末尾的 Bit 0 0 表示内存映射Bit 2-1 0 表示 32-bit 宽度。BAR10x14-0x1700 00 00 00未使用-BAR20x18-0x1B04 00 00 e80xE800000032-bit 非预取内存空间。地址为0xE8000000。属性同 BAR0。BAR30x1C-0x1F00 00 00 00未使用-BAR40x20-0x230c 00 00 e0低 32 位 0xE0000000这是 64-bit 预取内存空间。末尾0x0C的 Bit 00内存Bit 1-2 0b1064-bitBit 31可预取。BAR5 作为其高 32 位。BAR50x24-0x2700 00 00 00高 32 位 0x00000000因此完整 64-bit 地址 0x00000000E0000000。该卡共使用了3 个有效的物理地址区域0xEC000000、0xE8000000和0xE000000064位分别用于控制寄存器、数据缓冲等不同用途。6. 子系统与扩展 ROM (偏移量 0x28 - 0x33)偏移十六进制字段名值含义0x28-0x2B00 00 00 00CardBus CIS0x00000000未使用。0x2C-0x2D00 00Subsystem VID0x0000未填写子系统供应商。0x2E-0x2F00 00Subsystem ID0x0000未填写子系统 ID。0x30-0x3300 00 00 00Expansion ROM0x00000000未映射扩展 ROM无板载 Option ROM。7. 中断与 PCIe 能力指针 (偏移量 0x34 - 0x3F) —— 关键部分偏移十六进制字段名值含义0x3440Capabilities Pointer0x40这是最重要的 PCIe 证据。指向 PCIe 扩展功能链表的起始位置即偏移量 0x40 处。状态寄存器中的 Bit 4 也印证了这一点。0x35-0x3B00 00 00 00 00 00 00保留-未使用填充为 0。0x3CffInterrupt Line0xFF中断线号。值为 0xFF 表示尚未被 BIOS/操作系统分配实际的中断号通常系统启动后或驱动加载后会被重写。0x3D01Interrupt Pin0x01中断引脚。0x01 INTA#该设备使用主中断引脚 A这是绝大多数单功能 PCIe 设备的标准配置。0x3E-0x3F00 00Min_Gnt / Max_Lat0x0000PCI 总线请求延迟PCIe 设备该字段无效。总结与补充说明设备性质这是一块标准的PCIe 视频编解码加速卡处理加速器拥有 3 个独立的内存映射空间BAR0/BAR2/BAR4用于驱动通过 MMIO 方式控制硬件编解码任务。关于 Capabilities Pointer (0x40)由于偏移量0x34指向0x40真正的 PCIe 能力集包含链路速度、宽度、电源管理等位于偏移量0x40之后。如果你想进一步查看这些细节可以运行sudo lspci -vv -s 2b:00.0 # 显示详细的能力集信息中断机制当前中断线为未分配状态0xFF但物理引脚定义为了 INTA#。当驱动加载如vfio-pci或专用驱动时系统会通过 ACPI/APIC 为其动态分配一个真实的中断号并替换掉0xFF。BAR4 的 64 位寻址该设备映射了 64 位物理地址说明其支持现代大内存寻址可能在 4GB 以上物理内存区域有映射需求但本例高 32 位为 0实际落在了 4GB 以下的传统区域。