python通过pcie读数据_怎么读取PCIe设备的VPD信息?

本文介绍了如何通过PCIe读取设备的VPD(Vital Product Data),详细解析了VPD数据的存储位置,访问方式,以及如何在Linux系统下利用lspci命令解析VPD数据,包括部件号、序列号等关键信息的查找方法。
摘要由CSDN通过智能技术生成

VPD是什么?Vital Product Data(VPD),重要产品数据,是与一组特定硬件或软件相关的配置和信息数据的集合。VPD存储该设备的一些重要信息,例如部件号(part number),序列号(serial number),以及设备指定的一些数据。并非系统连接的所有设备都提供VPD,但通常可从PCI和SCSI设备获得。并行ATA和USB设备也提供类似的数据,但不叫VPD。==>大致翻译自wiki.

本文只考虑PCIe设备的VPD。

VPD在哪里?

VPD是可选的。PCI spec没有规定PCI设备必须要实现VPD,所以其实很多PCI设备都没有提供VPD。

VPD数据一般居住在eeproms中,且系统一般提供I²C,用来访问该eeproms,这种情况下可直接根据设备spec,使用I²C即可取得VPD数据。如果没有I²C的话,还能拿到VPD数据吗?答案当然是可以的。PCI 3.0 spec 中附录I讲的都是VPD,提供了VPD的设备一般都可以在PCI配置空间找到VPD的 Capability结构。如下图(请忽略马赛克),是一个PCIe设备的VPD数据,是在linux系统下使用lspci -s xx:xx.xx -vvv解析出来的,lspci解析出来的vpd数据

其中[48]表示的vpd capability结构的起始地址是在该设备的PCIe配置空间的offset 0x48处,如下图,某网卡的PCIe配置空间

offset 0x48 处的值是03,查找PCI spec,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值