PCIE设备在设备上枚举过程

news2024/10/6 14:36:58

根端口枚举

Root Port (RP)

在枚举过程结束时,Root Port (RP)必须设置以下寄存器:
Primary Bus, Secondary Bus和Subordinate Bus numbers
Memory Base和Limit
IO Base和IO Limit
Max Payload Size
Memory Space Enable bit

Endpoint (EP)

Endpoint (EP)还必须具有由RP设置的以下寄存器:
Master Enable bit
BAR Address
Max Payload Size
Memory Space Enable bit
Severity bit
枚举时候BUS号是深度优先搜索实现
在这里插入图片描述

根端口枚举流程图

1.Set PCI Standard Configuration Settings
设置PCI标准配置设置:这指的是设置PCI设备的一些标准配置,例如I/O端口、中断、总线宽度等。这些
配置可以通过PCI配置空间访问,以控制PCI设备的行为。
2.Set PCI Express Configuration Settings
设置PCI Express配置设置:与第一条类似,但是这是针对PCIe设备的配置设置。PCIe是一种高速串行总线技术,用于连接计算机内部的各种设备。
3.Set PCIe Device Status and Control Registers
(Max Payload size and Interrupt PIN)
设置PCIe设备状态和控制寄存器(最大有效荷载大小和中断引脚):这些寄存器用于控制PCIe设备的状态和行为。最大有效荷载大小指的是PCIe设备每次可以发送或接收的数据量的最大值。中断引脚用于指示PCIe设备是否有中断请求。
4.Set AER Root Error Command Registers (refer to GUI)
设置AER(Advanced Error Reporting,高级错误报告)根错误命令寄存器(参考GUI):这些寄存器用于配置AER功能,该功能可以检测和报告PCIe设备的错误情况。GUI(Graphical User Interface,图形用户界面)是一种用户界面,可以帮助用户进行设置和配置。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

注释:

对于Header Type 0和Header Type 1,Vendor ID和Device ID位于偏移0x00h。
对于PCIe Gen4,Header Type位于偏移0x0Eh(第二DW)。如果位0设置为1,则表示该器件是一个Bridge(桥接);否则,它是一个EP。如果位7设置为0,表示是一个单一功能器件;否则,它是一个多功能器件。
RP和non-RP器件的capability寄存器清单:
0x34h – Capabilities Pointers。该寄存器用于指向一个由Function实现的capabilities的链接列表:
RP的Capabilities Pointer
Address 40 -标识Power Management Capability ID
Address 50 -标识MSI Capability ID
Address 70 -标识PCI Express Capability结构
non-RP的Capabilities Pointer
Address 40 -标识Power Management Capability ID
Address 48 -标识PCI Express Capability结构
EP没有Primary, Secondary和Subordinate Bus编号相关的寄存器。
Bridge/Switch IO Base和Limit寄存器偏移0x1Ch。这些寄存器是根据PCIe 4.0 Base Specification而设置的。有关更准确的信息和流程,请参阅Base Specification(基本规范)的第7.5.1.3.6章节。
对于EP Type 0头,BAR地址位于以下偏移:
0x10h – Base Address 0
0x14h – Base Address 1
0x18h – Base Address 2
0x1ch – Base Address 3
0x20h – Base Address 4
0x24h – Base Address 5
对于Bridge/Switch Type 1头,BAR地址位于以下偏移:
0x10h – Base Address 0
0x14h – Base Address 1
对于Bridge/Switch Type 1头,IO Base和IO限制寄存器都位于偏移0x1Ch。
对于Bridge/Switch Type 1头,Non-Prefetchable Memory Base和Limit寄存器都位于偏移0x1Ch。
对于Bridge/Switch Type 1头,Prefetchable Memory Base和Limit寄存器都位于偏移0x24h。
对于Bridge/Switch/EP Type 0 & 1头,Bus Master Enable位位于偏移0x04h (Command Register)位2。
对Bridge/Switch/EP Type 0 & 1头,
IO Space Enable位在偏移0x04h (Command Register) 位0。
Memory Space Enable位在偏移0x04h (Command Register)位1。
Bus Master Enable位在偏移0x04h (Command Register)位2。
Parity Error Response位在偏移0x04h (Command Register)位6。
SERR# Enable位在偏移0x04h (Command Register)位8。
Interrupt Disable位在偏移0x04h (Command Register)位10。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/515731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oxygen Feedback Crack

Oxygen Feedback Crack Oxygen Integration为您的社区提供了一种简单有效的互动和提供反馈的方式。它易于配置和集成,并且包括用户友好的界面和许多对评论员和管理员都有用的功能。Oxygen Feedback Enterprise允许您在自己的服务器上安装软件,以便更好地…

【数据结构】线性表之顺序表

目录 一、线性表的定义二、顺序表1. 顺序表的定义2. 顺序表的结构2.1 静态顺序表2.2 动态顺序表 3. 动态顺序表的接口实现3.1 顺序表的接口3.2 接口的实现 三、顺序表总结1. 动态顺序表的优点2. 动态顺序表的缺点 结尾 一、线性表的定义 线性表是 n (n > 0) 个具有相同特性…

日志服务器的搭建

日志服务器 在centos7系统中,默认的日志系统是rsyslog,它是一类unix系统上使用的开源工具,用于在ip网络中转发日志信息,rsyslog采用模块化设计,是syslog的替代品。 rsyslog特点 实现了基本的syslog协议 直接兼容syslo…

linkindList源码分析

前言 LinkedList ,基于节点实现的双向链表的 List ,每个节点都指向前一个和后一个节点从而形成链表。 LinkedList集合同时具有List集合和Queue集合的基本特征 类图 如下 1 个接口是少于 ArrayList 的: java.util.RandomAccess 接口&#xff…

Sui正式推出学术研究奖计划

欢迎研究人员和学者提交第一轮Sui学术研究奖的资金申请。 Sui基金会诚邀来自世界各地机构的研究人员和学者申请第一轮Sui学术研究奖。申请按提交顺序排序,每个季度公布一次。 跨学科研究对于深入理解Web3及其改变世界的潜力起着关键性的作用。Sui基金会推出的学术…

【定义函数与常用函数】------- PYTHON基础7

内容目录 一、 定义函数二、Python常用函数介绍min() ; max()sum() ; sum(x, start 0)type()str()sorted()help() 一、 定义函数 定义了一个计算三角形面积的函数,然后调用 def triangle_area(w, h):area w * h/2print(底边长为: , w, ,高为&#xff…

Redis-2.1-架构综述

1 Redis组件模型 Redis 组件的系统架构如图所示,主要包括事件处理、数据存储及管理、用于系统扩展的主从复制/集群管理,以及为插件化功能扩展的 Module System 模块。 Redis的客户端与服务端的交互过程如下所示: 1.1 事件处理机制 Redis 中的…

linux中wait与waitpid函数使用场景及扩展

一般运用这两个函数,是在父进程等待子进程退出的过程中 区别:wait使调用者阻塞,waitpid有一个选项,可以使调用者不阻塞 status参数是一个整型数指针 非空:子进程退出状态放在它所指向的地址中。 空:不关心退出状态 …

计算机视觉的深度学习 Lecture2 笔记 EECS 498.008

Lecture2 498_FA2019_lecture02 KNN可视化 没有测试集、只有测试集都是很糟糕的。要有验证集,验证集只使用一次、且在训练了足够时间之后。 不过这样可能会导致最后才发现算法的效果不好。 更好的解决思路: [外链图片转存失败,源站可能有防盗链机制,建…

算法(一)—— 回溯

文章目录 前言1 77 组合2 77 组合优化 前言 1、回溯法解决的问题都可以抽象为树形结构(N叉树),使用树形结构来理解回溯。 2、回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度&#xff…

【分支与循环】------- PYTHON基础6

内容目录 一、分支结构分支结构 – 条件语句 if分支结构 – 条件语句 if…else分支结构 – 条件语句 if…elif…else 二、循环结构循环结构 – 初识 while 循环循环结构 – while 无限循环 一、分支结构 分支结构 – 条件语句 if score input(请输入成绩:) #inpu…

C++指针详解

指针 目录 内存变量指针变量 对指针进行赋值指针占用的内存 使用指针 指针用于函数参数用const修饰指针 void关键字C内存模型动态分配内存new 和 delete二级指针空指针野指针一位数组和指针 数组的地址数组的本质数组名不一定会被解释为地址一维数组作为函数参数用new动态创建…

学习Maven Web 应用

Maven Web 应用 本章节我们将学习如何使用版本控制系统 Maven 来管理一个基于 web 的项目,如何创建、构建、部署已经运行一个 web 应用。 创建 Web 应用 我们可以使用 maven-archetype-webapp 插件来创建一个简单的 Java web 应用。 打开命令控制台,…

bootstrap-fileinput文件上传、回显使用详解

文件上传bootstrap-fileinput使用详解 一、增加页面的文件上传(一)bootstrap-fileinput文件上传功能1.先引入js依赖2.在html上面写入文件框 (二)根据若依给出的示例引用和改进(三)根据uploadUrl进行上传&am…

博客管理系统--显示、退出、发布功能

6:显示用户信息7:退出登录总结博客管理系统 6:显示用户信息 这部分;希望是根据用户来显示;如果是博客列表页则显示登录用户的信息;如果是博客详情页则显示作者的信息。 1:前后端交互接口约定 …

如何压缩pdf文件大小?四种方法随意选择

如何压缩pdf文件大小?PDF文件格式由于其跨平台性,易于浏览、打印和传输等特点,在现代社会中广泛应用于各个领域。然而,随着PDF文件越来越大,传输及存储所需的时间也会变得越来越长,从而降低了工作效率。在这…

简单记忆clarke和park坐标变换

简单记忆clarke和park坐标变换 简介 想用简单的办法把这些变换矩阵写出来,需要的时候可以使用,不用再去翻书(当然完全记住还是更快一些)。只是自己用来记忆这些变换的方法。 具体可以参考:手撕系列(2&am…

【Redis】实现及优化分布式锁:实现、解决误删锁问题以及lua脚本确保redis操作原子性

目录 一、概念及不同分布式锁实现的对比 1、概念 2、特征 3、不同分布式锁实现的对比 二、Redis实现分布式锁的思路 1、获取锁思路 2、释放锁思路 三、代码实现分布式锁 1、准备 2、获取锁 2、释放锁 四、分布式锁的误删锁问题 1、问题 2、原因 五、误删锁的解决…

分布式配置中心

一、Config概述 Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护 好处: 集中管理配置文件 不同环境不同配置,动态化的配置更新 配置信息改变时,不需要重启即可更新配置信息到服务 二、Config 快速入门 1、使用git…

5.10-5.11总结

我教的课中 课程双击事件,跳转到课程界面 输入学生姓名和学号,添加学生 加载学生名单,双击学生,弹出学生资料,并且可以删除学生 但删除学生还有bug。