阅读:2323回复:6
关于Mass Storage设备类的Bulk_Only的开发的问题。请赐教!
请教各位大虾,我现在要开发USB海量存储设备类的驱动,具体是采用掌上电脑(PDA)的FLASH作“电子硬盘”的功能,掌上电脑和PC之间的通讯和数据传送使用USB的BULK_ONLY方式传送,要求PDA插上PC时,刷新后在PC的资源管理器中能多出一个额外的硬盘出来(即PDA上的FLASH),并可对之进行等同于普通硬盘一样的文件操作。这需要在PDA端和主机端都要进行编程,现在先解决设备端的问题。我看了USB1.1的协议和我采用的芯片PDIUSBD12的资料,对标准设备请求的命令基本已经掌握,但是对该海量存储设备类的两个特定请求:
1、Bulk_Only Mass Storage Reset 2、Get Max Lun 由于没有现成的例程,不知道这两个设备请求的代码是如何编写的。 请问各位大虾和斑竹能否提供帮助?请不吝赐教! 除了以上两个问题,如果有大虾开发过类似的海量设备类的程序,希望共同探讨,我的邮箱:handsome_zcl@263.net。附件是我写的该类设备端的驱动的协议部分。请大虾们指正并完善。 |
|
|
沙发#
发布于:2001-11-29 08:47
有附件吗?我怎么看不到?附件怎么看?
|
|
板凳#
发布于:2001-11-29 09:23
哦,发帖时我是把它附上了,我也不知道怎么看。算了,直接把一部分主要的贴在下面行了。麻烦帮我看看怎么写:
/*------------------------------------------------------*/ /* //************************************************************************* // bulk-only 海量存储协议部分(设备端的驱动部分) //************************************************************************* */ #include <stdio.h> #include <string.h> #include <dos.h> #include \"BasicTyp.h\" #include \"common.h\" #include \"usb100.h\" #include \"chap_9.h\" #include \"Hal4Sys.h\" #include \"Hal4D13.h\" #include \"DEBUG.H\" #include \"ISO.H\" /* //************************************************************************* // Public Data //************************************************************************* */ extern D13FLAGS bD13flags; extern CONTROL_XFER ControlData; extern unsigned char flag4test; extern IO_REQUEST idata ioRequest; //------------------------------------------------------ /* //************************************************************************* // USB Device Descriptor //************************************************************************* */ #define MASS_NUM_ENDPOINTS 3 //CONTROL ENDPOINT + BULK-IN + BULK-OUT #define MASS_NUM_INTERFACE 1 //BULK-ONLY DATA INTERFACE #define MASS_NUM_ALTINTERFACE 1 //该接口只支持一个Alternate Setting #define MASS_CONFIG_DESCRIPTOR_LENGTH sizeof(USB_CONFIGURATION_DESCRIPTOR) \\ + MASS_NUM_ALTINTERFACE * sizeof(USB_INTERFACE_DESCRIPTOR) \\ + (MASS_NUM_ENDPOINTS * sizeof(USB_ENDPOINT_DESCRIPTOR)) USB_DEVICE_DESCRIPTOR MassDeviceDescr = { sizeof(USB_DEVICE_DESCRIPTOR), // 0x12 USB_DEVICE_DESCRIPTOR_TYPE, // 0x01 0x110, //usb spec1.1 USB协议版本号 1.10 0, // bDeviceClass 在接口描述符中指定 0, // bDeviceSubClass 在接口描述符中指定 0, // bDeviceProtocol 在接口描述符中指定 EP0_PACKET_SIZE, // 64 0x0471, //指定的销售商标识 0x0100, // 0x0100 产品ID 0x0100, //设备的版本号为1.00 0,//STR_INDEX_MANUFACTURER, 0,//STR_INDEX_PRODUCT, 0,//STR_INDEX_SERIALNUMBER, 1 //设备所拥有的配置的数目 }; USB_CONFIGURATION_DESCRIPTOR MassConfigDescr = { sizeof(USB_CONFIGURATION_DESCRIPTOR), // 0x9 USB_CONFIGURATION_DESCRIPTOR_TYPE, // 0x2 MASS_CONFIG_DESCRIPTOR_LENGTH, // 该配置所包含的配置、接口、终点、类及Vendor描述符总长度 1, //该配置上的接口数为1, 1, //配置值――SetConfiguration()的参数 0, //STR_INDEX_CONFIGURATION, 0xC0,//no remote wakeup ,self-powered 0x1 //最大工作电流2mA }; USB_INTERFACE_DESCRIPTOR MassInterfaceDescr = { sizeof(USB_INTERFACE_DESCRIPTOR), // 0x9 USB_INTERFACE_DESCRIPTOR_TYPE, // 0x4 0, //接口序号 0, // 接口所支持的bAlternateSetting MASS_NUM_ENDPOINTS, // 0x2 终点数目,不包括ENDPOINT0 USB_CLASS_CODE_MASS, // 0x08 USB_SUBCLASS_CODE_RBC, // 0x01 USB_PROTOCOL_CODE_BULKONLY, // 0x50 0, //STR_INDEX_INTERFACE }; USB_ENDPOINT_DESCRIPTOR MassEP_Descr[2] = { //EP0D BULK OUT { sizeof(USB_ENDPOINT_DESCRIPTOR), // 0x 07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 0x 05 0x01, // bEndpointAddress = 0x0? ,后四位表示The endpoint number USB_ENDPOINT_TYPE_BULK, // bmAttributes = 0x2 ,表示这是一个批终点 NONISO_FIFOSIZE_64, // wMaxPacketSize = 64 0 //不用于批终点 }, //EP0E BULK IN { sizeof(USB_ENDPOINT_DESCRIPTOR), // 0x 07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 0x 05 0x82, // bEndpointAddress = 0x8? ,后四位表示The endpoint number USB_ENDPOINT_TYPE_BULK, NONISO_FIFOSIZE_64, 0 } }; /* //************************************************************************* // 海量存储设备类BULK-ONLY类型传输的协议层 特定类的设备请求 //************************************************************************* */ void MASS_BulkOnlyReset() { } void MASS_GetMaxLUN() { } |
|
|
地板#
发布于:2001-11-29 15:20
Philips的D12有这种应用的sample
|
|
|
地下室#
发布于:2001-11-29 15:55
如果能有海量存储设备类的BULK_ONLY传输的现成的例子那就太好了,请问斑竹能否将该例子发给我?谢谢了!
|
|
|
5楼#
发布于:2001-11-29 16:00
我只有PHILP公司提供的标准设备请求的例子程序,是设备端的。没有海量存储的例程,如果斑竹有的话,麻烦发给我参考,谢谢!
|
|
|
6楼#
发布于:2001-11-30 13:03
为什么不去philips的网站上找?
|
|
|