linux 用户空间如何读写PCI配置空间
来源:网络收集 点击: 时间:2024-04-05lspci顾名思义列出pci设备,这个命令有一个-xxx的参数,可以列出PCI设备的配置空间内容,如下图所示。
注意:使用-xxx参数必须得root权限,这里通过sudo命令提升权限。
技巧:一般使用lspci、setpci等命令,直接使用root权限即可,因为命令执行过程不会提示权限不足,也会显示信息,只是显示的不全,为了保险起见,建议直接使用root权限。

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

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

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

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

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

接下来我们通过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:要写入的数据

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

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_433433.html