PCI驱动程序(国嵌笔记)

PCI驱动程序


1.使用struct pci_driver结构来描述


成员
id_table //驱动支持的设备列表
(*probe) //函数指针
(*remove)//函数指针




2.PCI驱动注册


pci_register_driver(struct pci_driver *drv)


3.在PCI驱动使用PCI设备的任何资源(I/O区或者中断)之前,驱动必须调用如下函数使能设备


pci_enable_device(struct pci_dev *dev)




4.获取基地址


一个PCI设备最多可以实现6个地址区域, 大多数PCI设备在这些区域实现I/O寄存器。 Linux提供了 一组函数来获取这些区间的基地址:
pci_resource_start(struct pci_dev *dev, int bar)


返回指定区域的起始地址, 这个区域通过参数 bar 指定,范围从 0-5, 表示6个PCI区域中的一个。
pci_resource_end(struct pci_dev *dev, int bar)
返回指定区域的末地址。
5.中断
中断号存放于配置寄存器PCI_INTERRUPT_LINE
中 , 驱动不必去检查它, 因为从 PCI_INTERRUPT_LINE
中找到的值保证是正确的。 如果设备不支持中断, 寄存
器 PCI_INTERRUPT_PIN 中的值是0, 否则它是非零的
值。 但因为驱动开发者通常知道设备是否是支持终端,
所以常常不需要访问 PCI_INTERRUPT_PIN。

你可能感兴趣的:(PCI驱动程序(国嵌笔记))