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

📄 mass_storage.h

📁 基于arm9的,usb设备(u盘)的读写操作实现.
💻 H
字号:
//定义了USB Mass Storage 类的一些命令及数据结构


#ifndef __USB_MASS_STORAGE__
#define __USB_MASS_STORAGE__


#define SUCCESS 0x00
#define FAIL    0x01
#define ERROR   0x02

//UFI子类命令
#define Test_Unit_Ready             0x00         //测试单元准备
#define Rezero_Unit                    0x01//归0
#define Request_Sense                   0x03 //请求判断
#define Format_Unit                 0x04         //格式化单元
#define Inquiry                     0x12         //查询
#define Mode_Sence_06                   0x1a
#define Star_Stop                   0x1B         //启动/停止
#define Send_Diagnostic             0x1D         //发送诊断
#define Mode_Select                 0x55         //模式选择
#define Mode_Sense                  0x5A         //模式判别
#define Medium_Removal              0x1E        //禁止/允许介质移除
#define Read_10                     0x28         //读10
#define Read_12                     0xA8         //读12
#define Read_Capacity               0x25         //读容量
#define Read_Format_capacity        0x23         //读格式化容量
#define Seek_10                     0x2B         //寻道10
#define Verify                      0x2F         //验证
#define Write_10                    0x2A         //写10
#define Write_12                    0xAA         //写12
#define Write_and_Verify            0x2E         //写并验证

unsigned char DISK_CAPACITY[8]=                                  //磁盘容量
{
 0x00,0x3c,0x93,0xff,
 0x00,0x00,0x02,0x00
};

unsigned char SENSE[0x12]=                                      //模式探测返回数据
{
  0x70,
   0x00,
   0x05,
   0x00,
   
   0x00,
   0x00,
   0x00,
   0x0a,
   
   0x00,
   0x00,
   0x00,
   0x00,
   
   0x20,
   0x00,
   0x00,
   0x00,
   
   0x00,
   0x00,
};

unsigned char REQUEST_1A[0x04]=                                      //模式探测返回数据
{
0x03, 0x00, 0x00, 0x00
};

unsigned char REQUEST_23[0x14/*12*/]=                                      //模式探测返回数据
{
0x00, 0x00, 0x00, 0x10, 0x00, 0x1e, 0x46, 0x00,      
0x02, 0x00, 0x02, 0x00, 0x00, 0x1e, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00

};
///*
unsigned char DISK_INF[36]
=                                      //磁盘信息
{
 0x00,
 0x00,
 0x02,
 0x02,
 0x1F,
 0x00,0x00,0x00,
 0x49,0x44,0x45,0xA1,0xFA,0x55,0x53,0x42, 
 0xC1,0xF5,0xC8,0xD9,0xD7,0xD4,0xBC,0xBA,0xD7,0xF6,0xB5,0xC4,0x4D,0x50,0x33,0x20,
 0x31,0x2E,0x30,0x31
};//*/

//定义命令块封包(CBW)
typedef struct _CBW
{
 unsigned long dCBWSignature;                    //CBW标志
 unsigned long dCBWTag;                          //命令块标签
 unsigned long int dCBWDataTransgerLength;        //数据包大小
 unsigned char bmCBWFlags;                       //D7位表示数据方向,0=out,1=in,其它位保留为0
 unsigned char bCBWLUN;                          //接收该命令的逻辑单元号LUN
 unsigned char bCBWCBLength;                     //表示CBWCB的长度
 unsigned char CBWCB[16];                        //子类命令
}
CBW, * pCBW;

//定义命令状态封包(CSW)
typedef struct _CSW
{
 unsigned long dCSWSignature;                    //CSW的标志
 unsigned long dCSWTag;                          //命令状态标志
 unsigned long dCSWDataResidue;                  //表示dCBWDataTransferLenhth字段中主机希望的数据长度与实际发送的数据长度的差额
 unsigned char bCSWStatus;                       //该命令执行的情况       
}
CSW, * pCSW;


#endif

⌨️ 快捷键说明

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