当前位置: 技术问答>linux和unix
linux led驱动
来源: 互联网 发布时间:2016-12-26
本文导语: 三星2440led的驱动中定义了#define DEVICE_NAME "leds",在测试程序中是open("/dev/leds0");请问这怎么理解?是用misc_register进行设备注册的,如何进行设备节点的自动分配? 另外在设置时sbc2440_leds_ioctl(struct inode *inode, str...
三星2440led的驱动中定义了#define DEVICE_NAME "leds",在测试程序中是open("/dev/leds0");请问这怎么理解?是用misc_register进行设备注册的,如何进行设备节点的自动分配?
另外在设置时sbc2440_leds_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)里包含四个参数,实际调用中没有用到struct inode *inode, 请问这个参数有何作用?
另外在设置时sbc2440_leds_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)里包含四个参数,实际调用中没有用到struct inode *inode, 请问这个参数有何作用?
|
举例来说
1.设备名:leds
register_chrdev_region()中用到。
可在/proc/devices在查看到
主设备号 设备名
250 leds
2.设备节点:/dev/leds0
mknod /dev/leds0 c 250 0
创建设备节点时,将设备跟驱动程序绑定。
一个主设备号对应一个驱动程序
次设备号指向驱动程序所实现的设备
|
1.open 是打开 /devleds0,这个设备文件节点
2.混杂设备是简化过程的字符设备,节点的自动创建,就两个函数,class_create、device_create,前提是udev,已运行
3.inode 是你open leds0 时,操作系统,根据leds0 透过VFS自动生成
建议:看下 inode、file、file_operation这三个结构体功能含义,要搞清楚,注册的过程和机制,追踪源代码,是比较好的办法
|
inode会由文件名得到的.
|
struct inode *inode参数是为了和file_operation f_ops中的函数指针的参数类型保持一致,不然,无法调用注册的函数。至于这个参数用不用,在不同的函数里面有可能对待方法不同
|
函数的定义的变量,返回都是规定好的,方便扩展的,统一接口,虽然你使用不到,别人还是会用到的。所以要按它的格式来,没有你可以不操作,
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。