PCI Class Code 解释

起因

最近用hwinfo 查看我们设计的PCIe 设备时,发现被计算机归类为RS232串口设备,非常疑惑,与是查阅资料学习了一下计算机归类设备的依据。发现是我们设置的PCI CLASS CODE不合适导致的

PCI Express (PCIe) Class Code

PCI Express (PCIe) Class Code 是一种标识符,用于在PCI和PCI Express设备中分类不同的设备类型。在PCI配置空间中,Class Code是一个16位的字段,分为三部分:Base Class、Subclass、Programming Interface,各占8位、8位和8位,共同定义了设备的类别和子类别,以及特定的编程接口或功能。

结构组成:
Base Class (基础类别): 占8位,定义了设备大类,如存储控制器、网络控制器、显示控制器等。基础类别代码帮助操作系统和驱动程序识别设备属于哪一大类。

Subclass (子类别): 同样占8位,进一步细化基础类别,指出设备在大类别下的具体用途或类型。例如,在显示控制器的基础类别下,子类别可以进一步区分是VGA控制器还是3D加速卡。

Programming Interface (编程接口): 最后8位,提供了关于设备如何编程或其接口特性的额外信息。这部分可以非常具体,指明设备遵循的特定标准或协议。

例子:
例如,一个典型的显卡可能具有以下Class Code:
Base Class: 0x03,表示这是一个显示控制器。
Subclass: 0x00,进一步说明是VGA兼容的控制器。
Programming Interface: 可能是0x00,表示标准的VGA兼容接口。
作用:
Class Code对操作系统非常重要,因为它允许OS自动识别并加载合适的驱动程序,而无需用户手动干预。当系统枚举PCIe设备时,会读取这些Class Codes,并根据这些信息来决定如何处理和配置设备。

PCI Express (PCIe) Class Code 是用来标识设备类型的编号系统,下面列举了一些常见的PCIe Base Class, Subclass, 以及 Programming Interface 的代码示例。请注意,这份表格并不全面,实际的编码范围更广,但可以为您提供一个大致的概念:

常见的Base Class Codes:

Base Class CodeDescription
0x00Unclassified
0x01Mass Storage Controller
0x02Network Controller
0x03Display Controller
0x04Multimedia Device
0x05Memory Controller
0x06Bridge Device
0x07Simple Communication Controller
0x08Base System Peripheral
0x09Input Device
0x0ADocking Stations
0x0BProcessors
0x0CSerial Bus Controller
0x0DWireless Controller
0x0EIntelligent I/O Controller
0x0FSatellite Communication Controller
0x10Encryption/Decryption Controller
0x11Data Acquisition and Signal Processing Control

示例Subclass and Programming Interface:

对于Display Controllers (Base Class 0x03):
SubclassDescriptionExample Programming Interface
0x00VGA Compatible Controller0x00
0x01XGA Controller-
0x023D Controller0x00 (DirectX 9.0)
0x03Video Controller0x00
0x80-0xFFOtherVaries
对于Network Controllers (Base Class 0x02):
SubclassDescriptionExample Programming Interface
0x00Ethernet Controller0x00 (Ethernet)
0x01Token Ring Controller0x00
0x02FDDI Controller0x00
0x03ATM Controller0x00
0x04ISDN Controller0x00
0x80-0xFFOtherVaries

请注意,上述代码仅涵盖了部分常见类别和子类别,每个类别和子类别下可能有多种编程接口。具体设备的Class Code信息应当参考设备制造商的文档或使用如lspci(Linux环境下)之类的工具直接查询硬件。

详细CLASS CODE请参考PCI SIG规范,并选择适合自己的CLASS CODE

https://pcisig.com/sites/default/files/files/PCI_Code-ID_r_1_12__v9_Jan_2020.pdf

subclass 示例

  • 26
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值