20135321余佳源、20135323符运锦----实验四:外设驱动程序设计
北京电子科技学院(BESTI)
实 验 报 告
课程:信息安全设计系统基础 班级:1353
姓名:余佳源、符运锦
学号:20135321、20135323
成绩: 指导教师: 娄嘉鹏 实验日期:2015.11.10
实验密级: 预习程度: 实验时间:15:30-18:00
仪器组次:21 必修/选修:必修 实验序号:1
实验名称:外设驱动程序设计
实验目的与要求:学习在 LINUX 下进行驱动设计的原理,掌握使用模块方式进行驱动开发调试的过程 。
实验仪器:
名称 型号 数量
LENOVO 1
ARM开发板 1
一、实验步骤
1、阅读和理解源代码
进入/arm2410cl/exp/drivers/01_demo,使用vi 编辑器或其他编辑器阅读理解源代码。
2、编译驱动模块及测试程序
Makefile 中有两种编译方法,可以在本机上使用gcc 也可以使用交叉编
译器进行编译,交叉编译器进行编译的结果。
如果编译的时候出现问题,可能是在/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
3、测试驱动程序##
如果使用 gcc 编译的话,需要通过下面的命令来建立设备节点,如果使用交叉编译器的话,不需要建立设备节点。
#mknod /dev/demo c 254 0
首先要插入驱动模块demo.o,然后可以用lsmod 命令来查看模块是否已经被插入,在不使用该模块的时候还可以用rmmod 命令来将模块卸载。
我们使用交叉编译器,不需要建立设备节点。下图为步骤成功的结果。
如果模块没有成功插入的话,会出现下面的情况:
[root@zxt 01_demo]# ./test_demo
####DEMO device open fail####
二、遇到的问题及解决方法
问题:在本次实验中,当实验进行当编译那一步时总是出错,无法显现出指导书上那样正确的情况。
解决方法:在实验中,编译我们使用了make的方法。我们错误认为使用交叉编译,但是应该用GCC编译,补上相关语句,修改MAKEFILE即可成功。
三、实验体会
本次实验可以说是让我学到很多的一次实验。通过本次实验,让我了解了交叉编译,也让我了解到如果缺少节点的搭建,编译将无法成功。下次实验我们将继续努力,攻破一个又一个问题。