📄 mass_conmmand.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 + -