当前位置: 技术问答>linux和unix
请问大家:在LINUX环境下,如何获得PCI设备的配置空间的地址?
来源: 互联网 发布时间:2016-02-14
本文导语: 现在有个PCI设备,比如说网卡,现在需要知道配置空间的6个基地址寄存器的值分别是多少? 怎么实现呢? 我查了下,似乎没有直接的函数啊。。。 | 如果要做pci驱动,首先你得确定你硬件...
现在有个PCI设备,比如说网卡,现在需要知道配置空间的6个基地址寄存器的值分别是多少?
怎么实现呢?
我查了下,似乎没有直接的函数啊。。。
怎么实现呢?
我查了下,似乎没有直接的函数啊。。。
|
如果要做pci驱动,首先你得确定你硬件是好的并且能在你的linux系统下找到,上面命令就是确人你的pci硬件一些命令和参数,先看看Linux Device Drivers 3的pci那章..
可以参考网卡驱动的8139cp的驱动,应该在内核源码有8139cp.c的文件..
可以参考网卡驱动的8139cp的驱动,应该在内核源码有8139cp.c的文件..
|
很多pci配置空间的内容在驱动.probe被调用的时候已经由内核读到pci_dev的结构中了,
另外,有sysfs的话,读sysfs下设备对应目录中的config文件就可得到所有内容
另外,有sysfs的话,读sysfs下设备对应目录中的config文件就可得到所有内容
|
如果你想写驱动的话,用户空间的信息没有啥意思,你可以随便在内核里面找个PCI驱动的初始化函数,看看一个典型的PCI设备初始化需要调用什么接口。基本上,现在内核里的PCI抽象已经非常完备了,一般在驱动加载之前,内核已经为存在的PCI设备创建相应的pci_dev结构,你需要做的就是得到这个结构,然后或者从dev->resources或者是pci_read_config_***来得到BAR的信息