电子产业一站式赋能平台

PCB联盟网

搜索
查看: 29|回复: 0
收起左侧

PCIe 配置空间结构深度解析

[复制链接]

429

主题

429

帖子

5784

积分

四级会员

Rank: 4

积分
5784
发表于 2025-5-28 22:58:00 | 显示全部楼层 |阅读模式

f0acbaskwd364064002750.jpg

f0acbaskwd364064002750.jpg

1.PCIe每日一问简介1.文章坚持实际工作中有所帮助---实际工作中遇到问题可查阅。
2.章节内容规划具有连贯性。lspci-setpci-PCIe Configuration Space--next。
3.文章以文字和视频形式发布,建议大家视频和文章结合查阅。
4.视频发布:公众号、B站、抖音,搜寻“芯塾科技”可观看。
5.文章发布: 公众号、CSDN、知乎、B站,搜寻“芯塾科技”可浏览。
2.PCIe 配置空间结构深度解析
1.Q1:什么是PCIe配置空间?2.PCIe配置空间是 PCI/PCIe 设备的一组标准化寄存器,用于存储设备的硬件信息、资源需求和功能配置。
3.PCIe配置空间是PCI/PCIe 设备与系统(如操作系统或 BIOS)之间交互的核心机制,支持设备的发现、资源分配和功能控制等。
4.Q2:PCIe配置空间结构?
5.PCIe配置空间为4KB大小,采用链表管理。
本文解析PCIe配置空间的结构,从PCI到PCIe的演变。

3.PCI Configuration Space Header  
1.PCI协议规定64字节为PCI Configuration Space Header,  结构如下图所示。

0tu14p1ps4064064002850.png

0tu14p1ps4064064002850.png

2.PCI Configuration Space Header 前16字节定义都是一样, 对于所有PCI设备。
3.PCI Configuration Space Header 后48字节(10h-3fh),根据设备类型(端点设备、桥设备、根复合体等), 存在Type 0(端点设备)和 Type 1(桥设备)两种格式。
4.PCI Configuration Space Header 后48字节,存在Type 0/ Type 1格式通过PCI Configuration Space Header “header Type Register(0eh)”寄存器指示。

ci51xqu3wpw64064002950.png

ci51xqu3wpw64064002950.png

5.Type0/Type1格式

vxci1ullx1y64064003051.png

vxci1ullx1y64064003051.png


4.PCI Capability Space
1.PCI Configuration Space Header(前 64 字节)仅支持固定功能,无法满足不断扩展的需求(如电源管理、MSI中断等)。
2.PCI 2.1 标准引入能力寄存器,允许设备在配置空间中动态声明支持的可选功能。
3.PCI能力寄存器通过链表管理,每个能力结构包含一个能力ID和一个指向下一个能力结构的指针。

rmpxhtcxd0164064003151.png

rmpxhtcxd0164064003151.png

4lgydyumjij64064003251.png

4lgydyumjij64064003251.png

4.PCI Configuration Space Header “Capability Pointer”寄存器指向能力寄存器的起始位置。

x3nq1sa1we164064003351.png

x3nq1sa1we164064003351.png

u3bnl4bvcrk64064003451.png

u3bnl4bvcrk64064003451.png

5.PCI能力寄存器8位ID由PCI-SIG分配。

nasckzuviit64064003551.png

nasckzuviit64064003551.png

5.PCI Configuration Space
1.PCI配置空间由PCI Configuration Space Header和PCI Capability Space构成。
2.PCI配置空间大小为256 Byte,配置寄存器的布局是标准化的,64 Byte PCI Configuration Space Header,192 Byte PCI Capability Space。
3.PCI设备256Byte配置空间,前64字节是标准化的,其余的则是与设备相关的。

faq1icsypd364064003651.png

faq1icsypd364064003651.png


6.PCIe Configuration Space
1.PCIe配置空间为4096 Byte(4KB空间),PCI配置空间为256 Byte。
2.PCIe Configuration Space分为 PCI 兼容区域、 PCIe 扩展配置空间。
3.PCIe在PCI Capability 新增PCIe Capability寄存器。
4.PCIe Configuration Space结构。

1j5gqr4fph564064003751.png

1j5gqr4fph564064003751.png


7.PCIe Capability Register
1.PCIe 在 PCI 兼容配置空间(前 256 字节)中定义了PCIe  Capability Register。
2.PCIe设备需要支持PCIe Capability Register。
3.PCIe Capability Register结构。

kthbvx1dsvr64064003851.png

kthbvx1dsvr64064003851.png

4.PCIe Capability ID。

xupk5t3oi4y64064003951.png

xupk5t3oi4y64064003951.png


8.PCIe Extended Capability Space
1.PCIe扩展能力寄存器位于设备配置空间的0x100到0xfff字段,以链表形式管理。

2.PCIe扩展能力寄存器格式。

cr2ugymd5es64064004051.png

cr2ugymd5es64064004051.png

1oyk442zgy464064004151.png

1oyk442zgy464064004151.png

3.PCe扩展能力寄存器16位ID由PCI-SIG分配。

tyurqml2g4f64064004251.png

tyurqml2g4f64064004251.png

9.Summary
1.PCI Configuration Space Header
2.PCI Capability Space
3.PCI Configuration Space  
5.PCIe Capability Register
5.PCIe Extended Capability Space
6.PCIe Configuration Space

end

一口Linux

关注,回复【1024】海量Linux资料赠送
精彩文章合集
文章推荐
?【专辑】ARM?【专辑】粉丝问答?【专辑】所有原创?【专辑】linux入门?【专辑】计算机网络?【专辑】Linux驱动?【干货】嵌入式驱动工程师学习路线?【干货】Linux嵌入式所有知识点-思维导图
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条


联系客服 关注微信 下载APP 返回顶部 返回列表