UEFI学习笔记(十二):PCIe的概述与访问

UEFI学习笔记(十一):PCIe的概述与访问

    • 一、PCIe的概念
    • 二、PCI的访问
    • 三、PCI/PCIe的结构
      • 1、物理结构
      • 2.、配置空间结构

一、PCIe的概念

PCI(Peripheral Component Interconnect)是一种高速数据传输接口标准,用于连接计算机主板与外部设备。其主要目的是为计算机提供一种快速的总线架构,允许显卡、网卡、声卡等外部设备与主板上的中央处理器(CPU)和内存进行通信。PCI采用并行总线架构,支持多个设备同时通过总线连接并进行数据传输。

PCIe(Peripheral Component Interconnect Express),即PCI-Express,是一种高速串行总线标准。最早由英特尔于2001年提出,旨在替代旧的PCI、PCI-X和AGP总线标准。尽管PCIe在硬件层面上与这些旧标准不同,但在软件层面上保持兼容。

PCIe的传输机制采用双向连接,能够同时进行数据的发送和接收操作,这种模型称为双单工连接。每个接口都具有单独的发送和接收路径,因此两个设备之间可以实现全双工通信,即数据流可以同时进行双向传输。

设备之间的通信路径称为链路(Link),链路由一个或多个接收与发送对组成。每对接收和发送称为一个通道(Lane)。PCIe协议规定,链路可以包含1、2、4、8、12、16或32个通道,链路的宽度通常用x1、x2、x4、x8、x16、x32来表示。

二、PCI的访问

EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL 适用于低级访问 PCI 总线和设备的配置空间、I/O 空间、内存空间等。
EFI_PCI_IO_PROTOCOL 适用于高级访问 PCI 设备,提供了对设备配置空间和其他资源的直接操作。

EFI_PCI_IO_PROTOCOL *PciIo;
EFI_HANDLE *HandleBuffer;
UINTN HandleCount;
EFI_STATUS Status;Status = gBS->LocateHandleBuffer(ByProtocol, &gEfiPciIoProtocolGuid, NULL, &HandleCount, &HandleBuffer);
if (EFI_ERROR(Status)) {// 错误处理
}for (UINTN i = 0; i < HandleCount; i++) {Status = gBS->HandleProtocol(HandleBuffer[i], &gEfiPciIoProtocolGuid, (VOID**)&PciIo);if (!EFI_ERROR(Status)) {// 使用 PciIo 进行操作}
}

三、PCI/PCIe的结构

1、物理结构

PCI 的物理结构主要涉及到总线、设备、功能的层次关系。

1)总线(Bus):
每个 PCI 系统可以包含多个总线,最初是从主总线(Bus 0)开始。每个 PCI 总线可以连接多个 PCI 设备。
2)设备(Device):
每个 PCI 总线最多可以支持 32 个 PCI 设备,通过设备编号(Device Number)进行区分。通常每个设备代表一个独立的硬件部件,例如显卡、网卡或声卡。
3)功能(Function):
PCI 设备可以有多个功能(Function),每个设备最多可以支持 8 个功能,用功能号(Function Number)标识。例如一个网卡设备可能同时支持网络通信和存储功能。Function 0 通常表示该设备的主功能。

因此,一个完整的 PCI 设备可以由三部分唯一标识:总线号(Bus Number)、设备号(Device Number)、功能号(Function Number)。

2.、配置空间结构

PCI 的配置空间是一个 256 字节(PCIe 是 4096 字节)的内存映射区域,存储了设备的配置信息。每个 PCI 设备都必须有一个配置空间,通过该配置空间可以对设备进行初始化、控制和状态监视。

配置空间前 64 字节 是标准的头部,所有 PCI 设备都遵循相同的格式。重要的寄存器有:

1)设备 ID 和厂商 ID:
设备和制造商的唯一标识。
2)状态寄存器(Status Register):
反映设备当前的状态信息。
3)命令寄存器(Command Register):
用于控制设备的功能,比如启用/禁用设备的内存空间和 I/O 空间。
4)类代码和子类代码(Class Code and Subclass Code):
表示设备的类型,例如网络控制器、显示控制器等。
5)基址寄存器(Base Address Registers, BARs):
用于指定设备的内存或 I/O 空间的基地址,告诉系统该设备的资源占用情况。

配置空间的其余部分 是设备特定的寄存器,包含设备的特定配置,如中断配置、扩展寄存器等。PCIe 的配置空间结构更大(4096 字节),提供更多扩展功能。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu系统库和Anaconda库冲突问题

之前安装opencv时没出现过这种问题,自从安装Anaconda后就总遇到问题。记录下自己的解决过程。 目录 第一步 第二步 第三步 安装opencv时出现以下问题: /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_prep_cif@LIBFFI_BASE_7.…

qt QTableview 左侧 序号 倒序

本文主要在QTableview插入数据的基础上&#xff0c;使左边序号实现倒序&#xff0c;实现如下图所示。 解决办法&#xff1a; QTableview左侧是QHeaderView类构成的&#xff0c;重写QHeaderView的paintSection&#xff0c; 重写序号的文字内容&#xff0c;进而 实现QTableview …

FFT过程中自动补零,补零部分FFT结果不为零

在 FFT&#xff08;快速傅里叶变换&#xff09; 中&#xff0c;补零&#xff08;Zero Padding&#xff09;是为了使信号的点数符合 2 的幂次方&#xff0c;以提高 FFT 的计算效率。然而&#xff0c;即使你对信号进行了补零&#xff0c;FFT 计算后在补零部分可能会得到复数结果不…

医院信息化与智能化系统(5)

医院信息化与智能化系统(5) 这里只描述对应过程&#xff0c;和可能遇到的问题及解决办法以及对应的参考链接&#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图&#xff0c;可以试试PlantUML&#xff0c;告诉GPT你的文件结构&#xff0c;让他给你对应的…

python 文件防感染扫描

一、安装 首先&#xff0c;你需要安装 secplugs-python-client 库。你可以通过 pip 命令来安装&#xff1a; pip install secplugs-python-client确保你的 Python 环境已经正确设置&#xff0c;并且网络连接畅通&#xff0c;以便能够顺利安装。 二、基本用法 1. 初始化客户…

nosql课本习题

nosql题目 1. 文档数据库相比其他 NoSQL 的突出优势和特点是什么&#xff1f; 答案&#xff1a; 文档数据库的突出优势在于它的灵活性和可扩展性。不同于传统的关系型数据库&#xff0c;文档数据库允许存储半结构化和非结构化数据&#xff0c;每个文档可以有不同的字段&#x…

【优先算法】--双指针1

“一念既出&#xff0c;万山无阻。”加油陌生人&#xff01; 目录 1.双指针--移动零 2.双指针-复写零 ok&#xff0c;首先在学习之前&#xff0c;为了方便大家后面的学习&#xff0c;我们这里需要补充一个知识点&#xff0c;我这里所谓的指针&#xff0c;不是之前学习的带有…

二分查找_ x 的平方根搜索插入位置山脉数组的峰顶索引

x 的平方根 在0~X中肯定有数的平方大于X&#xff0c;这是肯定的。我们需要从中找出一个数的平方最接近X且不大于X。0~X递增&#xff0c;它们的平方也是递增的&#xff0c;这样我们就可以用二分查找。 我们找出的数的平方是<或者恰好X&#xff0c;所以把0~X的平方分为<X …

Leetcode—1279. 红绿灯路口【简单】Plus(多线程)

2024每日刷题&#xff08;186&#xff09; Leetcode—1279. 红绿灯路口 C实现代码 class TrafficLight { public:TrafficLight() {}void carArrived(int carId, // ID of the carint roadId, // ID of the road the car travels on. Can …

【Linux】僵尸进程和孤儿进程

一、僵尸进程 何为僵尸进程&#xff1f; 在 Unix/Linux 系统中&#xff0c;正常情况下&#xff0c;子进程是通过父进程创建的&#xff0c;且两者的运行是相互独立的&#xff0c;父进程永远无法预测子进程到底什么时候结束。当一个进程调用 exit 命令结束自己的生命时&#xff…

【Linux】计算机网络协议详解与通信原理探究

目录 1、协议 1.1.初识协议 1.2.协议分层 日常通信的例子&#xff1a; 1.3.OSI 七层模型 1.4.TCP/IP五层(或四层)模型 1.5.OS和网络之间的关系 1.6.协议的本质 2.局域网通信 2.1.什么是局域网&#xff1f; 2.2.关于报文相关基础知识 报文和协议的关系&#xff1a; …

传输层协议UDP详解

目录 一. 知识准备 1.1 传输层 1.2 重识端口号 二. UDP协议 三. UDP协议特点 一. 知识准备 1.1 传输层 前面已经讲过&#xff0c;HTTP协议是应用层协议&#xff0c;在此之前&#xff0c;我们短暂的认为HTTP是直接通过应用层与外界通信的。但是我们要知道&…

4本SCI/SSCI期刊更名,10月WOS更新!速看!

期刊动态 2024年10月科睿唯安期刊目录更新 2024年10月22日&#xff0c;科睿唯安更新了WOS期刊目录&#xff0c;此次更新&#xff0c;期刊被编辑除名11本&#xff0c;停止出版1本&#xff0c;4本更名&#xff0c;停产1本&#xff0c;新增63本。 剔除期刊 11本期刊被剔 Enginee…

go-zero系列-限流(并发控制)及hey压测

参考地址&#xff1a; go-zero系列-限流(并发控制)&#xff1a;https://go-zero.dev/docs/tutorials/service/governance/limiter hey地址&#xff1a;https://github.com/rakyll/hey1、压测工具hey下载安装&#xff1a; 会安装到GOPATH/bin目录下 go install github.com/ra…

AI未来会拥有人类的情感吗,情感计算领域进展如何?

AI在情感理解方面目前还处于相对初级的阶段,但已经有了一些令人鼓舞的进展。 一般来说,AI系统可以通过自然语言处理和计算机视觉技术来检测和分析人类的情感表现,但要真正理解背后的情感原因和动机还面临很大挑战。 目前在情感计算领域&#xff0c;研究者们已经取得了显著的进…

重生之“我打数据结构,真的假的?”--1.顺序表(无习题)

C语言中的顺序表详细总结 1. 概述 顺序表&#xff08;Sequential List&#xff09;是一种线性数据结构&#xff0c;用于存储具有相同数据类型的一组元素。顺序表采用一段连续的存储空间&#xff0c;使用数组来实现&#xff0c;能够高效地支持随机访问操作。在 C 语言中&#…

Unity--AssestBundles--热更新

使用Node.js搭建AssestBundle服务器并验证AB包热更新 一、服务器部分 使用NodeJs作为服务器&#xff0c; 使用Express为基础网页模版。 当然&#xff0c; 使用其他的FTP&#xff0c;http服务器也可以&#xff0c; 基础逻辑是存放资源的位置。 1.下载Node.js 下载地址:https…

AI动漫翻唱项目玩法拆解,起号涨粉咔咔猛,实操干货分享

最近&#xff0c;一种把AI技术和动漫翻唱结合起来的视频&#xff0c;在各大平台火了起来&#xff0c;成了社交媒体的新热门。 下面&#xff0c;我们就来聊聊这种视频的制作方法和赚钱技巧&#xff0c;希望能给你的副业加点料。 一、AI动漫翻唱视频的魅力 AI动漫翻唱视频能迅…

[Luogu 4630] APIO2018 铁人两项(广义圆方树)

铁人两项 求满足存在 x → y x \rightarrow y x→y 和 y → z y \rightarrow z y→z 的不相交简单路径的有序点对 ( x , y , z ) (x, y, z) (x,y,z) 的方案数。 即&#xff0c;选择的路径只经过同一个点至多一次。 线性做法。 广义圆方树 可以解决一些“每个点至多经过…

MySQL进阶之(十一)MySQL事务日志-redo log

十一、MySQL事务日志-redo log 11.1 Buffer Pool11.1.1 缓存的重要性11.1.2 InnoDB 的 Buffer Pool11.1.3 InnoDB 存储引擎线程 11.2 redo 日志引入11.3 redo 日志的好处和特点11.3.1 好处11.3.2 特点 11.4 redo 日志的组成11.5 redo 日志的整体流程11.6 redo 日志的刷盘策略11…