实验5_驱动程序设计-模块驱动实验

实验5_驱动程序设计-模块驱动实验

ID:35342142

大小:87.77 KB

页数:9页

时间:2019-03-23

实验5_驱动程序设计-模块驱动实验_第1页
实验5_驱动程序设计-模块驱动实验_第2页
实验5_驱动程序设计-模块驱动实验_第3页
实验5_驱动程序设计-模块驱动实验_第4页
实验5_驱动程序设计-模块驱动实验_第5页
资源描述:

《实验5_驱动程序设计-模块驱动实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、嵌入式系统设计实验五驱动程序设计一模块方式驱动实验姓名:专业:学号:日期:目录第一章驱动模块设计与源代码分析31.1驱动程序设计原理简介31.2设备驱动程序接口31.3test_demo的main函数41.4showbuf数据显示函数41.5write_demo与do_write函数51.6read_demo函数51.7demo_fops函数51.8demo_ioctl函数61.9demo_open与demo_release函数6第二章编译驱动模块及测试程序82.1编译82.2运行测试9第一章驱动模块设计与源代码分析1.1驱动程序设

2、计原理简介驱动程序的作用是应用程序与硬件之间的一个中间软件层,应该为应用程序展现硬件的所冇功能,不能强加其他约束,对駛件使用的权限和限制应该由应用层程序控制。驱动程序主要考虑以下三个方面:(1)提供尽量多的选择给用户(2)提高驱动程序的速度和效率(3)尽量使驱动程序简单,使之易于维护Linux的驱动开发调试有两种方法:(1)宜接编译到内核,再运行新的内核来测试(2)编译为模块的形式,单独加载运行调试一般情况下选择第二种方法,因为其调试效率高。使用insmod工具将编译的模块直接插入内核,如果出现故障,可以使用rmmod从内核中卸载模

3、块,无需重新启动内核,提高了驱动调试效率。1.2设备驱动程序接口设备驱动程序接口是结构file_operations{}。其定义在include/linux/fs.h屮。在嵌入式系统开发中,仅使用其中的几个接口函数即可完成应用系统需要的功能。(1)read(2)write(3)ioctl(4)open(5)release1.3test_demo的main函数主函数为测试函数,测试模块的调用,模块的功能是对数组中的元素进行逆排序。数组中有32个元素。zntmain()3(:intfd;inti;charbuf[255];Tfor(i=

4、0;iVMAXJLEN;i++){buf[i]=i;-}fd=open(n/4^/derr-°n#O_RDWR);3if(fd<0){printf(deviceopenfazl#-#*f,);return(-1);_}printf(r,wrxte%dbytesdatatodemonrl-fAX_LEN);showbuf(buf);write(fd,bu「MAX_LEN);printf(r,Read%dbytesdatafroir.已mo,MAX_LEN);read(fdfbuf,Z4AX_LEN);showbuf(buf);

5、ioctl(fdrlrNULL);ioctltfd^.NULL);close(fd);return0;-}程序在test_demo.c文件中。1.4showbuf数据显示函数该函数的功能为向屏幕打卬输出当而数组元素。voidshowbuf(char*buf)mtifj=c;日for(i=:;i<14AX_LEN;i++){if(i%4=0)printf(n%4d:nrj++);printf(rr%4dnrbuf[i]);-)****n):printf(nr.r-m***^*^****^^-****^*^^^-•******

6、*1.3write_demo与do_write函数staticssizez该函数为模块函数,模拟实现数据写入的功能。并调用do.write进行逆排序。demo_wrice(structfile*filprconstchar*buffer#size_tcount)曰{if(count>1

7、rite();returncount;该函数在demo.c中。do_write函数实现的功能为逆排序。srarz.cvoiddowrite()曰{~intlen=WRI_LENGTH;chartmp;for(i=;i<(len»);1++,len——){tmp=drv_buf[len-L];drv_buf[len-]=drv_buf[i];drvbuf[i]=trnp;1.4read_demo函数该函数的功能是读取模块中的数据。数据来源为之前绪入模块并进行处理的数据。staticssize_tderco_read(structfil

8、e*filp,cnar*bufferrs±ze__tcountrloff_t*ppos)EJ{~if(count>MAX_BUF_LEN)counr-l

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

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

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