字符设备驱动的问题
ldd3上讲字符设备注册使用cdev_add(),为什么这个函数没有驱动名字参数?而以前使用的register_chrdev()却有name参数。
另问,platform 设备注册和驱动的注册不太明白,platform设备是指什么设备,是i2c,bus之类的东西吗?和常见的字符设备驱动框架不太一样
[ 本帖最后由 源方 于 2009-3-26 17:20 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
在内核源码里面看函数定义就明白了。。。
就是看函数定义里没有,所以才问的
因为打开字符设备的时候不需要名字 他只关心住此设备号~
cdev_add是往数组里面添加一个位置~ 针对一个设备
而register_chrdev是往数组里面添加N个位置, 针对的是一个类型的设备~ 起一个占位作用~
详细你可以看看input子系统
他就是使用register_chrdev占用了一个主设备号的所有次设备号~
然后open之后input子系统会根据你提供的次设备号为你准备不同的设备操作集 = =
说的有点抽象,cdev_add中就一个kobj_map函数,没看到你说的数组。
如果不需要名字再/proc/devices下如何显示?只有设备号,没名字?在/sys下也应该有个对应的目录吧(也需要名字啊)?显示设备信息
看的太晕了
http://blog.chinaunix.net/u1/57901/showart.php?id=1798359
你可以参考我写的这个
= = kobj_map的任务就是往数组里面加probe数组元素~
/proc我还没看~ 不过/sys下显示的是kobject的注册内容 和字符设备没啥关系~
你写一个字符设备,不在sys下注册kobject的话,sys也不会显示你这个字符驱动的目录结构~
想了解kobject的话
可以参考这个 , 正好也是说platform的
http://blog.chinaunix.net/u1/57901/showart.php?id=1803248
抽象的来说platform是名字一样就加载对应驱动的总线结构 = = 也就是说platform总线的匹配规则为名字
[ 本帖最后由 superfight 于 2009-3-26 18:03 编辑 ]
superfight
多谢!晚上回去看看