| |||
此文章摘抄自微信公众号"芯塾科技",如有侵权,请联系删除,谢谢!
1.文章坚持实际工作中有所帮助---实际工作中遇到问题可查阅。
2.章节内容规划具有连贯性。lspci-setpci-PCIe Configuration Space--next。
3.文章以文字和视频形式发布,建议大家视频和文章结合查阅。
4.视频发布:公众号、B站、抖音,搜寻“芯塾科技”可观看。
5.文章发布: 公众号、CSDN、知乎、B站,搜寻“芯塾科技”可浏览。
1.CPU访问外部设备存在内存映射(memory mapped)和 IO映射(I/O Mapped)两种方式。
2.内存映射,外部设备的存储单元<寄存器/RAM>作为CPU系统内存空间的一部分,CPU可以像访问内存一样访问外部设备存储单元。
3.IO映射,外部设备的存储单元与内存属于不同的体系,访存指令不能访问外部设备的存储空间,x86 CPU采用IN/OUT指令。
3.CPU访问PCIe设备配置空间方式
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读/写报文。
8.Configuration Adress Port-配置地址索引格式
9.Example
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。
5.ECAM在系统存储器空间划出256MB空间,256M空间映射到系统所有PCIe设备的配置空间<256*32*8*4KB=256MB>。
6.访问目标PCIe设备配置空间,CPU发起存储器地址访问格式。
7.CPU访问256MB 存储器空间,RC内部识别为配置访问,并将Mem请求转换为PCIe配置报文。
---------------------------------------------------------
---------------------------------------------------------
文章坚持-工作中查阅可解决实际问题
您的点赞-收藏-转发-评论是我们坚持原创的动力
欢迎关注微信公众号"芯塾科技"
视频发布平台:B站/公众号/抖音,可搜索"芯塾科技"观看