下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、集美大学计算机工程学院实验报告课程名称:操作系统班级:xxx实验成绩:指导教师: 姓名:xxx实验项目名称:设备管理Linux设备驱动程序安装学号:xxxx上机实践日期:xxx实验项目编号:组号:上机实践时间: 2 学时一、 目的(本次实验所涉及并要求掌握的知识点)1. 认识Linux的设备的种类和设备工作方式;2. 理解设备驱动程序的工作原理;3. 掌握设备驱动程序的编写规范,能编写并安装简单的设备驱动程序。 二、 实验内容与设计思想(设计思路、主要数据结构、主要代码结构、主要代码段分析、电路图)实验内容:在Linux系统中,编写一个简单的字符型设备驱动程序模块,设备具有独占特性,可执行读和
2、写操作,相关系统调用为open, close, read, write,open和close分别相当于请求和释放设备,read和write内容保存在设备模块内的缓冲区中。设备模块可动态注册和卸载,并建立与之对应的特殊文件/dev/mydev。实验设计:1.按照要求编写设备驱动模块,同时编写一个测试程序2.分别对其编译,注意编译时的项3.设备模块加载4.创建特殊文件5.分析执行结果6.设备模块卸载 三、实验使用环境(本次实验所使用的平台和相关软件)Linux四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)/mydev.c #ifndef _KERNEL_#define _KERNE
3、L_#endif#ifndef MODULE#define MODULE#endif#define _NO_VERSION_#include #include #include #include #if CONFIG_MODVERSIONS = 1#define MODVERSIONS#include #endif#include #include #include #include #ifndef KERNEL_VERSION#define KERNEL_VERSION(a,b,c) (a)*65536+(b)*256+(c)#endif/* Conditional compilation.
4、 LINUX_VERSION_CODE is * the code (as per KERNEL_VERSION) of this version.*/#if LINUX_VERSION_CODE KERNEL_VERSION(2,2,0)#include /* for put_user */#endif#define SUCCESS 0#define DEVICE_NAME kueng_char_dev#define BUF_LEN 50static int Device_Open =0;static char MessageBUF_LEN;static int Major;static i
5、nt mydev_open(struct inode *inode,struct file *file) if(Device_Open) return -EBUSY; Device_Open=1; MOD_INC_USE_COUNT; / 模块使用者数加,非0不能卸载return 0;static int mydev_release(struct inode *inode,struct file *file) Device_Open=0;MOD_DEC_USE_COUNT; / 模块使用者数减 return 0;static ssize_t mydev_read(struct file *fi
6、le,char *buffer, size_t length ,loff_t *f_pos) int bytes_read=0; /确认访问用户内存空间合法性 if(verify_area(VERIFY_WRITE,buffer,length)=-EFAULT) return -EFAULT; /由用户空间到系统空间复制 bytes_read=copy_to_user(buffer,Message,length); return bytes_read; static ssize_t mydev_write(struct file *file, const char *buffer,size_t
7、 length,loff_t *f_pos) int len = BUF_LENlength?BUF_LEN:length; /确认访问用户内存空间合法性 if(verify_area(VERIFY_READ,buffer,length)=-EFAULT) return EFAULT; /由用户空间到系统空间复制 copy_from_user(Message,buffer,len); return length;struct file_operations Fops = release: mydev_release, open: mydev_open, read: mydev_read, wr
8、ite: mydev_write;int init_module(void) /设备注册 Major = register_chrdev(0,DEVICE_NAME,&Fops);if(Major0) printk(Registering character device failed with %dn,Major); return Major; printk(Registration success with Major device number %dn,Major); return 0;void cleanup_module(void) int ret; /设备注销 ret = unre
9、gister_chrdev(Major,DEVICE_NAME); if(ret0) printk(Error in unregister_chrdev: %dn,ret);MODULE_LICENSE(GPL);MODULE_AUTHOR(KUENG); /test.c #include #include #include #include #include main() int testdev; int i ; char buf50= pear to dev!; printf(program test is running!n); testdev = open(/dev/mydev,O_RDWR); if(testdev=-1) printf(cant open file n); exit(0); /向设备写入pear to dev! write(testdev,buf,50); printf(write %sn,buf,50); /更改buf内容为apple to dev!strcpy(buf,apple t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年集成电路、集成产品的焊接封装设备项目资金申请报告
- 2024年电火花成型机床项目资金筹措计划书代可行性研究报告
- 三维数字内容制作-三维动画镜头预演制作流程规范
- 职员工作计划安排(30篇)
- 小学生国旗感恩演讲稿(3篇)
- 销售跟单工作计划(5篇)
- 新生军训心得体会1000字(30篇)
- 校园武术活动总结
- 初中英语培训心得体会15篇
- 正余弦定理解三角形(学生版)-2025年高考数学一轮复习学案(新高考)
- FDS火灾模拟技术
- 新版建筑材料构配件和设备管理制度样本
- 小学国防教育公开课一等奖市赛课获奖课件
- 沟通的艺术:看入人里,看出人外
- 水利工程外观质量评定标准
- 钢丝绳使用规范标准
- 分析化学(高职)PPT完整版全套教学课件
- PSA制氢装置开车试运行方案
- 学校运动场建设项目施工组织设计方案
- GB 14884-2003蜜饯卫生标准
- 新《统计法》解读
评论
0/150
提交评论