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

📄 mass_conmmand.c

📁 usb host在ARM7上的实现
💻 C
字号:

#include "HostStack.h"


//****************************************************************************
// 函数名称:MCom_INQUIRY
// 输入参数:ComBuffPtr,命令缓冲区指针
// 输出参数:无
// 功能描述:查询命令
//****************************************************************************
void MCom_INQUIRY(uint8 *ComBuffPtr)
{
	INQUIRY_COMMAND *inquiry_ptr;
	/* 清0缓冲区(所有保留域填充0) */
	memset( ComBuffPtr , 0x00 , 12 );				
	inquiry_ptr = (INQUIRY_COMMAND *)ComBuffPtr ;
	
	/* 设置指令和参数 */
	inquiry_ptr->OperationCode = UFI_INQUIRY;		/* 命令代码 */ 
	inquiry_ptr->AllocationLength = 0x24 ;			/* 分配长度(固定值) */
}



//********************************************************************
// 函数名称:MCom_Read10
// 输入参数:ComBuffPtr,命令缓冲区指针
//				    LAB,逻辑块地址
//				    TrBlocks,读取逻辑块数
// 输出参数:无
// 功能描述:读块数据
//********************************************************************
void MCom_Read10(uint8 *ComBuffPtr,uint32 LBA, uint16 TrBlocks)
{
	READ_10		*read10_ptr;
	memset( ComBuffPtr , 0x00 , 12 );	
	read10_ptr = (READ_10 *)ComBuffPtr ;

	/* 设置指令和参数 */
	read10_ptr->OperationCode = UFI_READ10;		/* 命令代码 */ 
	read10_ptr->LBA_0 = (uint8)LBA;
	read10_ptr->LBA_1 = (uint8)(LBA/0x100);
	read10_ptr->LBA_2 = (uint8)(LBA/0x10000);
	read10_ptr->LBA_3 = (uint8)(LBA/0x1000000);
	
	read10_ptr->TransferLength_0= (uint8)TrBlocks;
	read10_ptr->TransferLength_1= (uint8)(TrBlocks/0x100);
}


//********************************************************************
// 函数名称:MCom_ReadCapacity
// 输入参数:ComBuffPtr,命令缓冲区指针
// 输出参数:无
// 功能描述:获取设备的容量
//********************************************************************
void MCom_ReadCapacity(uint8 *ComBuffPtr)
{
	READ_CAPACITY *read_capacity_ptr;
	memset( ComBuffPtr , 0x00 , 12 );	
	read_capacity_ptr = (READ_CAPACITY *)ComBuffPtr ;

	/* 设置指令和参数 */
	read_capacity_ptr->OperationCode = UFI_READCAPACITY;		/* 命令代码 */ 

}



//********************************************************************
// 函数名称:MCom_Write10
// 输入参数:ComBuffPtr,命令缓冲区指针
//				    LUN,逻辑单元号
//				    LAB,逻辑块地址
//				    TrBlocks,写入逻辑块数
// 输出参数:无
// 功能描述:写块数据
//********************************************************************
void MCom_Write10(uint8 *ComBuffPtr, uint32 LBA, uint16 TrBlocks)
{
	WRITE_10		*write10_ptr;
	memset( ComBuffPtr , 0x00 , 12 );	
	write10_ptr = (WRITE_10 *)ComBuffPtr ;
	
	/* 设置指令和参数 */
	write10_ptr->OperationCode = UFI_WRITE10;		/* 命令代码 */ 
	write10_ptr->LBA_0 = (uint8)LBA;
	write10_ptr->LBA_1 = (uint8)(LBA/0x100);
	write10_ptr->LBA_2 = (uint8)(LBA/0x10000);
	write10_ptr->LBA_3 = (uint8)(LBA/0x1000000);
	
	write10_ptr->TransferLength_0= (uint8)TrBlocks;
	write10_ptr->TransferLength_1= (uint8)(TrBlocks/0x100);
}



//********************************************************************
// 函数名称:MCom_RequestSense
// 输入参数:ComBuffPtr,命令缓冲区指针
// 输出参数:无
// 功能描述:请求判别数据
//********************************************************************
void MCom_RequestSense( uint8 *ComBuffPtr )
{
	REQUEST_SENSE	*RequestSense_ptr;
	memset( ComBuffPtr , 0x00 , 12 );	
	RequestSense_ptr =(REQUEST_SENSE	*) ComBuffPtr;
	RequestSense_ptr->OperationCode = UFI_REQUESTSENSE ;
	RequestSense_ptr->AllocationLength = 18;
}

⌨️ 快捷键说明

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