[转]PCI的Linux实现及其驱动
PCI的Linux实现及其驱动
在Linxu下面driver/pci目录是PCI的初始化和bus的驱动,实现了dev和bus的常用的services
在driver其他目录那,比如ide和net目录下面,有相应的具体pci设备的驱动。
一个完整的PCI驱动必要的数据结构都有:
pci_driver
这个数据结构在文件include/linux/pci.h里,这是Linux内核版本2.4之后为新型的PCI设备驱动程序所添加的,其中最主要的是用于识别设备的id_table结构,以及用于检测设备的函数probe( )和卸载设备的函数remove( )
pci_dev
这个数据结构也在文件include/linux/pci.h里,它详细描述了一个PCI设备几乎所有的硬件信息,包括厂商ID、设备ID、各种资源等:
在PCI驱动中常见的由Linux所提供的services例程有:
注册/注销PCI上的设备
pci_register_driver()
pci_unregister_driver()
找到指定PCI设备:
pci_get_device()
pci_get_class()
pci_get_subsys()
启用/禁用PCI设备
pci_enable_device()
pci_disable_device()
寻址和中断
request_io_region()
request_mem_region()
配置空间访问相关:
pci_(read|write)_config_(byte|word|dword)
Misc.
pci_enable_device()
pci_set_master()
pci_set_swi()
一个完整的PCI驱动编写框架为:
Code
在Linxu下面driver/pci目录是PCI的初始化和bus的驱动,实现了dev和bus的常用的services
在driver其他目录那,比如ide和net目录下面,有相应的具体pci设备的驱动。
一个完整的PCI驱动必要的数据结构都有:
pci_driver
这个数据结构在文件include/linux/pci.h里,这是Linux内核版本2.4之后为新型的PCI设备驱动程序所添加的,其中最主要的是用于识别设备的id_table结构,以及用于检测设备的函数probe( )和卸载设备的函数remove( )
pci_dev
这个数据结构也在文件include/linux/pci.h里,它详细描述了一个PCI设备几乎所有的硬件信息,包括厂商ID、设备ID、各种资源等:
在PCI驱动中常见的由Linux所提供的services例程有:
注册/注销PCI上的设备
pci_register_driver()
pci_unregister_driver()
找到指定PCI设备:
pci_get_device()
pci_get_class()
pci_get_subsys()
启用/禁用PCI设备
pci_enable_device()
pci_disable_device()
寻址和中断
request_io_region()
request_mem_region()
配置空间访问相关:
pci_(read|write)_config_(byte|word|dword)
Misc.
pci_enable_device()
pci_set_master()
pci_set_swi()
一个完整的PCI驱动编写框架为:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)