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

📄 mass_command.h

📁 usb host在ARM7上的实现
💻 H
字号:
#ifndef _MASS_COMMAND_H
#define _MASS_COMMAND_H


// UFI指令代码定义
#define 	UFI_READ10				0x28
#define 	UFI_WRITE10			0x2A
#define 	UFI_INQUIRY				0x12
#define 	UFI_READCAPACITY		0x25
#define 	UFI_TESTUNITREADY		0x00
#define 	UFI_REQUESTSENSE		0x03


/* 查询命令结构定义 */
typedef struct _INQUIRY_COMMAND{
	unsigned char  	OperationCode;
	unsigned char		Reserved1;
	unsigned char 	PageCode;
	unsigned char		Reserved2;
	unsigned char		AllocationLength;
}INQUIRY_COMMAND,*PINQUIRY_COMMAND;


typedef struct _READ_10 {
	unsigned char	OperationCode;
	unsigned char	Reserved1;													
	unsigned char	LBA_3;
	unsigned char	LBA_2;
	unsigned char	LBA_1;
	unsigned char	LBA_0;
	unsigned char	Reserved2;
	unsigned char	TransferLength_1;
	unsigned char	TransferLength_0;
} READ_10, * PREAD_10;

typedef struct _READ_CAPACITY{
	unsigned char 	OperationCode;
	unsigned char		Reserved1;													
	unsigned char  	LBA_3;
	unsigned char  	LBA_2;
	unsigned char  	LBA_1;
	unsigned char  	LBA_0;
}READ_CAPACITY,*PREAD_CAPACITY;

typedef struct _WRITE_10 {
	unsigned char	OperationCode;
	unsigned char	Reserved1;													
	unsigned char	LBA_3;
	unsigned char	LBA_2;
	unsigned char	LBA_1;
	unsigned char	LBA_0;
	unsigned char	Reserved2;
	unsigned char	TransferLength_1;
	unsigned char	TransferLength_0;
} WRITE_10, *PWRITE_10;


typedef struct _REQUEST_SENSE{
	unsigned char 		OperationCode;
	unsigned char 		Reserved1[3];
	unsigned char 		AllocationLength;
}REQUEST_SENSE,*PREQUEST_SENSE;

typedef struct _SENSE_DATA{
	unsigned char		SenseKey;
	unsigned char		ASC;
	unsigned char		ASCQ;
}SENSE_DATA,*PSENSE_DATA;

#define GetVendorInformation(DataBuffPtr)		(uint8 *)((uint8 *)DataBuffPtr+8)
#define GetProductIdentification(DataBuffPtr)	(uint8 *)((uint8 *)DataBuffPtr+16)
#define GetProductRevisionLevel(DataBuffPtr)	(uint8 *)((uint8 *)DataBuffPtr+32)

#define	GetLastLogicalBlockAddress(x)   	(uint32)(x[3]+x[2]*0x100+x[1]*0x10000+x[0]*0x1000000)
#define	GetBlockLengthInBytes(x)   		(uint32)(x[7]+x[6]*0x100+x[5]*0x10000+x[4]*0x1000000)

void MCom_INQUIRY(uint8 *ComBuffPtr);
void MCom_Read10(uint8 *ComBuffPtr,uint32 LBA, uint16 TrBlocks);
void MCom_ReadCapacity(uint8 *ComBuffPtr);
void MCom_Write10(uint8 *ComBuffPtr,uint32 LBA, uint16 TrBlocks);
void MCom_RequestSense(uint8 * ComBuffPtr);
#endif

⌨️ 快捷键说明

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