北京电子科技学院(BESTI)
实 验 报 告
课程:信息安全系统设计基础 班级: 1352
姓名:闫佳歆,谈愈敏
学号:20135202,20135220
成绩: 指导教师:娄嘉鹏 实验日期:2015.11.17
实验密级: 预习程度: 实验时间:15:30-18:00
仪器组次: 必修/选修:必修 实验序号:4
实验名称:内核驱动设计入门-模块方式驱动实验
实验目的与要求:(1)学习在 LINUX 下进行驱动设计的原理
(2)掌握使用模块方式进行驱动开发调试的过程
实验仪器:
名称 | 型号 | 数量 |
arm | UP-TECH | 1 |
PC机 | XP | 1 |
虚拟机 | REDHAT | 1 |
实验内容、步骤与体会:
- 实验过程的理解,实验指导书中知识点的理解。
(1)使用gcc编译和使用交叉编译的区别?
Gcc编译就是只是linux下的编译,之后需要用下面的命令来建立设备节点:
#mknod /dev/demo c 254 0
如果使用交叉编译器的话,不需要建立设备节点。
(2)怎样测试驱动程序?
首先要插入驱动模块demo.o,然后可以用lsmod 命令来查看模块是否已经被插入,在不使用该模块的时候还可以用rmmod 命令来将模块卸载。然后运行测试程序,查看和预期结果是否一致。
- 实验过程中遇到的问题以及解决方案。
(1)插入驱动模块失败如下:
[root@zxt 01_demo]# ./test_demo
####DEMO device open fail####
这个主要是因为,因为手动编译代码太为繁琐,我们选择了用make的方法,将Makefile稍微修改后就可以使用,但是我们错误的默认了make使用交叉编译,而实际上是用的gcc编译,所以缺少了设备节点的建立,补上这一步骤之后就成功了。
(2)编译失败
经过查看指导书,发现可能是在/usr/src 下没有建立一个linux 连接,可以使用下面的命令,解决了问题。
[root@zxt 01_demo]# cd /usr/src/
[root@zxt src]# ln -sf linux-2.4.20-8 linux
[root@zxt src]# ls
debug linux linux-2.4 linux-2.4.20-8 redhat
对于ln指令:
ln指令的用法是连接,使用格式是ln [options] source dist,这里我们用到的sf参数的含义是:
-f:链接时先将与dist同档名的档案删除
-s:进行软链接。(软链接,又称符号链接,这个文件包含了另一个文件的路径名,特点是可以链接不同文件系统的文件,甚至可以链接不存在的文件。)