实验四
北京电子科技学院(BESTI)
实 验 报 告
课程:深入理解计算机系统 班级:1353
姓名:魏静静 文艺 刘虹辰
学号:20135302 20135331 20135325
成绩: 指导教师:娄嘉鹏 实验日期:2015-11-17
实验密级: 预习程度: 实验时间:15:30-18:00
仪器组次:桌号44 必修/选修:必修 实验序号:4
实验名称:简单嵌入式WEB服务器实验
实验目的与要求:
- 学习在LINUX下进行驱动设计的原理;
- 掌握使用模块方式进行驱动开发调试的过程 。
1、实验过程的理解,实验指导书中知识点的理解。
(1) 理解源代码
进入/01_demo,使用vi编辑器阅读理解源代码。
(2) 编译应用程序
再修改makefile文件后,采用交叉编译器即可进行编译。当然也可以使用gcc进行编译,通过下面的命令来建立设备节点,如果使用交叉编译器的话,不需要建立设备节点。
我们使用交叉编译时命令如下:
[root@BC 01_demo]#make
如果编译的时候出现问题,可能是在/uer/src下没有建立一个linux连接,可以使用以下命令:
[root@BC 01_demo]#cd /usr/src/
[root@BC src]#ln –sf linux-2.4.20-8 linux
[root@BC src]#ls
(3)测试驱动程序
如果使用 gcc 编译的话,需要通过下面的命令来建立设备节点,如果使用交叉编译器的话,不需要建立设备节点。
#mknod /dev/demo c 254 0
首先要插入驱动模块demo.o,然后可以用lsmod 命令来查看模块是否已经被插入,在不使用该模块的时候还可以用rmmod 命令来将模块卸载。
(4)实验结果:
2、实验过程中遇到的问题以及解决方案。
(1)使用gcc编译和使用交叉编译的区别?
Gcc编译就是只是linux下的编译,之后需要用下面的命令来建立设备节点:
#mknod /dev/demo c 254 0
(2)插入驱动模块失败如下:
[[email protected] 01_demo]# ./test_demo ####DEMO device open fail####
缺少了设备节点的建立,补上这一步骤之后就成功了。
(3)编译失败
在/usr/src 下没有建立一个linux 连接,可以使用下面的命令,解决了问题。
[[email protected] 01_demo]# cd /usr/src/
[[email protected] src]# ln -sf linux-2.4.20-8 linux
[[email protected] src]# ls
debug linux linux-2.4 linux-2.4.20-8 redhat