scull设备的使用

这两天都在看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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值