快速业务通道

读Linux那些事儿之我是U盘笔记(七)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-05

32CDBcommand descriptor block 命令描述符块)

而我们为CDB准备了一个字符数组,结构体struct scsi_cmnd 中的unsigned char cmnd[16],length最大为12个字节

Empire CMS,phome.net
既然这个 CDB 16 个字节,那么为什么我们每次都判断 cmnd[0]就够了?仔细看这三幅图,注意到那个 Operation code,他代表了命令的名称

33CBWCSW,

Empire CMS,phome.net
command block wrappercommand status wrapper

Bulk only传输方式:host给设备发送一个CBW,然后device接收到了CBW,她会进行解释,然后按照CBW里定义的那样去执行她该做的事情,然后她会给host返回一个

Empire CMS,phome.net
CSW.CBW实际上是命令的封装包,CSW实际上是状态的封装包.

所谓的Bulk Only传输,总共就是三个阶段,命令传输阶段,数据传输阶段,状态传输阶段;

34urb VS sg

Empire CMS,phome.net

Sg都是最基本的传输单元,sg用于scatter gather模式,usb core提供了三个函数供他使用:usb_sg_init,usb_sg_wait,usb_sg_cancel

.我们要提交一个sg请求,需要做的是,先用usb_sg_init来初始化请求,然后

Empire CMS,phome.net
usb_sg_wait()正式提交,然后我们该做的就都做了.如果想撤销一个sg请求,那么调用usb_sg_cancel 即可.

35sense_buffer(跟着感觉走)(驱动出错了,要向设备请求出错信息)

sense_buffer[2]的低四位被称为Sense Key,

Empire CMS,phome.net
copyrequest_buffer中的时候,要再使用cpu_to_be32()给转回去.

本文出自 “Paul玩嵌入式Linux” 博客,请务必保留此出处http://zyg0227.blog.51cto.com/1043164/553476

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号