- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
五内核驱动设计入门-模块方式驱动实验
五、 内核驱动设计入门-模块方式驱动实验
1、实验目的
学习在LINUX 下进行驱动设计的原理;掌握使用模块方式进行驱动开发调试的过程。
2、实验内容
在PC 机上编写简单的虚拟硬件驱动程序并进行调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。
3、预备知识
有 C 语言基础;掌握 Makefile 的编写和使用;掌握 Linux 下的程序编译与交叉编译过程。
有驱动开发的基本知识。
4、实验设备及工具
硬件:PC 机pentumn500 以上, 硬盘40G 以上,内存大于128M。
软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM + AMRLINUX 开发环境
5、实验步骤
(1) 认真阅读实验原理,理解驱动的体系结构
(2) 熟悉程序源代码及Makefile (/up-techpxa270/exp/drivers/01_moddriver)
(3) 编译程序
(4) 程序挂载
(5) 驱动调试 插入模块insmod hello.ko
(6) 删除模块 rmmod hello.ko
(7) 分析demo.c
我们可以直接使用cat /dev/demo 调用驱动的read 函数,测试读过程。
6、实验报告要求
(1)、写清每步实验步骤的具体操作内容。
答:①按照第一次实验的实验要求链接,试验箱以及相关设备。
②阅读《UP-TECHPXA270-S-LINUX实验指导书V1.0》中的实验原理,理解驱动体系结构。
③进入目录“/up-techpxa270/exp/drivers/01_moddriver”用gedit浏览程序源代码以及Makefile文件。
④通过make命令对代码进行编译,编译通过。
⑤然后对程序进行挂载发现demo无法正常挂载不能运行。
⑥调试驱动,”insmod hello.ko”命令插入模块会显示” Hello, world”;然后用“rmmod hello.ko”命令删除模块,会显示“Goodbye, world”。
⑦分析demo.c文件可以得出:
驱动代码demo.c中的demo_read,demo_write函数完成驱动的读写接口功能,do_write函数实现将用户写入的数据逆序排列,通过读取函数读取转换后的数据。Demo_ioctl函数演示ioctl调用接口的实现过程。应用程序一般有一个main函数,从头到尾执行一个任务;驱动程序却不同,它没有main函数,通过使用宏module_init(初始化函数名); 将初始化函数加入内核全局初始化函数列表中,在内核初始化时执行驱动的初始化函数,从而完成驱动的初始化和注册,之后驱动便停止等待被应用软件调用应用程序可以和GLIBC库连接,因此可以包含标准的头文件,比如stdio.h stdlib.h,在驱动程序中是不能使用标准C库的,因此不能调用所有的C库函数,比如输出打印函数只能使用内核的printk函数,包含的头文件只能是内核的头文件。
test_demo时候却无法运行,解决办法如下:
我们找到源文件demo_test.c 发现代码“fd=open(/dev/demo/0,O_RDWR);”dev/demo后面有一个0,于是找打了以下办法
进入目录/dev/demo中建立一个设备节点,用“mknod 0 c 254 0”建立;然后“#cd /mnt/nfs/drivers/01_moddriver”进入目录后运行以下命令
[root@Intel 01_moddriver]#ls
Makefile demo.mod.c hello.c hello.mod.o test_demo
demo.c demo.mod.o hello.ko hello.o test_demo.c
demo.ko demo.o hello.mod.c readme
运行test_demo得到如下的测试结果:
[root@Intel 01_moddriver]#./test_demo
write 32 bytes data to /dev/mydemo
0: 0 1 2 3
1: 4 5 6 7
2: 8 9 10 11
3: 12 13 14 15
4: 16 17 18 19
5: 20 21 22 23
6: 24 25 26 27
7: 28 29 30 31
******************************************
文档评论(0)