当前位置: 技术问答>linux和unix
linux驱动、设备注册问题、、、???
来源: 互联网 发布时间:2016-05-26
本文导语: 为什么我的驱动模块加载运行后,在proc/devices中有注册设备号、名称,而dev/下面没有啊、、、??? proc/devices和dev/的注册号有什么区别、关系啊、??? 如果应用层打开设备,是根据proc/devices,还是根据dev/里面...
为什么我的驱动模块加载运行后,在proc/devices中有注册设备号、名称,而dev/下面没有啊、、、???
proc/devices和dev/的注册号有什么区别、关系啊、???
如果应用层打开设备,是根据proc/devices,还是根据dev/里面的注册啊、??
急,望能指点、、、
proc/devices和dev/的注册号有什么区别、关系啊、???
如果应用层打开设备,是根据proc/devices,还是根据dev/里面的注册啊、??
急,望能指点、、、
|
你需要自己用
mknode命令在/dev目录下自己注册个设备
mknode命令在/dev目录下自己注册个设备
|
proc是内核接口,一般之直接传递些简单数据和输入简要的信息和一些调试信息
/dev是应用层的设备驱动文件的接口,一般是文件系统启动后,有udev这个相应的软件包按一定的规则建立
而udev这个应用软件,一般是通过/sys/下对于的内核文件接口建立的,所以你的驱动需要
建立内核的相应的sys接口才会启动后自动建立相应的/dev文件,一些热拔插事件的设备需要udev软件包的守护进程
udevd根据/sys和/proc接口实现
这个知识点简单,但是设计范围广
这个lfs上说了些
http://www.linuxfromscratch.org/lfs/view/6.3/chapter07/udev.html
|
驱动是你自己写的吗?自己写的话,在驱动中加些调试信息显示,在应用程序中调用后,查看驱动的调试信息,查看是在什么地方出错。或者在驱动程序中返回值设定内容自己记住,然后在应用程序中OPEN 时看看返回值是多少,查找出错地方。
|
[Quote=引用 4 楼 xgfhahaha 的回复:]
int fd = open( Dev, O_RDWR ); //| O_NOCTTY | O_NDELAY
打开的时候写成int fd = open( /dev/yourdevicename, O_RDWR );试试,还有就是你的驱动注册的设备号和你mknod时候定义的设备号一定要相同。
int fd = open( Dev, O_RDWR ); //| O_NOCTTY | O_NDELAY
打开的时候写成int fd = open( /dev/yourdevicename, O_RDWR );试试,还有就是你的驱动注册的设备号和你mknod时候定义的设备号一定要相同。