快速业务通道

读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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号