scull设备的使用

来源:互联网 发布:网络拍卖新版 编辑:程序博客网 时间:2024/04/30 07:25
这两天都在看ldd3的第三章《字符设备驱动程序》
这一章应该说是对于初学者来说要实现自己的第一个驱动程序scull。
个人感觉,要深刻理解和掌握这一章,一定要理解scull到底是什么样一个设备。于是从网上下载到ldd3的源代码(我的资源中有),准备先编译和运行其中的scull驱动模块,看看到底是个什么东西。
打开scull目录,发现里面的内容如下:
access.c
main.c      主程序,scull设备的初始化、卸载、open、write等实现都在这里面       
Makefile    
pipe.c      第六章《高级字符驱动程序操作》会用到,用来讲解阻塞型设备
scull.h      头文件   
scull.init
scull_load    加载scull模块的脚本
scull_unload  卸载scull模块的脚本

//直接运行make命令会有问题,需要做如下修改:

1) 将main.c中的<linux/config.h>更改为<linux/sched.h>,并将<linux/sched.h>也增加到pipe.c和access.c中。因为从2.6.19版本以后config.h文件被取消了.所以以后有config.h的地方都会报错。

2)Makefile修改:将Makefile中的全部CFLAGS用EXTRA_CFLAGS替换
3)access.c修改:替换所有current->uid 和 current->euid为 current->cred->uid和current->cred->euid。
/*终于将ldd3的第三章结束了。
2008年12月25日,今天圣诞节,西安很冷。办公室暖气很好。大家都在忙碌,我的工作已完成,可以静下心来看些东西真好,喜欢这个感觉。
开始第四章。*/

通过运行make命令生成scull.ko之后,我们就可以对该模块进行操作了。
执行scull_load脚本装载模块并创建设备节点
执行scull_unload脚本卸载模块并删除设备节点

装载好了之后可以向该节点中存储信息,然后使用cat查看该设备内的信息。
在操作设备的时候可以查看/var/log/messages文件查看内核的printk输出信息。

可执行操作举例如下:
1)ls -l > /dev/scull    #将/dev目录下的文件信息存储到scull设备中
   cat /dev/scull       #通过cat命令查看设备内的内容进行验证

2)dd if=/dev/scull of=temp    #从/dev/scull中读取数据,保存到当前目录下的temp文件   

参考文章:http://blog.csdn.net/wooin/archive/2007/08/28/1762818.aspx