读Linux那些事儿之我是U盘笔记(四)
2011-04-22 08:30
197 查看
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 相关联的代码我们就都准备在这个文件里了.)
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 相关联的代码我们就都准备在这个文件里了.)
相关文章推荐
- 读Linux那些事儿之我是U盘笔记(三)
- 读Linux那些事儿之我是U盘笔记(七)
- 读Linux那些事儿之我是U盘笔记(二)
- 读Linux那些事儿之我是U盘笔记(一)
- 读Linux那些事儿之我是U盘笔记(五)
- 读Linux那些事儿之我是U盘笔记(六)
- 读Linux那些事儿之我是U盘笔记(八)
- Linux那些事儿之我是U盘(18)冬天来了,春天还会远吗?(二)
- Linux那些事儿之我是U盘(43)迷雾重重的Bulk传输(一)
- Linux那些事儿之我是U盘(50)跟着感觉走(二)
- 我的Linux笔记1--用U盘安装双系统
- 【转】 Linux那些事儿之我是U盘(22)通往春天的管道
- 【转】Linux那些事儿之我是U盘(43)迷雾重重的Bulk传输(一)
- Linux那些事儿之我是U盘(8)总线,设备,和驱动(上)
- Linux那些事儿之我是U盘(35)彼岸花的传说(三)
- Linux那些事儿之我是U盘(38)彼岸花的传说(六)
- U盘装Linux的那些事儿
- Linux那些事儿之我是U盘(51)光荣属于苹果,属于诺基亚,属于摩托罗拉,属于索尼爱立信
- 【转】Linux那些事儿之我是U盘(8)总线,设备,和驱动(上)
- 【转】Linux那些事儿之我是U盘(23)传说中的URB