pci设备学习笔记

本文探讨了Linux系统中PCI设备的工作原理,重点分析了PCI总线的层级结构,如何通过PCI桥连接多个总线,以及PCI设备的逻辑设备概念。在内核启动时,pci_driver_init和pci_subsys_init函数负责注册PCI总线和设备探测。文章深入讲解了pci_scan_child_bus函数,该函数用于扫描PCI总线上的设备,重点关注设备号和功能号的组合devfn。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

水平有限,错误难免 ^_^

参考资料:

1) 《Linux内核源代码情景分析》

2)  Linux内核源代码(2.6.32)。



本文只讨论比较简单的软硬件配置场景。


系统中的第一条PCI总线(即主PCI总线),挂在“宿主—PCI桥”上。

CPU通过“宿主——PCI桥”就可以访问主PCI总线了。

PC机中通常只有一个“宿主—PCI桥”。但是,通过引入其他类型的PCI桥,可以将更多的总线(可以是PCI总线,也可以是ISA总线)连接到主PCI总线上来。这样一来,系统中就可以有多条总线存在了。

下层PCI总线也可以进一步通过PCI桥,将更下一层的PCI总线连接进来。

在上层总线看来,PCI桥也是连接到本总线上的一个设备。

主PCI总线的编号是0,其他的pci总线编号则从1开始依次递增。


每一条PCI总线,可以挂接32个PCI总线接口芯片。每个PCI设备(注意,这里的设备概念后面需要进一步解释)都是通过一个PCI总线接口芯片连接到PCI主线上。
这样的话,每条PCI总线,最大支持32个设备。设备编号0~31
设备可以固化在主板上,也可以做成一个PCI接口卡,通过一个PCI插槽连接到系统中。
这样的话,每个PCI插槽对应一个PCI总线接口芯片。


上面说了,这里提到的设备的概念需要进一步解释。这里就来说说吧。

PCI总线上的一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值