首页 程序笔记 PCIe配置空间(PCIE Configuration Space) – 类型码(Class Code)

PCIe配置空间(PCIE Configuration Space) – 类型码(Class Code)

前言

PCIe配置空间(PCIE Configuration Space)中的类型码(Class Code),记录了PCIe类型设备的类型、子类型和功能,不同的PCIe设备,根据其类型和功能,有不同的类型码、子类型码和功能码。

PCIe配置空间

Class Code

Class Code The upper byte (at offset 0Bh) is a base class code which broadly classifies the type of function the device performs
The middle byte (at offset 0Ah) is a sub-class code which identifies more specifically the function of the device
The lower byte (at offset 09h) identifies a specific register-level programming interface (if any) so that device independent software can interact with the device

Class Code(类型码), Subclass(子类型码), 和Prog IF寄存器分别用于标识设备的类型、设备的功能和设备的寄存器级编程接口。下表列出了可能的设备类型:

Class Code Description
0x00 Device was built prior definition of the class code field
0x01 Mass Storage Controller
0x02 Network Controller
0x03 Display Controller
0x04 Multimedia Controller
0x05 Memory Controller
0x06 Bridge Device
0x07 Simple Communication Controllers
0x08 Base System Peripherals
0x09 Input Devices
0x0A Docking Stations
0x0B Processors
0x0C Serial Bus Controllers
0x0D Wireless Controllers
0x0E Intelligent I/O Controllers
0x0F Satellite Communication Controllers
0x10 Encryption/Decryption Controllers
0x11 Data Acquisition and Signal Processing Controllers
0x12 ~ 0xFE Reserved
0xFF Device does not fit any defined class.

下表列出了PCI(e)可能的设备功能:

Class Code (offset 0x0B) Sub-class (offset 0x0A) ProgIF (offset 0x09) Description
0x00 0x00 0x00 Any device except for VGA-Compatible devices
0x01 0x00 VGA-Compatible Device
0x01 0x00 0x00 SCSI Bus Controller
0x01 0x– IDE Controller
0x02 0x00 Floppy Disk Controller
0x03 0x00 IPI Bus Controller
0x04 0x00 RAID Controller
0x05 0x20 ATA Controller (Single DMA)
0x30 ATA Controller (Chained DMA)
0x06 0x00 Serial ATA (Vendor Specific Interface)
0x01 Serial ATA (AHCI 1.0)
0x07 0x00 Serial Attached SCSI (SAS)
0x80 0x00 Other Mass Storage Controller
0x02 0x00 0x00 Ethernet Controller
0x01 0x00 Token Ring Controller
0x02 0x00 FDDI Controller
0x03 0x00 ATM Controller
0x04 0x00 ISDN Controller
0x05 0x00 WorldFip Controller
0x06 0x– PICMG 2.14 Multi Computing
0x80 0x00 Other Network Controller
0x03 0x00 0x00 VGA-Compatible Controller
0x01 8512-Compatible Controller
0x01 0x00 XGA Controller
0x02 0x00 3D Controller (Not VGA-Compatible)
0x80 0x00 Other Display Controller
0x04 0x00 0x00 Video Device
0x01 0x00 Audio Device
0x02 0x00 Computer Telephony Device
0x03 0x00 Multimedia Device
0x05 0x00 0x00 RAM Controller
0x01 0x00 Flash Controller
0x80 0x00 Other Memory Controller
0x06 0x00 0x00 Host Bridge
0x01 0x00 ISA Bridge
0x02 0x00 EISA Bridge
0x03 0x00 MCA Bridge
0x04 0x00 PCI-to-PCI Bridge
0x01 PCI-to-PCI Bridge (Subtractive Decode)
0x05 0x00 PCMCIA Bridge
0x06 0x00 NuBus Bridge
0x07 0x00 CardBus Bridge
0x08 0x– RACEway Bridge
0x09 0x40 PCI-to-PCI Bridge (Semi-Transparent, Primary)
0x80 PCI-to-PCI Bridge (Semi-Transparent, Secondary)
0x0A 0x00 InfiniBrand-to-PCI Host Bridge
0x80 0x00 Other Bridge Device
0x07 0x00 0x00 Generic XT-Compatible Serial Controller
0x01 16450-Compatible Serial Controller
0x02 16550-Compatible Serial Controller
0x03 16650-Compatible Serial Controller
0x04 16750-Compatible Serial Controller
0x05 16850-Compatible Serial Controller
0x06 16950-Compatible Serial Controller
0x01 0x00 Parallel Port
0x01 Bi-Directional Parallel Port
0x02 ECP 1.X Compliant Parallel Port
0x03 IEEE 1284 Controller
0xFE IEEE 1284 Target Device
0x02 0x00 Multiport Serial Controller
0x03 0x00 Generic Modem
0x01 Hayes Compatible Modem (16450-Compatible Interface)
0x02 Hayes Compatible Modem (16550-Compatible Interface)
0x03 Hayes Compatible Modem (16650-Compatible Interface)
0x04 Hayes Compatible Modem (16750-Compatible Interface)
0x04 0x00 IEEE 488.1/2 (GPIB) Controller
0x05 0x00 Smart Card
0x80 0x00 Other Communications Device
0x08 0x00 0x00 Generic 8259 PIC
0x01 ISA PIC
0x02 EISA PIC
0x10 I/O APIC Interrupt Controller
0x20 I/O(x) APIC Interrupt Controller
0x01 0x00 Generic 8237 DMA Controller
0x01 ISA DMA Controller
0x02 EISA DMA Controller
0x02 0x00 Generic 8254 System Timer
0x01 ISA System Timer
0x02 EISA System Timer
0x03 0x00 Generic RTC Controller
0x01 ISA RTC Controller
0x04 0x00 Generic PCI Hot-Plug Controller
0x80 0x00 Other System Peripheral
0x09 0x00 0x00 Keyboard Controller
0x01 0x00 Digitizer
0x02 0x00 Mouse Controller
0x03 0x00 Scanner Controller
0x04 0x00 Gameport Controller (Generic)
0x10 Gameport Contrlller (Legacy)
0x80 0x00 Other Input Controller
0x0A 0x00 0x00 Generic Docking Station
0x80 0x00 Other Docking Station
0x0B 0x00 0x00 386 Processor
0x01 0x00 486 Processor
0x02 0x00 Pentium Processor
0x10 0x00 Alpha Processor
0x20 0x00 PowerPC Processor
0x30 0x00 MIPS Processor
0x40 0x00 Co-Processor
0x0C 0x00 0x00 IEEE 1394 Controller (FireWire)
0x10 IEEE 1394 Controller (1394 OpenHCI Spec)
0x01 0x00 ACCESS.bus
0x02 0x00 SSA
0x03 0x00 USB (Universal Host Controller Spec)
0x10 USB (Open Host Controller Spec)
0x20 USB2 Host Controller (Intel Enhanced Host Controller Interface)
0x30 USB3 XHCI Controller
0x80 Unspecified USB Controller
0xFE USB
(Not Host Controller)
0x04 0x00 Fibre Channel
0x05 0x00 SMBus
0x06 0x00 InfiniBand
0x07 0x00 IPMI SMIC Interface
0x01 IPMI Kybd Controller Style Interface
0x02 IPMI Block Transfer Interface
0x08 0x00 SERCOS Interface Standard (IEC 61491)
0x09 0x00 CANbus
0x0D 0x00 0x00 iRDA Compatible Controller
0x01 0x00 Consumer IR Controller
0x10 0x00 RF Controller
0x11 0x00 Bluetooth Controller
0x12 0x00 Broadband Controller
0x20 0x00 Ethernet Controller (802.11a)
0x21 0x00 Ethernet Controller (802.11b)
0x80 0x00 Other Wireless Controller
0x0E 0x00 0x– I20 Architecture
0x00 Message FIFO
0x0F 0x01 0x00 TV Controller
0x02 0x00 Audio Controller
0x03 0x00 Voice Controller
0x04 0x00 Data Controller
0x10 0x00 0x00 Network and Computing Encrpytion/Decryption
0x10 0x00 Entertainment Encryption/Decryption
0x80 0x00 Other Encryption/Decryption
0x11 0x00 0x00 DPIO Modules
0x01 0x00 Performance Counters
0x10 0x00 Communications Syncrhonization Plus Time and Frequency Test/Measurment
0x20 0x00 Management Card
0x80 0x00 Other Data Acquisition/Signal Processing Controller
3

站心网

前言 PCIe配置空间(PCIE Configuration Space)中的类型码(Class Code),记录了PCIe类型设备的类型、子..

为您推荐

float 与 double 类型区别

float 单精度浮点数在机内占 4 个字节,用 32 位二进制描述。double 双精度浮点数在机内占 8 个字节,用 64 位二进制描述。浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。数符占 1 位二进制..

ASP.NET MVC中有四种过滤器类型

在ASP.NET MVC中有四种过滤器类型Action1、在ASP.NET MVC项目中,新建文件夹Filter,然后新建类MyCustormFilter,继承自ActionFilterAttribute类,我们来看下ActionFilterAttribute类有如下四个方法,从命名我应该就..

最新CentOS7安装搭建shadowsocks服务端+客户端使用图文教程

使用的CentOS版本是7.9,其他版本也可以。超级推荐的是搭建shadowsocks服务端,安装配置都很简单,几分钟就搞定,客户端支持PC移动端,下面是安装shadowsocks的过程,只要复制粘贴命令就行了,文件夹路径都不需要改..

微软发布VS Code AI工具包,集成多模型AI能力

微软发布了VS Code AI工具包,增强了代码编辑器的AI功能!微软推出了VS Code AI工具包,这是一个全新的扩展,旨在将AI功能集成到Visual Studio Code中。该工具包支持多种AI模型,包括本地和远程模型,用户可以配置自..

AutoMapper.AutoMapperMappingException”类型的异常在 AutoMapper.dll 中发生,但未在用户代码中进行处理

今天修改别人的代码抛出了这样的异常: AutoMapper.AutoMapperMappingException”类型的异常在 AutoMapper.dll 中发生,但未在用户代码中进行处理。进行了调试,往下走的时候直接报错了,百度之~中文网站上没..

.NET Core 读取配置文件方法

在.NET Core中使用appsettings.json配置文件。假设我们的示例配置文件是这样的{"Logging":{"LogLevel":{"Default":"Information","Microsoft":"Warning","Microsoft.Hosting.Lifetime":"Information"}},"AllowedHost..

ASP.NET Core多环境配置

.NET Core多环境配置,从IWebHostEnvironment 对象来看,.NET Core自带设定了3种环境,也可以自己定义环境名称。//env.IsStaging预览//env.IsDevelopment开发//env.IsProduction生产//env.IsEnvironment("环境名称")..

.NET Core 日志配置,NLog配置示例

.NET Core内置的日志组件附带了以堆日志提供程序,输出到控制台,输出,系统事件。在Program.cs组件配置里可以配置,如下。Console和Debug是默认配置。publicstaticIHostBuilderCreateHostBuilder(string[]args)=>Ho..

ASP.NET Core MVC 添加Area和Route配置

什么是区域Area?区域Area是一项 ASP.NET 功能,用于将相关功能整理到一个组中作为:路由的命名空间。视图和 Razor Pages 的文件夹结构。使用区域会通过为 controller 和 action 或 Razor 页面 page 添加另一个路由..

CentOS7部署发布.NET Core网站Ngnix安装配置图文教程

Linux服务器部署.NET Core网站运行速度更快,最近打算把原来windows server上的网站迁到linux的云服务器上。 顺便记录一下CentOS7安装.NET运行环境,安装和配置Ngnix的过程。首先安装.NET运行时sudorpm-Uvhhttps://p..

Kubernetes(k8s) Linux安装和配置

什么是Kubernetes(k8s)?Kubernetes(通常称为"k8s")是一种用于自动部署、扩展和管理容器化应用程序的开源平台。它提供了一个容器编排和管理系统,可以自动化应用程序的部署、管理和缩放,并确保它们的高可用性。在..

VSCode插件CodeGPT配置使用方法图文教程

CodeGPT 是一款 Visual Studio Code 扩展插件,可以通过官方的 OpenAI API 使用 GPT-3 (预训练生成式转换器) 模型,在多种编程语言中生成、解释、重构和文档化代码片段。CodeGPT 可用于各种任务,例如代码自动完成、..

10个c#基础面试题和答案

以下是10个常见的 C# 基础面试题及其答案:C# 中的值类型和引用类型有什么区别?答案:值类型直接存储数据的值,而引用类型存储对数据的引用。值类型在栈上分配内存,而引用类型在堆上分配内存。什么是命名空间(Nam..

VSCode开发ASP.NET网站

Visual Studio Code(VSCode)是一个轻量级的代码编辑器,非常适合开发ASP.NET网站,特别是ASP.NET Core项目。以下是在VSCode中开发ASP.NET网站的一般步骤:安装Visual Studio Code: 如果你尚未安装VSCode,请从其..

在VSCode中开发ASP.NET网站的示例

在 VSCode 中开发 ASP.NET 非常简单。你只需要安装一些必要的扩展并创建一个 ASP.NET 项目。安装扩展要使用 VSCode 开发 ASP.NET,你需要安装以下扩展:C# for Visual Studio Code:此扩展提供了 C# 语言支持,包括..

.NET Core怎么判断请求类型

NET Core 中可以通过以下方法判断请求类型:使用 HttpRequest.Method 属性:HttpRequest.Method 属性可以获取请求方法,例如 GET、POST、PUT、DELETE 等。var request = HttpContext.Request;if (request.Method == ..

C# object和dynamic类型的区别

在C#中,object和dynamic类型都被用作存储任何类型的数据,但它们的行为和用途有一些关键差异。下面是它们之间的主要区别:类型安全:object类型:是类型安全的。当你将一个变量声明为object类型,编译器会在编译时..

使用VSCode开发.NET MVC常用插件

以下是一些在使用 Visual Studio Code (VSCode) 开发 .NET MVC 时常用的插件:C#:提供 C# 语言支持,包括代码补全、语法检查、调试等功能。Razor:提供 Razor 模板语法的支持,用于在视图中嵌入 C# 代码。OmniSharp..

如何开发VSCode插件

要开发 VSCode 插件,你需要遵循以下步骤:安装 Node.js:确保你的计算机上安装了 Node.js。你可以从官方网站 https://nodejs.org/ 下载和安装最新版本。安装 Yeoman 和 VSCode 插件生成器:Yeoman 是一个用于生成项..

支持多种不同类型的数据库管理工具分享

有许多数据库管理工具可以支持多种不同类型的数据库。以下是一些常见的支持多种数据库的数据库管理工具:DBeaver: DBeaver是一个开源的数据库管理工具,支持多种数据库系统,包括MySQL、PostgreSQL、Oracle、SQL Se..

发表回复

返回顶部