第四次实验报告

课程:信息安全系统设计基础          班级:   1353

姓名:刘世鹏 郝爽

学号:20135304,20135335

成绩:             指导教师:娄嘉鹏     实验日期:2015.11.24

实验密级:         预习程度:             实验时间:15:30-18:00

仪器组次:          必修/选修:必修               实验序号:4

实验名称:内核驱动设计入门-模块方式驱动实验               

实验目的与要求:(1)学习在 LINUX 下进行驱动设计的原理

(2)掌握使用模块方式进行驱动开发调试的过程                

 

实验仪器:

名称

型号

数量

arm

UP-TECH

1

PC机

XP

1

虚拟机

REDHAT

1

 

实验内容、步骤与体会:

1、实验过程的理解,实验指导书中知识点的理解。

(1)什么是驱动程序设计,它有何作用?

驱动程序的作用是应用程序与硬件之间的一个中间软件层,驱动程序应该为应用程序展现硬件的所有功能,不应该强加其他的约束,对于硬件使用的权限和限制应该由应用程序层控制。但有时驱动程序的设计是跟所开发的项目相关的,这时就可能在驱动层加入一些与应用相关的的设计考虑,主要是因为在驱动层的效率比应用层高,同事为了项目的需要可能只强化或优化硬件的某个功能,而弱化或关闭其他一些功能;到底需要展现硬件的哪些功能全都由开发者根据需要而定。驱动程序有时会被多个进程同时使用,这时我们要考虑如何处理并发地问题,就需要调用一些内核的函数使用互斥量和锁等机制。

(2)怎样测试驱动程序?

首先要插入驱动模块demo.o,然后可以用lsmod 命令来查看模块是否已经被插入,在不使用该模块的时候还可以用rmmod 命令来将模块卸载。然后运行测试程序,查看和预期结果是否一致。

 

实验中遇到的问题与解决方法:

(1)遇到问题:使用Makefile文件编译未能成功,提示头文件中的函数出错。

      解决方案:根据错误解释,应该是在Makefile路径未找到头文件中的库函数,于是在Redhat系统中找到存放内核头文件的路径,将其替换掉原先在Makefile文件中的路径,在执行make命令编译,成功。

(2)遇到问题:在编译测试文件test_demo.c时,使用gcc编译不成功, 使用armv4l-unknown-linux-gcc编译也不成功。

      解决方案:在使用gcc编译时未建立设备节点,建立结点后编译成功,但是不知道为何使用armv4l-unknown-linux-gcc编译不成功。

实验体会

    这次的Linux实验前期基本步骤同实验一、二相似,都是在配置实验箱的基础上进行的,因为有做实验一、二积累的经验,而且这次运气很好选了一台好用的电脑,这次配置很顺利,按实验指导书步骤一步一步来做,期间出现了指导书中提示的问题,按指导书来操作很快就解决了。在以后遇到问题的时候,不要急于寻求帮助,先自己多想一想,尝试着解决问题,往往就能解决。这次实验让我们小组配置实验箱,在超级终端中运行调试程序等操作中更加灵活、熟悉,受益匪浅。

posted @ 2015-12-01 21:17  郝爽whnqj  阅读(170)  评论(0编辑  收藏  举报