Linux显示PCI设备

Linux显示PCI设备


youhaidong@youhaidong-ThinkPad-Edge-E545:~$ lspci -tv
-[0000:00]-+-00.0  Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Root Complex
           +-01.0  Advanced Micro Devices, Inc. [AMD/ATI] Richland [Radeon HD 8650G]
           +-01.1  Advanced Micro Devices, Inc. [AMD/ATI] Trinity HDMI Audio Controller
           +-02.0-[01]----00.0  Advanced Micro Devices, Inc. [AMD/ATI] Sun PRO [Radeon HD 8570A/8570M]
           +-04.0-[02]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
           +-05.0-[03]----00.0  Broadcom Corporation BCM43142 802.11b/g/n
           +-07.0-[04]----00.0  Realtek Semiconductor Co., Ltd. RTS5229 PCI Express Card Reader
           +-10.0  Advanced Micro Devices, Inc. [AMD] FCH USB XHCI Controller
           +-10.1  Advanced Micro Devices, Inc. [AMD] FCH USB XHCI Controller
           +-11.0  Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode]
           +-12.0  Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller
           +-12.2  Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller
           +-13.0  Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller
           +-13.2  Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller
           +-14.0  Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller
           +-14.2  Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller
           +-14.3  Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge
           +-14.4-[05]--
           +-18.0  Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 0
           +-18.1  Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 1
           +-18.2  Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 2
           +-18.3  Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 3
           +-18.4  Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 4
           \-18.5  Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Function 5


### Linux 系统下访问 PCI 设备的方法及接口 在 Linux 系统中,访问 PCI 设备可以通过多种方式实现。以下是几种常见的方法及其对应的接口: #### 方法一:通过 `/proc` 文件系统访问 Linux 提供了一个名为 `procfs` 的文件系统,允许用户直接读取和修改某些硬件资源的状态。对于 PCI 设备而言,可以直接通过 `/proc/bus/pci` 路径查看设备的相关信息并对其进行操作[^1]。 ```bash cat /proc/bus/pci/devices ``` 上述命令能够显示当前系统上所有已注册的 PCI 设备的信息,包括其供应商 ID、设备 ID 和基址寄存器等内容。如果需要进一步调整这些参数,则可通过写入特定数据至对应路径完成设置。 #### 方法二:借助 ioctl 接口控制硬件行为 除了基于文件系统的交互之外,更灵活的方式是编写自定义驱动程序,在其中定义一组用于处理外部请求的操作集合——即所谓的 file_operations 结构体成员函数列表。当某个进程调用了 open(), read(), write() 或者 ioctl() 函数作用于该类特殊文件描述符之上时,相应的回调会被触发执行实际逻辑[^2]。 特别值得一提的是 demo_ioctl() 这样的功能模块设计模式非常适合用来暴露底层细节给高层应用层使用而无需完全公开整个驱动源码本身;同时也方便日后维护升级因为只需改动少量地方即可满足新增需求或者修复缺陷等问题。 #### 方法三:针对非桥型 (Agent 类型) PCI 设备的具体配置流程 考虑到不同种类别的组件可能具有各自独特的初始化步骤以及运行期间所需的额外支持服务等因素影响,因此有必要区分对待各类目标对象以便采取最优策略达成预期效果. 具体来说就是说如果是属于终端节点性质而非中间转发枢纽角色的话那么就需要按照如下顺序来进行必要的准备工作: 1. **分配资源**: 明确指定中断号IRQ编号以及其他必要属性值. 2. **映射物理地址到虚拟空间范围内**,使得后续可以正常寻址访问相关联存储单元位置. 3. **加载固件镜像**(如果有). 4. 启动传输通道使能标志位开关状态切换从而正式进入工作模式.[^3] #### 方法四:理解 CPU 地址转换机制的重要性 最后值得注意的一点在于任何一次有效的通信都离不开准确无误的目标定位过程。这就涉及到前面提到过的关于如何确定最终送达目的地这一环节的关键知识点解释说明部分了。简单概括起来讲就是在复杂多级互联网络环境下为了确保每条消息都能够被正确投递给预定接收方就必须依赖一套完善的路由算法配合高效的数据包封装解封技术共同协作才能顺利完成整个任务使命。而在本案例场景当中体现出来的主要表现形式便是通过对原始输入指令序列加以解析计算得出目的端口号之后再经过一系列复杂的运算变换得到最终的实际可操作实体实例引用指针变量表示法表达出来而已罢了[^4]. ```c #include <linux/io.h> void example_write_to_pci(u8 value, u16 port){ outb(value,port); } u8 example_read_from_pci(u16 port){ return inb(port); } ``` 以上代码片段展示了最基本的直接编程 I/O 操作范例演示情况介绍完毕结束语句标记处放置此处作为总结陈词收尾之用意所在也请各位读者朋友们多多批评指正谢谢大家的支持鼓励!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值