欢迎来到天天文库
浏览记录
ID:57403160
大小:77.50 KB
页数:33页
时间:2020-08-16
《论Linux Kernel Module之设备驱动程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、目录中文目录格式摘要………………………………………………………………1关键词……………………………………………………………1前言………………………………………………………………2第1章Linux设备驱动程序编写方式…………………………..31设备驱动程序的编写模式2module的原理第2章Linux下的驱动设备类型………………………………211CharacterDevices2BlockDevices第3章Linux设备驱动程序的框架…………………………251设备驱动程序的功能1.1对设备初始化和释放1.2把数据从核传送到硬件和从硬件读取数据1.3读取
2、应用程序传送给设备文件的数据和回送应用程序请求的数据1.4检测和处理设备出现的错误2.设备驱动程序的组成部分2.1自动配置和初始化子程序2.2服务于I/O请求的子程序2.3中断服务子程序3设备驱动程序的结构3.1驱动程序注册与注销3.2设备的打开与释放3.3设备的读写操作3.4设备的控制操作3.5设备的中断和轮询处理4设备驱动程序接口第4章Linux设备驱动程序的实现…………………………301PCI驱动程序实现的关键数据结构1.1pci_driver结构1.2pci_dev结构2.写驱动程序的fuctoin问题2.1function的encode问题2
3、.2function的export问题2.3两个常用function3设备驱动程序中的一些具体问题3.1I/OPort3.2存操作3.3中断处理4RealtekFastEthernetDriverrtl8139网卡驱动3个模块的改写1.1设备指明模块4.2数据读写和控制信息模块4.3中断处理模块参考文献……………………………………………………….25附录…………………………………………………………….26致……………………………………………………………28论LinuxKernelModule之设备驱动程序【摘要】驱动程序编写方法。由Linux设备驱动程
4、序编写方式着手,转而研究设备驱动程序的KernelModule程序。在了解了Linux下的驱动设备类型之后,从Linux下设备驱动程序的功能,组成部分,结构,接口4个方面分析了设备驱动程的框架。在参看了许多的书籍和网络论坛的文章,资料,具体讨论了Linux下设备驱动程序的实现,具体研究了驱动程序的数据结构,function问题和编写程序时各个部分可能出现的难点,疑点问题。并根据DonaldBecker1999-2000年编写的RealtekFastEthernetDriverrtl8139网卡驱动Linux版(核版本2.0.24)改写了其中的3个模块:
5、设备指明模块,数据读写和控制信息模块与中断处理模块。【关键词】KernelLinux核KernelModuleLinux的核模块CharacterDevices字符设备BlockDevices块设备Funtion函数前言Linux是最受欢迎的自由电脑操作系统核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客LinusTorvalds为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,从LinusTorvalds当时在Usenet新闻组comp.os.minix所登载了一分
6、著名的贴子,标志了Linux计划的正式开始。在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。技术上说Linux是一个核。“核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个核不是一套完整的操作系统。一套基于Linux核的完整操作系统叫作Linux操作系统,或是GNU/Linux。今天Linux是一个一体化核系统。设备驱动程序可以完全访问硬件。Linux的设备驱动程序可以方便地以模块的形式设置,并在系统运行期间可直接装载或卸载。第1章Linux设备驱动程序编写方式1设备驱动程序的编写模
7、式Linux下的设备驱动程序可以按照两种方式进行编译,一种是直接静态编译成核的一部分,另一种则是编译成可以动态加载的模块。如果编译进核的话,会增加核的大小,还要改动核的源文件,而且不能动态地卸载,不利于调试,所有推荐使用模块方式。从本质上来讲,模块也是核的一部分,它不同于普通的应用程序,不能调用位于用户态下的C或者C++库函数,而只能调用Linux核提供的函数,在/proc/ksyms中可以查看到核提供的所有函数。2module的原理module的出现是Linux的一大革新。有了module之后,写devicedriver不需要每次要测试driver就
8、重新compilekernel一次。避免了很多的麻烦。Module允许我们动态的改变kerne
此文档下载收益归作者所有