Driverdemo实验步骤
一.感性认识的实验步骤:
提示:以下内容均在Linux PC机上进行 1.用mknod命令建立demo设备节点 mknod /dev/demo c 254 0 2. 用insmod 命令插入设备驱动
insmod demo.o 3. 运行测试程序
./test_demo 4.删除设备节点 rm -f /dev/demo
二.完善代码部分
1.分析用户程序源代码的作用 200字以内
2.完善设备驱动源代码
把demo.c文件中以???标记的部分,按照提示和该函数的功能,填上适当的函数和语
句
3.分析Makefile文件,把为PC linux编写的Makefile文件改写为为ARM开发平台编写的
Makefile文件
三、编译驱动模块及测试程序
1.按第二部分完善代码后,用make命令编译驱动和测试程序
[qianzg@localhost demo]$make armv4l-unknown-linux-gcc -c -I.. -Wall -O -D__KERNEL__ -DMODULE -I/arm2410dev/kernel-2410dev/include demo.c -o demo.o demo.c:108: warning: initialization from incompatible pointer type armv4l-unknown-linux-gcc armv4l-unknown-linux-gcc -c -I.. -I.. -Wall -Wall -O -O -D__KERNEL__ -D__KERNEL__ -DMODULE -DMODULE -I/arm2410dev/kernel-2410dev/include hello.c -o hello.o -I/arm2410dev/kernel-2410dev/include -c -o test_demo.o test_demo.c armv4l-unknown-linux-gcc test_demo.o -o test_demo 注意:如果编译的时候出现问题,可能是在/usr/src下没有建立一个linux连接,可以使用下面的命令: [root@zxt 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 4、测试驱动程序
如果使用gcc编译的话,需要通过下面的命令来建立设备节点,如果使用交叉编译器的话,不需要建立设备节点。
#mknod /dev/demo c 254 0 首先要插入驱动模块demo.o,然后可以用lsmod命令来查看模块是否已经被插入,在不使用该模块的时候还可以用rmmod命令来将模块卸载。
[root@zxt demo]# insmod demo.o Warning: loading demo.o will taint the kernel: no license See http://www.tux.org/lkml/#export-tainted for information about tainted modules Module demo loaded, with warnings 下面使用测试程序来进行测试,按照上面步骤成功后会出现下面的结果:
[root@zxt demo]# ./test_demo write 32 bytes data to /dev/demo 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 ***************************************************** Read 32 bytes data from /dev/demo 0: 31 30 29 28 1: 27 26 25 24 2: 23 22 21 11 3: 12 13 14 15 4: 16 17 18 19 5: 20 10 9 8 6: 7 6 5 4 7: 3 2 1 0 ***************************************************** 如果模块没有成功插入的话,会出现下面的情况:
[root@zxt demo]# ./test_demo ####DEMO device open fail#### 在驱动模块成功插入后,会在/dev下面建立一个叫做demo的设备文件,我们也可以使用cat 命令来直接调用read函数,来测试读过程。 [root@zxt demo]# cat /dev/demo device open success! 思考题
1、添加一些自己的功能,修改源代码并编译调试。
2、增加一个中断驱动函数,比如PC机并口,试验中断驱动的实现。
相关推荐: