免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1500 | 回复: 0
打印 上一主题 下一主题

linux驱动学习总结-字符设备和usb设备 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-28 23:22 |只看该作者 |倒序浏览
匆匆看完了ldd3,觉得有个整体的把握很必要,接下来就重点学习usb驱动的编写。
    感觉不同设备驱动比较起来学习会理解的更深,于是稍微看了下字符设备和usb设备两种设备驱动编写的不同,写下来免得以后忘了。
    发现废话挺多的,第一次写嘛,原谅了。
    ldd3中的字符设备scull就是内存中模拟的一块,而scull driver当然就是将这个设备和内核连接起来的有力武器,具体到实现就是struct scull_device了,struct scull_device通过struct scull_qset *data将scull设备联系起来,而另一个成员struct cdev cdev当然就是用来和内核(或者用户空间)联系的东东,它也证明了scull确实是一个字符设备。话说起来好像简单,真正理解又是一会事。
    再看usb设备,不同于字符设备的接口的固定,比如data总是一个固定的地址,实际中的设备也会是一个固定的i/o地址,其实主要还是这个地址上的设备的功能比较固定;而usb却是可插拔的,而且插入的设备用来干什么还不知道(U盘,摄像头,键盘..数不清的),这怎么办呢,linux内核就通过usb core抽象所有的设备,你只要负责写你的设备的driver了,什么时候你的设备插上了,usb core就会去调用你为这个设备写得driver,这之中有一个struct usb_device_id比较重要,它用在driver中表示这个driver支持的设备标识,如果这个设备标识插上了,usb core就会知道告诉driver了。这些注定usb驱动的书写比起字符设备来说会复杂一些,(当然我说硬件操作复杂差不多的情况下,大家别拍我),好在内核给我们做了很多的事,实际写起来还不是复杂,但要弄清楚内部的机制还是挺困难的。
    先写这些吧,现在开始了我的usb设备驱动深入研究,同时比较不同设备的驱动书写来加深理解。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/95488/showart_2133657.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP