手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

linux 用户空间如何读写PCI配置空间

时间:2024-10-13 04:55:59

pci是一种总线标准,总线就是计算机内部的通信通道,pci配置空间能够实现设备参数的自动配置,从而实现即插即用,要读写配置空间,可以通过编程实现,也可以通过linux自带的命令实现,编程一般通过将B/D/F转换成MMIO的地址,之后就可以通过MMIO的方式来访问,介绍起来过于复杂,因此这里建议使用linux自带的命令完成读写。

一、lspci命令读取PCI设备配置空间

1、lspci顾名思义列出pc坡纠课柩i设备,这个命令有一个-xxx的参数,可以列出PCI设备的配置空间内容,如下图所示。注意:弋讥孜求使用-xxx参数必须得root权限,这里通过sudo命令提升权限。技巧:一般使用lspci、setpci等命令,直接使用root权限即可,因为命令执行过程不会提示权限不足,也会显示信息,只是显示的不全,为了保险起见,建议直接使用root权限。

linux 用户空间如何读写PCI配置空间

2、PCI配置空间一般256字节的大小,前64个字节是固定的,就是PCI规范已经设定好的,因此又称为配置空间头。

linux 用户空间如何读写PCI配置空间

3、用的更多的情况是直接读取PCI设备配置空间的头部信息。它使用的参数是-x。

linux 用户空间如何读写PCI配置空间

4、除此之外,孀晏弁钾也可以使用lspci命令的-s参数,指明一个pci设备,来查看其配置空间的内容,比如下面的命令指明查看00:03.0这个pci设备的配置空间。名称不要觉得怪异,00:03.0名称的含狲辍嗨嘴义如下:00:总线号,一个计算机可以有多个总线。03:设备号,也可以称为pci插槽号,每个插槽对应一个设备嘛。0:功能号,所谓功能就是一些标志位,用于说明从哪里读写数据。

linux 用户空间如何读写PCI配置空间

5、要获得PCI设备的代号,可以直接执行lspci命令。

linux 用户空间如何读写PCI配置空间

二、setpci向pci设备配置空间写入数据

1、setpci命令可以向pci设备的配置空间写入数据,举例来说,以00:00.0这个pci设备为例,先查看其内容如下图所示,注意0x60位置处的内容,没有修改之前0。

linux 用户空间如何读写PCI配置空间

2、接下来我们通过setpci命令向偏移量0x60处,写入1个字节的数据,将0变为0x0f。sudo setpci -s 00:00.0 60.B=f命令说明:sudo:提升root权限-s:与lspci命令类似,用于指明pci设备60.B:60是从0x60处开始,B说明要写入字节数据。=f:要写入的数据

linux 用户空间如何读写PCI配置空间

3、写入完毕,再次通过lspci命令查看,已经修改成功了。

linux 用户空间如何读写PCI配置空间
© 手抄报圈