广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

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

    来源:网络收集  点击:  时间:2024-04-05
    【导读】:
    pci是一种总线标准,总线就是计算机内部的通信通道,pci配置空间能够实现设备参数的自动配置,从而实现即插即用,要读写配置空间,可以通过编程实现,也可以通过linux自带的命令实现,编程一般通过将B/D/F转换成MMIO的地址,之后就可以通过MMIO的方式来访问,介绍起来过于复杂,因此这里建议使用linux自带的命令完成读写。一、lspci命令读取PCI设备配置空间1/5分步阅读

    lspci顾名思义列出pci设备,这个命令有一个-xxx的参数,可以列出PCI设备的配置空间内容,如下图所示。

    注意:使用-xxx参数必须得root权限,这里通过sudo命令提升权限。

    技巧:一般使用lspci、setpci等命令,直接使用root权限即可,因为命令执行过程不会提示权限不足,也会显示信息,只是显示的不全,为了保险起见,建议直接使用root权限。

    2/5

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

    3/5

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

    4/5

    除此之外,也可以使用lspci命令的-s参数,指明一个pci设备,来查看其配置空间的内容,比如下面的命令指明查看00:03.0这个pci设备的配置空间。名称不要觉得怪异,00:03.0名称的含义如下:

    00:总线号,一个计算机可以有多个总线。

    03:设备号,也可以称为pci插槽号,每个插槽对应一个设备嘛。

    0:功能号,所谓功能就是一些标志位,用于说明从哪里读写数据。

    5/5

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

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

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

    2/3

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

    3/3

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

    LINUXLSPCISETPCI配置空间
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_433433.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 13:17:07  耗时:0.033
    0.0335s