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.

974<br />

975 US_DEBUGP("Result <strong>of</strong> usb_reset_configuration is %d\n", result);<br />

976 if (result == -EPIPE) {<br />

977 US_DEBUGP("-- stall on control interface\n");<br />

978 } else if (result != 0) {<br />

979 /* it's not a stall, but another error -- time to bail */<br />

980 US_DEBUGP("-- Unknown error. Rejecting device\n");<br />

981 goto BadDevice;<br />

982 }<br />

983 }<br />

984 #endif<br />

看到这段代码,我笑了.因为#ifdef CONFIG_USB_STORAGE_SDDR09 说明这段代码跟我们无关.关于<br />

这些编译选项我们前面已然提过,第六感告诉我们这个选项是针对某种特殊产品的,对于这种特殊的产品,它<br />

在某些方面有它自己的要求,所以它会有它特殊的代码.具体到这个选项,我们看一下<br />

drivers/usb/storage/Kconfig 文件,这个文件里边介绍了该目录下每一个编译选项的作用.<br />

99 config USB_STORAGE_SDDR09<br />

100 bool "SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)"<br />

101 depends on USB_STORAGE && EXPERIMENTAL<br />

102 help<br />

103 Say Y here to include additional code to support the Sandisk SDDR-09<br />

104 SmartMedia reader in the USB Mass Storage driver.<br />

48<br />

105 Also works for the Microtech Zio! SmartMedia reader.<br />

可以看到,如果要支持Sandisk SDDR-09 SmartMedia 的读卡器,那你就打开这个编译选项吧.Sandisk<br />

是公司名,玩数码的人对这家公司不会陌生,中文名叫晟碟,这是一家全球最大的闪存数据存储产品供应商.<br />

而SmartMedia(简称SM)卡通常用于数码相机中,也曾一度被用于MP3 中,它也是一种flash memory<br />

存储卡.不过如今市面上很少有SM 卡了,因为其兼容性不好.眼下用得比较多的应该是CF 卡(Compact<br />

Flash)了.而读卡器就是用来把卡里边的数据读出来,使用USB 接口,从原理上来看和U 盘也是差不多. (顺<br />

便介绍一下,U 盘和存储卡的区别吧,我们所讲的U 盘,就是可以直接读写的存储器,而存储卡需要外部设备<br />

才能进行访问,如手机的闪存卡,数码相机的闪存卡等就只是一张卡,电脑不能直接对其进行访问,这就需要<br />

一种叫"读卡器"的外部设备进行识别,存储卡有多种,如XD、CF、SD、SM 等等,有些读卡器具有"多合一"<br />

的功能,可以对不同的闪存卡进行读写.而我们这段代码里以及接下来的代码中每一个条件编译开关显然对<br />

应的是一种读卡器.她们属于不同的厂商的不同的产品.)<br />

继续,这就是我们前面提到过的三个函数.get_transport,get_protocol,get_pipes.一旦结束了这三个函<br />

数,我们就将进入本故事的高潮部分.而在这之前,我们只能一个一个来看.好在这几个函数虽然不短,但是真<br />

正有用的信息只有一点点,所以可以很快的看完.<br />

985<br />

986 /* Get the transport, protocol, and pipe settings */<br />

987 result = get_transport(us);<br />

988 if (result)<br />

989 goto BadDevice;<br />

990 result = get_protocol(us);<br />

991 if (result)<br />

992 goto BadDevice;

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

Saved successfully!

Ooh no, something went wrong!