⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 要开发USB海量存储设备类的驱动
💻 TXT
字号:
bulk-only 海量存储协议部分(设备端的驱动部分)
//*************************************************************************
*/

#include 
#include 
#include 

#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()
{

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -