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

news2024/10/22 12:05:47

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.coloradmin.cn/o/2220785.html

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

相关文章

沈阳乐晟睿浩科技有限公司技术创新,奠定坚实基础

在当今数字经济蓬勃发展的时代&#xff0c;电子商务以其独特的魅力和无限潜力&#xff0c;正深刻改变着人们的消费习惯与商业模式。在这场变革中&#xff0c;沈阳乐晟睿浩科技有限公司凭借其敏锐的市场洞察力、强大的技术实力以及前瞻性的战略眼光&#xff0c;迅速崛起&#xf…

Java爬虫:获取数据的入门详解

在数字化时代&#xff0c;数据已成为最宝贵的资产之一。无论是市场研究、客户洞察还是产品开发&#xff0c;获取大量数据并从中提取有价值的信息变得至关重要。Java&#xff0c;作为一种成熟且功能强大的编程语言&#xff0c;为编写爬虫提供了强大的支持。Java爬虫可以帮助我们…

月入30万!用AI做养生赚麻了,全网最全最详细的变现教程

现在不养生&#xff0c;将来养医生&#xff01; 秋冬将至&#xff0c;又到了宝子们养生意识季节性觉醒的时间了&#xff0c;这时候&#xff0c;网上关于养生的内容搜索量激增&#xff0c;也催生了AI养生自媒体创作的热潮。 比如这位博主采用养生文案搭配AI简笔画的形式&#…

拥抱新质生产力 | 大势智慧亮相第12届中国测绘地理信息技术装备博览会

10月15日—17日&#xff0c;由中国测绘学会主办的2024中国测绘地理信息科学技术年会暨中国测绘地理信息技术装备博览会在河南省郑州市隆重举行。 10月15日&#xff0c;第12届中国测绘地理信息技术装备博览会在郑州国际会展中心盛大开幕。 大势智慧CTO张帆受邀出席博览会开幕式…

pdman在关系图中展示表的后排字段

1.当想在关系图中通过箭头指向来表明表与表之间的关系时&#xff0c;发现对应关联表的关联字段不展示&#xff08;原表该字段展示在后排&#xff0c;关系图只展示前排字段&#xff09; 2.找到对应表&#xff0c;对该字段手动设置可见 3.保存后再次进入关系图即可看到 3.1 3.2…

LabVIEW程序员可以从哪几个方面提升自己?有没有详细的路线图?

作为一名LabVIEW程序员&#xff0c;要在快速发展的技术领域保持竞争力并不断提升自己&#xff0c;需要从多个方面进行持续的学习和实践。下面我将为你详细说明LabVIEW程序员提升自己的几个关键方向&#xff0c;并给出具体的成长路线图。 1. 夯实基础&#xff1a;掌握LabVIEW的…

解决mac ssh端终端只有黑白颜色的问题

主要是因为没有开启颜色配置。修改下文件即可 cd ~ vi .zshrc 内容如下 export LS_OPTIONS--colorauto export CLICOLORYes export LSCOLORSExgxcxdxcxegedabagGxGx 关闭终端后重登录&#xff0c;这下有颜色了好看了 配色&#xff1a;目录蓝 可执行绿 软链青 颜色配置 详…

MyBatis入门之一对一关联关系(示例)

【图书介绍】《SpringSpring MVCMyBatis从零开始学&#xff08;视频教学版&#xff09;&#xff08;第3版&#xff09;》-CSDN博客 《SpringSpring MVCMyBatis从零开始学(视频教学版)&#xff08;第3版&#xff09;》(杨章伟&#xff0c;刘祥淼)【摘要 书评 试读】- 京东图书 …

CTFHUB技能树之SQL——字符型注入

开启靶场&#xff0c;打开链接&#xff1a; 直接指明是SQL字符型注入&#xff0c;但还是来判断一下 &#xff08;1&#xff09;检查是否存在注入点 1 and 11# 返回正确 1 and 12# 返回错误 说明存在SQL字符型注入 &#xff08;2&#xff09;猜字段数 1 order by 2# 1 order…

InnoDB引擎(架构,事务原理,MVCC详细解读)

目录 架构分析 逻辑存储结构​ 内存结构​ Buffer Pool​ ChaneBuffer 自适应哈希​ LogBuffer​ 磁盘结构​ 后台线程​ 事务原理​ redolog日志 undolog日志​ MVCC​ 三个隐藏字段​ undolog版本链 readview​ RC(读已提交原理分析)​ RR(可重复读原理分析…

MySQL 数据库的备份与恢复:最佳实践与深度探讨

MySQL 数据库的备份与恢复&#xff1a;最佳实践与深度探讨 在现代应用程序和企业系统中&#xff0c;数据库是其核心组件之一&#xff0c;负责存储和管理大量的关键数据。MySQL 作为一种广泛应用的开源数据库管理系统&#xff0c;支持高性能和可扩展性&#xff0c;被广泛应用于…

aws 把vpc残留删除干净

最近忘了把vpc 删干净导致又被收了冤大头钱 在删除vpc 的收发现又eni在使用&#xff0c;但是忘了是哪个资源在占用 先用命令行把占用的资源找出来停掉 使用 AWS 命令行界面&#xff08;CLI&#xff09;来查看 VPC 的使用情况 列出子网&#xff1a; aws ec2 describe-subnets …

每日一道算法题(Leetcode 20)

Whats past is prologue. 凡是过去&#xff0c;皆为序章。 题目 分析 1. 我们可以用栈的结构来解决这道题。 2. 我们使用while循环&#xff0c;每次读取字符串中一个元素进行操作&#xff0c;直到最后读取到 \0为止。 3. 如果遇见 (, [ ,{ 这三种左括号&#xff0c;则把该左…

SWAT-MODFLOW地表水与地下水耦合技术——建议收藏!

原文链接&#xff1a;SWAT-MODFLOW地表水与地下水耦合技术——建议收藏&#xff01;https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247623317&idx1&sn87516da827641ffd124519f929e5da26&chksmfa8da372cdfa2a643b7b806b806b31e025382b9896723d891ffd030…

【Dash】feffery_antd_components 按钮组件的应用

一、feffery_antd_componenet 中的 AntdFloatButton 和 AntdFloatButtonGroup AntdFloatButton 和 AntdFloatButtonGroup 是两个用于创建悬浮按钮和悬浮按钮组的组件。 AntdFloatButton 是单个悬浮按钮组件&#xff0c;它提供了多种属性来定义按钮的外观及行为。AntdFloatBut…

2024双十一最建议买的东西有哪些?双11购物清单大全分享

双十一即将来临&#xff0c;各大品牌都推出了令人心动的优惠活动&#xff0c;让我们能够以更加实惠的价格拥有心仪的好物。其中数码家电的产品&#xff0c;也是迎来了一波降价高潮&#xff0c;因此对于数码家电爱好者而言&#xff0c;双十一是入手的绝佳时机&#xff01;本期我…

HTML+CSS实现点赞效果

效果演示 HTMLCSS实现点赞效果 HTML <div class"heart-container" title"Like"><input type"checkbox" class"checkbox" id"Give-It-An-Id"><div class"svg-container"><svg viewBox&qu…

AD9680(adc直采芯片)使用说明

写这篇文章之前我是没有使用过AD9680的芯片&#xff0c;但是使用过GMS011芯片&#xff08;是国内24S&#xff09;下的公司出来的芯片&#xff0c;寄存器和管脚全对标。 在这里我就大概说一下芯片的说用方法 一、硬件设计 该芯片支持双通道射频直采 支持协议JESD204B 14位 采样…

深度学习面试笔试之前向神经网络-多层感知器、损失函数、反向传播

深度学习面试笔试之前向神经网络-多层感知器、损失函数、反向传播 1. 什么是神经网络1.1 什么是感知器1.2 神经网络的结构1.3 为什么神经网络具有非线性切分能力 2. 神经网络的计算过程2.1 计算过程2.2 随机初始化模型参数2.3 激活函数2.3.1 激活函数有哪些2.3.2 优缺点2.3.3 为…