实验四-linux驱动程序的编写.doc

实验四-linux驱动程序的编写.doc

ID:58663288

大小:1.57 MB

页数:7页

时间:2020-10-15

实验四-linux驱动程序的编写.doc_第1页
实验四-linux驱动程序的编写.doc_第2页
实验四-linux驱动程序的编写.doc_第3页
实验四-linux驱动程序的编写.doc_第4页
实验四-linux驱动程序的编写.doc_第5页
资源描述:

《实验四-linux驱动程序的编写.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、中国石油大学(北京)计算机科学与技术系实验报告评定成绩指导教师实验课程:软件系统设计与开发实践实验名称:linux驱动程序的编写学号:姓名:于宁班级:信息研17-4班完成日期:2018年4月16日一、实验目的1.掌握linux驱动程序的编写方法;2.掌握驱动程序动态模块的调试方法;3.掌握驱动程序填加到内核的方法。二、实验内容1.学习linux驱动程序的编写流程;2.学习驱动程序动态模块的调试方法;3.学习驱动程序填加到内核的流程。三、实验设备1.PentiumII以上的PC机,LINUX操作系统,EL-ARM830实验箱。四、linux的驱动程序的编写嵌入式应用对成本和实时性比

2、较敏感,而对linux的应用主要体现在对硬件的驱动程序的编写和上层应用程序的开发上。嵌入式linux驱动程序的基本结构和标准Linux的结构基本一致,也支持模块化模式,所以,大部分驱动程序编成模块化形式,而且,要求可以在不同的体系结构上安装。linux是可以支持模块化模式的,但由于嵌入式应用是针对具体的应用,所以,一般不采用该模式,而是把驱动程序直接编译进内核之中。但是这种模式是调试驱动模块的极佳方法。设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操

3、作。同时,设备驱动程序是内核的一部分,它完成以下的功能:对设备初始化和释放;把数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。在linux操作系统下有字符设备和块设备两类主要的设备文件类型。字符设备和块设备的主要区别是:在对字符设备发出读写请求时,实际的硬件I/O一般就紧接着发生了;块设备利用一块系统内存作为缓冲区,当用户进程对设备请求满足用户要求时,就返回请求的数据。块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待。4.1设备驱动程序的file_operations结构通常,一个设备驱

4、动程序包括两个基本的任务:驱动设备的某些函数作为系统调用执行;而某些函数则负责处理中断(即中断处理函数)。而file_operations结构的每一个成员的名称都对应着一个系统调用。用户程序利用系统调用,比如在对一个设备文件进行诸如read操作时,这时对应于该设备文件的驱动程序就会执行相关的ssize_t(*read)(structfile*,char*,size_t,loff_t*);函数。在操作系统内部,外部设备的存取是通过一组固定入口点进行的,这些入口点由每个外设的驱动程序提供,由file_operations结构向系统进行说明,因此,编写设备驱动程序的主要工作就是编写子函

5、数,并填充file_operations的各个域。file_operations结构在kernel/include/linux/fs.h中可以找到。structfile_operations{structmodule*owner;loff_t(*llseek)(structfile*,loff_t,int);ssize_t(*read)(structfile*,char*,size_t,loff_t*);ssize_t(*write)(structfile*,constchar*,size_t,loff_t*);int(*readdir)(structfile*,void*,fi

6、lldir_t);unsignedint(*poll)(structfile*,structpoll_table_struct*);int(*ioctl)(structinode*,structfile*,unsignedint,unsignedlong);int(*mmap)(structfile*,structvm_area_struct*);int(*open)(structinode*,structfile*);int(*flush)(structfile*);int(*release)(structinode*,structfile*);int(*fsync)(stru

7、ctfile*,structdentry*,intdatasync);int(*fasync)(int,structfile*,int);int(*lock)(structfile*,int,structfile_lock*);ssize_t(*readv)(structfile*,conststructiovec*,unsignedlong,loff_t*);ssize_t(*writev)(structfile*,conststructiovec*,unsignedlong,

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

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

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