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

📄 ufi.h

📁 arm(s3c440b)读写u盘源程序
💻 H
字号:
#ifndef _UFI_H
#define _UFI_H

#include "DataType.h"
#define CBW_SIGNATURE   0x43425355
#define CSW_SIGNATURE   0x53425355

//******************************************************************************
//The macroinstruction of USB Mass Storage Class -UFI Command Specification
//*****************************************************************************
#define UFI_CMD_FORMAT			0x04
#define UFI_CMD_INQUIRY			0x12
#define UFI_CMD_MODESELECT		0x15
#define UFI_CMD_MODESENSE6		0x1A
#define UFI_CMD_LOCKORNOT		0x1E
#define UFI_CMD_READ			0x28
#define UFI_CMD_READCAPACITY	0x25
#define UFI_CMD_REQUESTSENSE	0x03
#define UFI_CMD_STARTSTOPUNIT	0x1B
#define UFI_CMD_TESTUNITREADY	0x00
#define UFI_CMD_VERIFY			0x2F
#define UFI_CMD_WRITE			0x2A
/////////////////////////////////////////////////////////////////////
typedef struct _GENERIC_CDB {
	U8 OperationCode;
    U8 Reserved[15];
} GENERIC,*PGENERIC;

typedef struct _READ {
		BYTE Reserved1;
		BYTE L3;
		BYTE L2;
		BYTE L1;
		BYTE L0;
		BYTE Reserved2;
		WORD ReadLength;
		BYTE Reserved3;
		} READ, * PREAD;

//////////////////////////////////////////////////////
typedef struct _WRITE {
		BYTE Reserved1;
		BYTE L3;
		BYTE L2;
		BYTE L1;
		BYTE L0;
		BYTE Reserved2;
		U16 WriteLength;
		BYTE Reserved3;
		} WRITE, *PWRITE;	

///////////////////////////////////////////
typedef struct _READ_CAPACITY {
		BYTE Resverd2[8];
		BYTE Rseverd1;
	} READ_CAPACITY, *PREAD_CAPACITY;
//////////////////////////////////////////////////////

typedef struct _INQUIRY {
	BYTE Reserved0 ;
	BYTE PageCode;
	BYTE Reserved1;
	BYTE AllocationLen;
    BYTE Resverd2;		
	} INQUIRY, *PINQUIRY;
/////////////////////////////////////////////////////
typedef struct _REQUEST_SENSE {  
		BYTE Reserved1[3];
		BYTE AllocationLen;
		BYTE Reserved2;
	} REQUEST_SENSE, *PREQUEST_SENSE;
///////////////////////////////////////////////////
typedef struct _TEST_UNIT {
		BYTE Reserved[4];
		BYTE Reserved1;
	} TEST_UNIT, *PTEST_UNIT;
///////////////////////////////////////////////////////
typedef union _CBWCB{   
		GENERIC					ufi_GenRic;
		READ					Ufi_Read;
		READ_CAPACITY			Ufi_ReadCapacity;
		WRITE					Ufi_Write;
		INQUIRY					Ufi_Inquiry;
		REQUEST_SENSE			Ufi_RequestSense;
		TEST_UNIT				Ufi_TestUnit;
	} CBWCB, *PCBWCB;
//**********************************************************************************
//Defined the USB bulk transcation.
//the structure of  CBW( command Block Wrapper)and CSW(Command Status Wrapper)
//all the USB's packet are transferd by CBW,and the status are returned by 
//CSW.
//**********************************************************************************
typedef struct _COMMAND_BLOCK_WRAPPER{
		U32  dCBW_Signature;
		U32  dCBW_Tag;
		U32  dCBW_DataXferLen;
		BYTE   bCBW_Flag;
		BYTE   bCBW_LUN;
		BYTE   bCBW_CDBLen;	
		BYTE   OperationCode; 
		CBWCB  CBWCommand;		
	} CBW, *PCBW;
////////////////////////////////////////////////
typedef struct _COMMAND_STATUS_WRAPPER{
		U32   dCSW_Signature;
		U32   dCSW_Tag;
		U32   dCSW_DataResidue;
		BYTE    bCSW_Status;
	} CSW, *PCSW;
//////////////////////////////////////////////
typedef union _Block{
		CBW		CbwBlock;
		CSW		CswBlock;
	} BLOCK, * PBLOCK;
//**********************************************************************************
//Functions
//
//**********************************************************************************
BYTE BulkOut(BYTE *pbBuffer,U16 len);
BYTE BulkIn(BYTE *pbBuffer,U16 len);
BYTE Inquiry(void);
BYTE TestUnit(void);
BYTE RequestSense(void);
BYTE ReadCapacity(void);
BYTE Read(DWORD dlba,BYTE blen,BYTE *pbBuffer);
BYTE Write(DWORD dlba,BYTE blen,BYTE *pbBuffer);
BYTE PollDisk(void);

#endif

⌨️ 快捷键说明

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