用mknod建立的device无法被访问
小弟最近在做驱动开发的东西,准备按照文档先学写字符设备驱动的程序,但是我发现在我的虚拟机中用命令mknod /dev/memory c 60 0建立的节点用命令cat无法访问,提示 no such device or address,该节点的权限已设为666。同时我发现在/dev下有zero节点,该节点的权限也是666,字符型,可以用cat看: cat /dev/zero ,虽然没有显示任何东西,但是可以被访问到。请问这是怎么一回事啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
LZ明白这个命令是什么意思吗?
驱动是不是写得有问题?
建立一个字符设备文件,主设备号60,次设备号为0,确定在/dev目录下该设备好没有被占用
LZ确认一下这个设备号的设备就是你注册的设备::
awk '$1==60' /proc/devices
LZ写的字符模块是否成功的insmod。可以在你的module_init中,printk出来一些信息啊
我也怀疑楼主有没有加载模块
这个程序是按照您的庖丁解牛系列来写的,驱动正常加载,没有报任何错误,然后我继续用echo向该memory_device中写字符,用cat确实可以显示出来,但是后面仍然会有no such device or address的提示。之前因为没有向该memory_device中写字符,所以只有no suck device or address的提示,我误以为建立的节点是无法访问的。不过为什么会显示这个还是不明白,继续向各位大牛请教,谢谢。file:///C:/linux.bmp
[ 本帖最后由 tulip0425 于 2009-3-16 09:43 编辑 ]
加载完驱动,可以写进去数据,后面是在什么情况下出现no such device的提示呢?
这个逻辑是不对的吧。如果你已经成功的建立的字符设备,而且驱动也是加载的。那么不管你有没有往里面写入数据,都可以cat的。你的这种情况,怎么感觉是刚开始可以读写数据,然后就不行了呢?
贴出你的源程序看一下吧。