…… E■砌狙DED甜锄_PROG舢MING…………………………………………………………………………
PCI驱动程序的设计
杨德芳
摘 要在嵌入式系统的开发中,编写设备驱动程序是必须要做的工作。本文以NE2000
网卡驱动程序为例,介绍Linux下PCI驱动程序的编写方法。驱动程序的编写包
括发现设备、读取设备信息、申请资源、编写设备操作函数和注册设备操作等。
关键词探测函数,I/0地址,注册设备
PCI是外围设备互连(Peripheral Component Interconnect)
的简称,作为一种通用的总线接口标准,它在目前的计算机系
统中得到了非常广泛的应用。在嵌入式Linux下扩展应用系统
的PCI设备,编写用户设备的驱动程序,本文以NE2000网卡
驱动程序为例,介绍Linux下PCI驱动程序的编写方法。驱动
程序的编写包括发现设备、读取设备信息、申请资源、编写设
备操作函数和注册设备操作等。
一、编写PCI驱动程序
对于PCI驱动的编写有两种架构,一种是设备驱动程序自
己完成探测工作,包括探测系统是否支持PCI总线、要驱动的
设备是否存在等;另一种是新型的驱动程序架构,把设备的探
测工作留给了PCI层。驱动程序通过pci module_init向内核注
册。它和pci_register_driver函数的功能是一样的,调用方式为
pci module jnit(&pci...driver);调用函数后,如果pci_deviceid数
组中标识的设备存在于系统中,并且该设备恰好还没有驱动程
序,则该驱动程序会被安装。下面主要采用新型的架构方式编
写驱动程序。新型架构的驱动程序在初始化时调用函数
pci_register,driver(),此函数的原型为:
int pci_register_driver(struct pci_driver}dry):
对于基于PCI设备的网卡驱动程序来说,应该为每一个网