PCI驱动程序(国嵌笔记)

本文介绍了PCI驱动程序的基础概念,包括如何使用struct pci_driver结构来描述驱动,并详细解释了注册过程及关键函数pci_register_driver的使用。此外,还阐述了如何通过特定函数启用设备并获取I/O基地址以及处理中断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值