07.06.2013 Views

Scsi - Index of

Scsi - Index of

Scsi - Index of

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

266 __u8 bmAttributes;<br />

267 __u16 wMaxPacketSize;<br />

268 __u8 bInterval;<br />

269<br />

270 // NOTE: these two are _only_ in audio endpoints.<br />

271 // use USB_DT_ENDPOINT*_SIZE in bLength, not size<strong>of</strong>.<br />

272 __u8 bRefresh;<br />

273 __u8 bSynchAddress;<br />

274 } __attribute__ ((packed));<br />

至此,四大描述符一一亮相,在继续讲之前,我们先来小结一下:究竟什么是描述符?每个USB 设备都有<br />

这四大描述符,不过我们拿U盘来说.听说过Flash Memory 吗?Intel,三星,这些都是做Flash Memory<br />

的,<br />

当然通常人们就简称Flash. Flash 在U 盘中扮演什么角色?Flash 是用来给用户存储数据的,而U 盘中的<br />

Flash 就相当于PC 机中的硬盘,存储数据主要就靠它.那么除了给用户存储数据以外,设备自己还需要存储<br />

一些设备本身固有的东西,比如设备姓甚名谁?谁生产的?还有一些信息,比如该设备有几种配置,有几个接<br />

口,等等许多特性,这些东西怎么办?复旦大学97 电工四大才子之一,我在Intel 的老师加师兄曾经这样对<br />

我<br />

说:这个世界上,除了Flash memory 外,还有一个咚咚叫做EEPROM,也是用来存储的,它是EEPROM 的<br />

前身, 而Flash 是基于EEPROM 技术发展起来的一种低成本的ROM 产品. EEPROM 和Flash 相同,都<br />

是<br />

需要电擦除,但EEPROM 可以按字节擦除,而不向Flash 那样一次擦除一个block,这样在只需改动很少数<br />

56<br />

据的情况下使用EEPROM就很方便了.因此EEPROM 的这一特性,它的电路要复杂些,集成度不高,一个bit<br />

需要两个管子,一个用来储存电荷信息,一个充当开关.所以EEPROM的成本高,Flash 简化了一些电路,成本<br />

降低了很多.因此,通常,USB 设备里边,会有一个Flash 芯片,会有一个EEPROM 芯片,Flash 给客户存储<br />

数<br />

据,而EEPROM 用来存储设备本身的信息.这就是为什么当我们把Flash 芯片卖给Motorola 之后,客户看<br />

到的手机厂商是摩托罗拉而不是我们Intel,因为我们虽然在做Flash 的时候把我们的厂商ID 写在了Flash<br />

上,但是最终的成品对外来看,提供的信息都是来自EEPROM,所以当你把USB 设备通过USB 接口连到电<br />

脑上去,那么电脑上如果能显示厂家,那么一定是最终的包装厂家,而不可能是里边那块Flash 的厂家.而<br />

EEPROM 里边写什么?按什么格式写?这正是usb spec 规定的,这种格式就是一个个的描述符的格式.设<br />

备<br />

描述符,配置描述符,接口描述符,端点描述符,以及其它一些某一些类别的设备特有的描述符,比如hub 描<br />

述<br />

符.这些东西都是很规范的,尤其对于这四种标准的描述符,每个usb 设备都是规规矩矩的支持的,所以usb<br />

core 层可以用一段相同的代码把它们都给读出来,而不用再让我们设备驱动程序去自己读了,这就是权力<br />

集<br />

中的好处,反正大家都要做的事情,干脆让上头一起做了好了,这样的领导真是好啊!<br />

715 到733 行,循环, bNumEndpoints 就是接口描述符中的成员,表示这个接口有多少个端点,不过这<br />

其中不包括0 号端点,0 号端点是任何一个usb 设备都必须是提供的,这个端点专门用于进行控制传输,即<br />

它<br />

是一个控制端点.正因为如此,所以即使一个设备没有进行任何设置,usb 主机也可以开始跟它进行一些通<br />

信,<br />

因为即使不知道其它的端点,但至少知道它一定有一个0号端点,或者说一个控制端点.此外,通常usb mass

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!