博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读Linux那些事儿之我是U盘笔记(四)
阅读量:5960 次
发布时间:2019-06-19

本文共 1108 字,大约阅读时间需要 3 分钟。

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 相关联的代码我们就都准备在这个文件里了.)
本文转自 曾永刚 51CTO博客,原文链接:http://blog.51cto.com/zyg0227/551008

转载地址:http://ssyax.baihongyu.com/

你可能感兴趣的文章
struts2源码分析-IOC容器的实现机制(上篇)
查看>>
meta之viewport
查看>>
手写SpringIoc底层实现代码,基于反射机制
查看>>
JPA学习笔记1——JPA基础
查看>>
Mac下Qt Creator无法输入中文的解决方法
查看>>
分享Android编程中Facebook图片加载库Fresco的使用
查看>>
【转载】知乎技术方案初探
查看>>
【转载】MySQL复制的概述、安装、故障、技巧、工具
查看>>
JXL导出Excel数据表
查看>>
数据库字段加1
查看>>
GNOME是最好的!
查看>>
Nginx 的软件负载均衡详解
查看>>
如何解决mysql主从延迟
查看>>
iOS App 之间的相互跳转
查看>>
Adaboost
查看>>
urllib2使用证书请求https
查看>>
iOS基于百度地图的开发 (百度地图BMKSearch问题) (作者不允许转载 我也没办法 ......
查看>>
往事两三则
查看>>
使用LiveData和DataBinding进行双向绑定
查看>>
Convert Url to InetAddress
查看>>