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;