读Linux那些事儿之我是U盘笔记(四)
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-05
10、 usb_stor_clear_halt函数讲解 Halt是endpoint的feature; CLEAR FEATURE那是所有的usb设备都通用的,它是usb spec所规定的 实际上usb spec 规定了,对于设备的bulk端点,每当设备在reset 之后,需要清除halt这个feature然后端点才能正常工作; 注释里说得很清楚,有些变态的设备,它就是不跟你按常理出牌,人家能正常响应GetMaxLUN这个request,它偏要耍个性,就是不认spec,你发送GetMaxLUN请求过来,它不予回复,它出现STALL的特点, 什么是STALL? 其实就是Halt,端点挂起,或者通俗一点理解,就是死机了.,毫无疑问,我们要把这个halt给清掉,否则设别没有办法工作了. 11、 SCSI SCSI设备驱动包含4个模块:sd_mod.ko,sr_mod.ko,st.ko,sg.ko 其中scsi_mod的模块为scsi的核心模块(scsi core); HBA:host bus adapter(scsi host),相应的驱动程序就叫Host Bus Adapter driver了; 所有的scsi设备都至少需要支持以下这四个scsi 命令: INQUIRY, REQUEST SENSE, SEND DIAGNOSTIC, TEST UNIT READY. 对于磁盘这样的设备(read,write,format unit等操作),SCSI协议里边称它为direct-access devices scsi host的作用:它主要就是负责发送命令给设备,然后设备就去执行命令.scsi host也被称为initiator(发起者),而scsi 设备被称为target(目的地). 如果我们没有scsi host,但是我们有遵守scsi协议接受scsi命令的device,那怎么办? 答:谁来发起命令?没有硬件我们用软件,命令是谁传递过来的?应用层?或者scsi core?不管是谁,只要我们能够把上层的命令传递给设备,那就Ok了对不对?scsi 核心层把一切都做好了,我们只要为一个scsi host申请相应的数据结构,让命令来了能够发送给设备,能够让设备接收到命令,那就万事大吉了对不对?或者说整个usb-storage的真正的功能也就实现了对不对? 18、scsiglue.c(glue就是胶水的意思,与scsi 相关联的代码我们就都准备在这个文件里了.) 本文出自 “Paul玩嵌入式Linux” 博客,请务必保留此出处http://zyg0227.blog.51cto.com/1043164/551008 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 鸟哥LINUX学习笔记下一篇: linux下只允许root登陆,其他用户都不能登陆
关于读Linux那些事儿之我是U盘笔记(四)的所有评论