linux下pci设备驱动开发方法及应用实例

linux下pci设备驱动开发方法及应用实例

ID:34416006

大小:356.24 KB

页数:4页

时间:2019-03-05

linux下pci设备驱动开发方法及应用实例_第1页
linux下pci设备驱动开发方法及应用实例_第2页
linux下pci设备驱动开发方法及应用实例_第3页
linux下pci设备驱动开发方法及应用实例_第4页
资源描述:

《linux下pci设备驱动开发方法及应用实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、万方数据软件天地中文核心期刊《微计算机信息》(测控自动化)2007年第23卷第4—1期文章编号:1008—0570(2007)04—1—0310一03Linux下PCI设备驱动开发方法及应用实例MethodandImplementationofPCIDeviceDriverBasedonLinux(空军工程大学)高翊字马林华GAOYlYUMALINHUA摘要:“nu】【是一种日趋成熟完善的操作系统.越来越多的软硬件厂商开始使用Linux平台来开发自己的产品,因而对基于该平台的设备驱动程序的需求也愈来愈多。同时PCI总线作为一个具有兼容性强、平台无关性

2、等特点从的计算机总线标准。日前得到了广泛的应用。本文通过实例讨论了如何在Linux下实现PCI设备驱动程序的开发。关键:Linux操作系统;雷达信号采集系统;设备驱动;PCI总线中图分类号:TP316文献标识码:BAbstract:WiththedevelopmentofLinux,therearemoreandmorecompaniestodeveloptheirproducdonsunderLinuxoperationsys—tem.Sotherearemoreandmorerequirementstodevelopthedevicesdrive

3、rforhardwareunderLinuxOS.Withthegoodpropertiesforexamplethegoodcompatibility,andthegoodusabilityunderdifferentoperationsystems.PCIbushasgetabroadapplicationatpresent.ThisarticlediscusseshowtocompleteaPCIDeviceDriverunderLinuxOS.Keywords:LinuxOS,RadarSignalCollectingSystem,Devic

4、eDriver。PCIBus引言PCI总线是由Intel公司发起.由PCISIG小组审议并推广实施的总线标准。PCI支持一种称为线性突发的数据传输模式,可确保总线不断满载数据。PCI总线通过CPU局部总线到PCI总线的桥接器形成一种独特的中间缓冲器设计方式,将CPU系统与外围设备分开,使得在开发PCI设备时不需要考虑CPU的差异。也不需要关心CPU升级换代所带来的问题。其“优秀”表现赢得越来越多的计算机应用开发者的青睐,设计者们在多种平台和体系结构中采用不同的方法设计出各种PCI接口卡,编写出各种平台下的接口卡驱动程序实现控制系统高速、高精度、低功耗

5、下通过PCI总线对外围I/O设备的操作。1Linux设备驱动程序初步原理1.1设备文件Linux将所有外部设备看成是一类特殊文件,称之为“设备文件”。在Linux操作系统下有两类主要的设备文件:一类是字符设备,另一类则是块设备。字符设备是以字节为单位逐个进行I/O操作的设备。块设备则是利用一块系统内存作为缓冲区,当用户进程对设备进行读写请求时,驱动程序先查看缓冲区中的内容,如果缓冲区中的数据能满足用户的要求就返回相应的数据,否则就调用相应的请求函数来进行实际的I/O操作。一般说来,PCI卡通常都属于字符设备。1.2设备驱动程序模块在Linux系统中.

6、有两种方法来加载和使用设备驱动程序。第一种方法是把驱动程序放在内核源代码“driver”相应的目录里,并修改Makefile文件,在配置和编译内核的时候把驱动程序作为这个内核的一部分。这种方式会增加内核的大小,改动高翊宇:硕士研究生基金项目:武器装备预研基金项目【编号不公开l内核的源文件。它使用函数drive_init来对驱动程序进行初始化.自动驱动对应的设备:另一种方法是将驱动程序编译成可安装模块(module),动态地加载和卸载模块。可安装模块是经过编译但尚未连接的目标代码文件,可以在系统运行时动态地“安装”到内核中.由系统超级用户使用insmo

7、d命令动态加载,使之成为系统内核的一部分。它使用函数iniLmodule来对驱动程序进行初始化。当不使用该设备时,可以使用rmmod命令,rmmod命令调用系统调用delete_module.这个系统调用随后检查模块的使用计数,如果为0则调用模块本身的cleanup_mod—ule函数从内核中将该驱动程序卸载,否则返回出错信息。1.3设备驱动程序接口Linux中的I/O子系统向内核中的其他部分提供了一个统一的标准设备接口。这是通过inelude/linux/fs.h中的数据结构file_operations来完成的。该数据结构向Linux操作系统注册

8、一组文件操作。这些文件操作定义了设备提供的特定功能,诸如应用程序对设备文件进行open、close、read

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。