飞飞学飞的个人空间 https://blog.eetop.cn/1585176 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

PCIe配置空间访问方法深度解析

已有 678 次阅读| 2025-5-25 12:02 |个人分类:PCIe每日一问|系统分类:芯片设计| PCIe, Linux, Port, IO, ECAM

此文章摘抄自微信公众号"芯塾科技",如有侵权,请联系删除,谢谢!


1.jpg


1.PCIe每日一问简介

1.文章坚持实际工作中有所帮助---实际工作中遇到问题可查阅。

2.章节内容规划具有连贯性。lspci-setpci-PCIe Configuration Space--next。

3.文章以文字和视频形式发布,建议大家视频和文章结合查阅。

4.视频发布:公众号、B站、抖音,搜寻“芯塾科技”可观看。

5.文章发布: 公众号、CSDN、知乎、B站,搜寻“芯塾科技”可浏览。



2.cpu访问外部设备

1.CPU访问外部设备存在内存映射(memory mapped)和 IO映射(I/O Mapped)两种方式。

2.内存映射,外部设备的存储单元<寄存器/RAM>作为CPU系统内存空间的一部分,CPU可以像访问内存一样访问外部设备存储单元

2.jpg3.IO映射,外部设备的存储单元与内存属于不同的体系,访存指令不能访问外部设备的存储空间,x86 CPU采用IN/OUT指令。

3.jpg

5.IO映射,计算机技术的发展,PCI设备存储单元具有MB大小,IO映射的方式逐渐不能满足需求,I/O指令的地址空间都是很小的,比如x86 IO空间大小为64KB。

6.X86具有内存映射和IO映射,arm、risc-v、PowerPC仅有内存映射


3.CPU访问PCIe设备配置空间方式 

1.PCIe 设备4KB配置空间访问需要通过PCIe config package<配置请求报文>。
2.CPU不能直接发出PCIe配置请求报文访问PCIe设备配置空间,CPU只能使用memory和IO<x86>指令生成mem/IO请求,访问外部设备的存储器/IO空间。
3.CPU发出的memory/IO请求,Root Complex转换为PCIe配置请求报文。
4.jpg

4.PCIe配置空间访问

   PCI兼容的配置访问机制Port IO。

   PCIe增强的配置访问机制Memory-mapped IO---ECAM。



4.PCI兼容的配置访问机制-Port IO 

1.Root Complex Host Bridge中设置两个32位IO寄存器。

2.Configuration Adress Port, IO地址为CF8h-CFBh。

3.Configuration Data Port, IO地址为CFCh-CFFh。

4.访问PCI兼容的配置空间Flow。

5.发送预访问PCIe的Bus/Deivce/Function以及寄存器地址命令。

CPU通过32位IO指令写Root Complex 中Host Bridge内 Configuration Adress IO寄存器。

6.发送读/写 PCI兼容配置空间命令。

CPU通过1/2/4 Byte读/写 Root Complex 中Host Bridge Configuration Data Port IO寄存器。

7.RC根据5/6步骤将IO端口操作转换为PCIe 1/2/4Byte的PCIe Config读/写报文

5.jpg8.Configuration Adress Port-配置地址索引格式

6.jpg

9.Example

7.jpg

5.PCIe增加的配置访问机制-ECAM 

1.Enhanced Configuration Access Mechanism(ECAM)为PCIe增加的配置空间访问机制。

2.PCI兼容的配置访问机制访问PCIe配置空间有无问题? 

3.PCIe配置空间为4KB,Port IO最大访问空间为256Byte。

4.Multi-core、multi-thread CPU Port IO访问存在竞争问题

线程A配置Configuration Address Port,配置Configuration Data Port之前没 有办法避免线程B配置Configuration Address Port。

8.jpg
5.ECAM在系统存储器空间划出256MB空间,256M空间映射到系统所有PCIe设备的配置空间<256*32*8*4KB=256MB>。

9.jpg6.访问目标PCIe设备配置空间,CPU发起存储器地址访问格式。

10.jpg7.CPU访问256MB 存储器空间,RC内部识别为配置访问,并将Mem请求转换为PCIe配置报文。

11.jpg

---------------------------------------------------------

---------------------------------------------------------

文章坚持-工作中查阅可解决实际问题

您的点赞-收藏-转发-评论是我们坚持原创的动力

欢迎关注微信公众号"芯塾科技"

视频发布平台:B站/公众号/抖音,可搜索"芯塾科技"观看




点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 7

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 0

    评论
  • 141

    访问数
关闭

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

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-6 03:10 , Processed in 0.017852 second(s), 8 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部