日期:2014-05-16  浏览次数:20637 次

一个简单的问题,但google上找不到答案
刚学驱动编程,看完了scull这章。碰到一个疑惑的问题:
              每个设备都有一块内存空间,都是全局性的和持久性的。全局性是指,如果打开设备多次,所有打开它的文件描述符都共享其中的数据。持久性是指,如果设备关闭后再次打开,数据不丢失。由于可以使用常用命令访问这个设备,如cp,cat以及shell   I/O重定向等,这个设备操作非常有趣;本章将深入探讨它的内部结构。
              这是个网友的帖子,书上也是这么说的。我的问题是:
怎样打开scull设备?怎么用cp,cap以及shell   I/O   来操作scull设备?
我已经把示例代码编译通过了,可是不知道如何来使用它,郁闷!在google上面搜了半天,所有的文章都是一笔带过,希望有网友可以写得详细点。谢谢!

------解决方案--------------------
mknode以后就可以把设备当作一个文件来操作了
建议搂住补补linux基本操作知识
------解决方案--------------------
设备在linux中以文件形式存在, mknode /dev/scull便可以建立这样一个设备了, 当然在这里指的是虚拟设备.
当建立之后, 对设备的打开, 读, 写, 关闭以及ioctl操作就按照文件方式进行.

关于使用这个设备, 编译成模块, mknode之后, 写一个测试程序(比如可以含有读,写操作), 加载模块之后运行测试程序便可以看到设备操作结果了.

具体请看LDD的第三章: 字符设备驱动程序.
楼主如果有兴趣可以去我的blog看看, 设备驱动程序的相关文章即将等场.
http://blog.csdn.net/dai_weitao
欢迎发表评论.
------解决方案--------------------
楼主应该已经看了LDD3,而且通过了上面的代码,就是想知道怎么使用scull设备。

驱动的作用就是为设备完成系统调用的功能,所以要使用scull设备,加载了驱动模块之后,可以编写简单的用户态test.c程序,通过open(),read(),write()对scull设备进行操作。