分类: LINUX
2008-10-14 18:49:29
access.c |
|
main.c |
主程序,scull设备的初始化、卸载、open、 write等实现都在这里面。 |
Makefile |
|
pipe.c | 第六章《高级字符驱动程序操作》会用到,用来讲解阻塞型设 备。 |
scull.h |
头文件 |
scull.init |
|
scull_load |
加载scull模块的脚本 |
scull_unload |
卸载scull |
直接在scull目录下运行make命令就可以编译通过,会生成一个叫scull.ko的文件,然后运行脚本scull_load, 没有任何输出就返回了,scull设备就会自动加载到内核当中去了,此时可以通过查看/proc/devices文件找到刚加载的scull模块,还有内 核为其分配的主设备号。 在/dev/中也增加很多以scull开头的字符设备。 | ||||
4. |
试试scull设备: 运行命令:
| |||
5. | 再运行scull_unload,也是没有任何输出就返回了,但是scull模块却已经从内核中删除了,/proc/devices 文件中也没scull设备了,/dev/中也没有以scull开头的字符设备了。 | |||
6. | 下面在scull增加一些调试信息: 打开main.c文件,在函数scull_init_module()的头部增加一句:
| |||
7. | 重复第3步,将scull加载进内核中,此时内核应该调用main.c中的scull_init_module()函数,是不是调用 了呢?我们看看/var/log/messages文件,果然在该文件最后有输出我们的调试信息:
| |||
8. | 可以想像,向设备中写数据就会调用scull_write()函数,我们执行下面的命令利用输出重定向来向/dev/scull设备 写数据:
| |||
9. | 从设备中读取数据应该就会调用scull_read()函数,我们利用dd命令来读scull设备:
| |||
10. | 本文介绍的scull使用方法调试成功后对读第三章《字符设备驱动程序》很有帮助,当遇到不懂,或不确定的地方时printk一下就 好了^_^ |