news 2026/7/7 17:44:11

【PCIe】在系统初始化阶段,为什么要枚举两次(BIOSOS)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【PCIe】在系统初始化阶段,为什么要枚举两次(BIOSOS)

声明

  • 🔥文章目的在于学习记录,知识分享。因个人能力有限:如有错误之处,请帮忙指出;如有疑问,欢迎随时交流
  • 🔥感谢“点评赞”,期待大家提出问题进行深度讨论。
  • 内容如涉及侵权,请及时联系我删除。

概要

在系统初始化阶段,一直疑惑PCIe的枚举到底需要几次?BIOS/UEFI和OS(Linux/Windows)是否都要做,是否都必须做,为什么必须做?

先说结论:必须要做,因为每个阶段的目的不一样。

BIOS/UEFI阶段

BIOS/UEFI阶段执行枚举的主要目的是从硬件的角度实现PCIe设备的扫描和硬件属性的扫描,包括mem空间的分配等。

这个阶段属于硬件扫描过程,需要保证将可用的设备扫描出来,并确认相关Cap(类似MSI/MSIX/Link width&Speed/SRIOV等特性),并且通过相关程序实现资源分配。

OS阶段

OS阶段主要是软件行为,目的是实现驱动加载的过程。主要通过获取设备的vendor ID、Device ID 、Subsystem ID等信息,执行相关软件的加载和初始化动作,给后续使用提供基础。

总结

PCIe的枚举在BIOS/UEFI和OS阶段都要执行,且目的不一样。一个着重于硬件背景,一个着重于软件背景。

参考文献

本文完,感谢大家阅读!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 15:12:12

EmotiVoice语音期待感营造提升营销转化

EmotiVoice:用情感化语音点燃用户期待,重塑营销转化路径 在电商大促的深夜,你收到一条语音通知:“恭喜您抽中万元礼包,请立即领取!” 如果这声音是机械平直的电子音,你可能随手就删了&#xff1…

作者头像 李华
网站建设 2026/7/7 9:57:11

18、Kubernetes 滚动更新、可扩展性与配额管理

Kubernetes 滚动更新、可扩展性与配额管理 在当今的云计算环境中,Kubernetes 作为一个强大的容器编排平台,为我们提供了许多自动化的功能,帮助我们更好地管理和扩展应用程序。本文将深入探讨 Kubernetes 提供的自动化 Pod 可扩展性、它对滚动更新的影响以及与配额的交互。 …

作者头像 李华
网站建设 2026/7/7 12:09:45

15、深入了解 POSIX 线程与嵌入式网络编程

深入了解 POSIX 线程与嵌入式网络编程 在多线程编程和嵌入式网络开发领域,POSIX 线程和网络套接字是非常重要的概念。下面将详细介绍 POSIX 线程的相关机制,以及嵌入式网络编程中套接字的使用。 一、POSIX 线程互斥锁优先级处理 在多线程环境中,当多个线程竞争共享资源时…

作者头像 李华
网站建设 2026/7/7 12:33:00

25、Kubernetes集群联邦与API定制全解析

Kubernetes集群联邦与API定制全解析 1. 多集群故障转移 在多集群环境中,联邦故障转移是一个复杂的问题。当联邦中的某个集群发生故障时,有几种方式可以将负载分配到其他集群: - 均匀分配 :将负载平均分配到其他集群。 - 启动新集群 :创建一个新的集群来承担故障集…

作者头像 李华
网站建设 2026/7/7 15:14:44

20、嵌入式Linux集成构建环境与配置详解

嵌入式Linux集成构建环境与配置详解 配置选项类型与关键字 在配置过程中,选项类型由以下关键字之一表示: - bool :选项有两个值,“y” 或 “n”。 - tristate :选项有三个值,“y”、“n” 和 “m”。 - choice :选项为列出的值之一。 - int :选项接受整数…

作者头像 李华
网站建设 2026/7/7 12:14:14

26、U-boot 命令与自由软件理念

U-boot 命令与自由软件理念 1. U-boot 命令介绍 U-boot 包含多种类型的命令,用于不同的操作,以下是详细介绍: 1.1 NAND 相关命令 命令 功能 nand info 显示可用的 NAND 设备 mtdparts 列出 NAND 分区 nand erase [clean] [,offset.,size.] 从指定偏移量开始擦除指…

作者头像 李华