📄 dvb_usb.c
字号:
if (NULL == pu8OriginBuffer)
{
printf("[%s] Memory OriginBuffer Allocated Fail\n", __FILE__);
goto Exit1;
}
memset(pu8OriginBuffer, 0xAA, u32FileSize);
/* 2. the memory of compare data */
pu8CompareBuffer = DVB_MemoryAllocate(u32FileSize);
if (NULL == pu8CompareBuffer)
{
printf("[%s] Memory CompareBuffer Allocated Fail\n", __FILE__);
goto Exit2;
}
memset(pu8CompareBuffer, 0x55, u32FileSize);
/* origin: read file data */
if (0 == DVB_FILECTRL_FileRead(EN_USB_DEVICE, u32FileHandle,
u32FileSize, pu8OriginBuffer))
{
printf("[%s] Read Fail\n", __FILE__);
goto Exit3;
}
/* file seek to start */
DVB_FILECTRL_FileSeek(EN_USB_DEVICE, u32FileHandle, 0, EN_FILE_START);
printf("\n%08ld: ", (u32)0);
u32CompareCnt = 0;
while (u32TestCnt-- != 0)
{
/* compare: read file data */
if (0 == DVB_FILECTRL_FileRead(EN_USB_DEVICE, u32FileHandle,
u32FileSize, pu8CompareBuffer))
{
printf("[%s] Read Fail\n", __FILE__);
goto Exit3;
}
/* compare data */
b8CompareFlag = TRUE;
for (u32Index=0; u32Index<u32FileSize; u32Index++)
{
if (pu8OriginBuffer[u32Index] != pu8CompareBuffer[u32Index])
{
b8CompareFlag = FALSE;
break;
}
}
if (b8CompareFlag == TRUE) /* file compare OK! */
printf("O ");
else /* file compare ERROR! */
{
printf("X\n");
printf("%ld'th byte, [%02x][%02x]\n",
u32Index,
pu8OriginBuffer[u32Index],
pu8CompareBuffer[u32Index]);
for (i=0; i<(u32CompareCnt%16); i++)
printf(" ");
}
/* file seek to start */
DVB_FILECTRL_FileSeek(EN_USB_DEVICE, u32FileHandle, 0, EN_FILE_START);
memset(pu8CompareBuffer, 0x55, u32FileSize);
u32CompareCnt++;
if ( 0 == (u32CompareCnt%16) )
printf("\n%08ld: ", u32CompareCnt/16);
}
Exit3:
DVB_MemoryFree(pu8CompareBuffer);
Exit2:
DVB_MemoryFree(pu8OriginBuffer);
Exit1:
DVB_FILECTRL_FileClose(EN_USB_DEVICE, u32FileHandle);
printf("\n[%s] Test Complete\n", __FILE__);
return;
}
void DVB_USB_TestBenchMark(u32 u32StartSec, u32 u32TestMB)
{
u32 u32Index;
u32 u32TotalSectors = 0;
u32 u32SectorBytes = 0;
u32 u32T1 = 0;
u32 u32T2 = 0;
u32 u32TotleTime = 0;
u8 *pu8Buffer = NULL;
u16 u16ReadSectorNum;
u32 u32ReadTotalSize = 0;
/* Getting and setting current LUN */
for(u32Index=0; u32Index<32; u32Index++)
{
if( ((_stUSBLUNInfo.u32LUNs>>u32Index)&0x01) )
{
DVB_USB_Change_LUN(u32Index);
break;
}
}
/* General status info:
* total numbers of sector and bytes each sector
*/
DVB_USB_Status();
DVB_USB_SectorInfo(&u32TotalSectors, &u32SectorBytes);
/* Allocate 512KB memory */
pu8Buffer = DVB_MemoryAllocate(32*1024);
if (NULL == pu8Buffer)
{
printf("[%s] Memory Allocated Fail\n", __FILE__);
goto Exit1;
}
/* Read sector numbers */
u16ReadSectorNum = (u16)((32*1024) / u32SectorBytes);
DVB_USB_Read(u32StartSec, u16ReadSectorNum, pu8Buffer);
/* Write sector */
u32Index = 0;
while (u32ReadTotalSize < (u32TestMB*1024*1024))
{
CT_OS_MS_GetClock(&u32T1);
DVB_USB_Write(u32StartSec+u16ReadSectorNum*u32Index, u16ReadSectorNum, pu8Buffer);
CT_OS_MS_GetClock(&u32T2);
u32TotleTime += u32T2-u32T1;
u32Index++;
u32ReadTotalSize += (32*1024);
CT_OS_MS_Delay(2);
}
DVB_MemoryFree(pu8Buffer);
printf("WriteData: %ld(MB), Time: %ld(ms)\n", u32TestMB, u32TotleTime);
Exit1:
return;
}
//============================Test Function========================
//#ifdef ENABLE_USB_TEST
//u8 const au8USBTestData[] =
//{
// #include "USBTEST.TXT"
//};
//#define DATA_BUFFER_SIZE 512*64
//static u8* pu8DataBuffer = NULL;
//
//void DVB_USB_TestUsbWrite(u32 u32Cnt, u32 u32ChunkSize)
//{
// u8 au8FileName[13] = "USBTEST.JPG";
// u8 au8WriteFileName[13] = "USBWRITE.JPG";
// bool8 b8FileExist = FALSE;
// u32 u32ReadFileHandle,u32WriteFileHandle;
// u32 u32Index=0;
// u32 u32TestCnt = 0;
// u32 u32Size=0,u32TempSize=0;
// u8* pu8DataBuffer = NULL;
// bool8 b8Result = TRUE;
// u32 u32i;
// u32 u32InfoSize;
//
//
// b8FileExist = DVB_FILECTRL_FileExist(EN_USB_DEVICE,au8FileName);
// if(b8FileExist==FALSE)
// {
// USB_MSG(("\n\r File Not Found"));
// }
//
// b8FileExist = DVB_FILECTRL_FileExist(EN_USB_DEVICE,au8WriteFileName);
// if(b8FileExist==TRUE)
// {
// //Deltet the write file
// DVB_FILECTRL_FileDelete(EN_USB_DEVICE,au8WriteFileName);
// }
//
// //Allocate buffer
// if(pu8DataBuffer == NULL)
// {
// pu8DataBuffer = DVB_MemoryAllocate(DATA_BUFFER_SIZE);
// if(pu8DataBuffer == NULL)
// {
// USB_MSG(("\n\r Allocate Memory Fail"));
// return;
// }
// }
// memset(pu8DataBuffer,0,DATA_BUFFER_SIZE);
// //Open read file
// u32ReadFileHandle = DVB_FILECTRL_FileOpen(EN_USB_DEVICE,au8FileName,'r');
// u32Size = DVB_FILECTRL_GetFileSize(EN_USB_DEVICE,u32ReadFileHandle);
// u32TempSize = u32Size;
//
// //Open write file
// u32WriteFileHandle = DVB_FILECTRL_FileOpen(EN_USB_DEVICE,au8WriteFileName,'w');
//
// USB_MSG(("\n\rData Size %ld\n\r",u32Size));
// while((u32TestCnt<u32Cnt)&&(b8Result == TRUE))
// {
// while((u32TempSize>0)&&(b8Result == TRUE))
// {
// if(u32TempSize>512*u32ChunkSize)
// {
// DVB_FILECTRL_FileRead(EN_USB_DEVICE,u32ReadFileHandle,512*u32ChunkSize,pu8DataBuffer);
// DVB_FILECTRL_FileWrite(EN_USB_DEVICE,u32WriteFileHandle,512*u32ChunkSize,pu8DataBuffer);
// u32InfoSize = 512*u32ChunkSize;
// u32TempSize -= u32InfoSize;
// }
// else
// {
// DVB_FILECTRL_FileRead(EN_USB_DEVICE,u32ReadFileHandle,u32TempSize,pu8DataBuffer);
// DVB_FILECTRL_FileWrite(EN_USB_DEVICE,u32WriteFileHandle,u32TempSize,pu8DataBuffer);
// u32InfoSize = u32TempSize;
// u32TempSize -= u32InfoSize;
// }
// }
// DVB_FILECTRL_FileSeek(EN_USB_DEVICE,u32ReadFileHandle,0,EN_FILE_START);
// DVB_FILECTRL_FileClose(EN_USB_DEVICE,u32WriteFileHandle);
//
// //Open Write file to compare data
// u32WriteFileHandle = DVB_FILECTRL_FileOpen(EN_USB_DEVICE,au8WriteFileName,'r');
// u32TempSize = DVB_FILECTRL_GetFileSize(EN_USB_DEVICE,u32ReadFileHandle);
// while((u32TempSize>0)&&(b8Result == TRUE))
// {
// if(u32TempSize>512*u32ChunkSize)
// {
// DVB_FILECTRL_FileRead(EN_USB_DEVICE,u32WriteFileHandle,512*u32ChunkSize,pu8DataBuffer);
// u32InfoSize = 512*u32ChunkSize;
// if(memcmp(&au8USBTestData[u32Index],pu8DataBuffer,512*u32ChunkSize)!=0)
// {
// USB_MSG(("\n\r Read Write Data Error Cnt %ld Size %ld\n\r",u32TestCnt,u32TempSize));
// b8Result = FALSE;
// }
// else
// {
// u32TempSize -= u32InfoSize;
// u32Index += u32InfoSize;
// }
// }
// else
// {
// DVB_FILECTRL_FileRead(EN_USB_DEVICE,u32WriteFileHandle,u32TempSize,pu8DataBuffer);
// u32InfoSize = u32TempSize;
// if(memcmp(&au8USBTestData[u32Index],pu8DataBuffer,u32TempSize)!=0)
// {
// USB_MSG(("\n\r Read Write Data Error 1 Cnt %ld Size %ld Chunk %ld\n\r",u32TestCnt,u32TempSize,512*u32ChunkSize));
// b8Result = FALSE;
// }
// else
// {
// u32TempSize -= u32InfoSize;
// u32Index += u32InfoSize;
// }
// }
// }
// DVB_FILECTRL_FileClose(EN_USB_DEVICE,u32WriteFileHandle);
// if(b8Result == TRUE)
// {
// USB_MSG(("\n\r Cnt %ld",u32TestCnt));
// u32TestCnt++;
// u32TempSize = u32Size;
// u32Index = 0;
// }
// }
// if(b8Result == TRUE)
// {
// USB_MSG(("\n\r Test File Read Success"));
// }
// else
// {
// USB_MSG(("\n\r Test File Read Fail"));
// }
// DVB_FILECTRL_FileClose(EN_USB_DEVICE,u32ReadFileHandle);
//}
//
//void DVB_USB_TestUsbRead(u32 u32Cnt, u32 u32ChunkSize)
//{
// u8 au8FileName[13] = "USBTEST.JPG";
// bool8 b8FileExist = FALSE;
// u32 u32FileHandle;
// u32 u32Index=0;
// u32 u32TestCnt = 0;
// u32 u32Size=0,u32TempSize=0;
// u8* pu8DataBuffer = NULL;
// bool8 b8Result = TRUE;
// u32 u32i;
// u32 u32InfoSize;
//
//
// b8FileExist = DVB_FILECTRL_FileExist(EN_USB_DEVICE,au8FileName);
// if(b8FileExist==FALSE)
// {
// USB_MSG(("\n\r File Not Found"));
// }
// //Test Read
// if(pu8DataBuffer == NULL)
// {
// pu8DataBuffer = DVB_MemoryAllocate(DATA_BUFFER_SIZE);
// if(pu8DataBuffer == NULL)
// {
// USB_MSG(("\n\r Allocate Memory Fail"));
// return;
// }
// }
// memset(pu8DataBuffer,0,DATA_BUFFER_SIZE);
//
// u32FileHandle = DVB_FILECTRL_FileOpen(EN_USB_DEVICE,au8FileName,'r');
// u32Size = DVB_FILECTRL_GetFileSize(EN_USB_DEVICE,u32FileHandle);
// u32TempSize = u32Size;
//
// USB_MSG(("\n\rData Size %ld\n\r",u32Size));
// while((u32TestCnt<u32Cnt)&&(b8Result == TRUE))
// {
// while((u32TempSize>0)&&(b8Result == TRUE))
// {
// if(u32TempSize>512*u32ChunkSize)
// {
// DVB_FILECTRL_FileRead(EN_USB_DEVICE,u32FileHandle,512*u32ChunkSize,pu8DataBuffer);
// u32InfoSize = 512*u32ChunkSize;
// if(memcmp(&au8USBTestData[u32Index],pu8DataBuffer,512*u32ChunkSize)!=0)
// {
// USB_MSG(("\n\r Read Error Cnt %ld Size %ld\n\r",u32TestCnt,u32TempSize));
// b8Result = FALSE;
// }
// else
// {
// u32TempSize -= u32InfoSize;
// u32Index += u32InfoSize;
// }
// }
// else
// {
// DVB_FILECTRL_FileRead(EN_USB_DEVICE,u32FileHandle,u32TempSize,pu8DataBuffer);
// u32InfoSize = u32TempSize;
// if(memcmp(&au8USBTestData[u32Index],pu8DataBuffer,u32TempSize)!=0)
// {
// USB_MSG(("\n\r Read Error 1 Cnt %ld Size %ld Chunk %ld\n\r",u32TestCnt,u32TempSize,512*u32ChunkSize));
// b8Result = FALSE;
// }
// else
// {
// u32TempSize -= u32InfoSize;
// u32Index += u32InfoSize;
// }
// }
// }
// DVB_FILECTRL_FileSeek(EN_USB_DEVICE,u32FileHandle,0,EN_FILE_START);
// if(b8Result == TRUE)
// {
// USB_MSG(("\n\r Cnt %ld",u32TestCnt));
// u32TestCnt++;
// u32TempSize = u32Size;
// u32Index = 0;
// }
// }
// if(b8Result == TRUE)
// {
// USB_MSG(("\n\r Test File Read Success"));
// }
// else
// {
// USB_MSG(("\n\r Test File Read Fail"));
//#if 0
// for(u32i=0;u32i<u32InfoSize;u32i++)
// {
// printf(" 0x%2x",au8USBTestData[u32Index+u32i]);
// if((u32i+1)%16 ==0)
// {
// printf("\n\r");
// }
// }
// printf("\n\r========================================\n\r");
// for(u32i=0;u32i<u32InfoSize;u32i++)
// {
// printf(" 0x%2x",*(pu8DataBuffer+u32i));
// if((u32i+1)%16 ==0)
// {
// printf("\n\r");
// }
// }
//#endif
// }
// DVB_FILECTRL_FileClose(EN_USB_DEVICE,u32FileHandle);
//}
//
//
//void DVB_USB_TestUSB(u32 u32Count)
//{
// u8 u8RepeatCount;
//
// USB_MSG(("file size --> %lu bytes\n", sizeof(au8USBTestData)));
//
// for(u8RepeatCount = 0; u8RepeatCount < 7; u8RepeatCount++)
// {
// u32 u32Time1, u32Time2;
// u8 u8ChunkSize = 2 << u8RepeatCount;
//
// if(u8RepeatCount == 6)
// u8ChunkSize = 15;
//
// u32Time1 = DVB_TimerGet();
// DVB_USB_ChunkSize(u8ChunkSize);
// DVB_USB_TestUsbRead(u32Count, u8ChunkSize);
//
// u32Time2 = DVB_TimerGet();
// USB_MSG(("chunk size %d, read %d time take time = %lu\n", u8ChunkSize, u32Count, u32Time2 - u32Time1));
// }
//
// for(u8RepeatCount = 0; u8RepeatCount < 7; u8RepeatCount++)
// {
// u32 u32Time1, u32Time2;
// u8 u8ChunkSize = 2 << u8RepeatCount;
//
// if(u8RepeatCount == 6)
// u8ChunkSize = 15;
//
// u32Time1 = DVB_TimerGet();
// DVB_USB_ChunkSize(u8ChunkSize);
// DVB_USB_TestUsbWrite(u32Count, u8ChunkSize);
//
// u32Time2 = DVB_TimerGet();
// USB_MSG(("chunk size %d, write %d time take time = %lu\n", u8ChunkSize, u32Count, u32Time2 - u32Time1));
// }
//
//}
//#endif
//
//
//#define DATA_BUFFER_SIZE 512*64
//
//u8 const au8USBTestData[] =
//{
// #include "USBTEST.TXT"
//};
//
//static u8* pu8DataBuffer = NULL;
//
//
//void DVB_USB_TestUsbWrite(u32 u32Cnt, u32 u32ChunkSize)
//{
// u8 au8FileName[13] = "USBTEST.JPG";
// u8 au8WriteFileName[10][13];
// bool8 b8FileExist = FALSE;
// u32 u32ReadFileHandle,u32WriteFileHandle;
// u32 u32Index=0;
// u32 u32TestCnt = 0;
// u32 u32Size=0,u32TempSize=0;
// u8* pu8DataBuffer = NULL;
// bool8 b8Result = TRUE;
// u32 u32i;
// u32 u32InfoSize;
//
//
// b8FileExist = DVB_FILECTRL_FileExist(EN_USB_DEVICE,au8FileName);
// if(b8FileExist==FALSE)
// {
// USB_DEBUG(("\n\r File Not Found"));
// }
//
// //Allocate buffer
// if(pu8DataBuffer == NULL)
// {
// pu8DataBuffer = DVB_MemoryAllocate(DATA_BUFFER_SIZE);
// if(pu8DataBuffer == NULL)
// {
// USB_DEBUG(("\n\r Allocate Memory Fail"));
// return;
// }
// }
// memset(pu8DataBuffer,0,DATA_BUFFER_SIZE);
//
// u32Size = 3*1024*1024*1024;
// u32TempSize = u32Size;
//
// USB_DEBUG(("\n\rData Size %ld\n\r",u32Size));
//
// u32TestCnt = 0;
// while((u32TestCnt<u32Cnt)&&(b8Result == TRUE))
// {
// //Open write file
// sprintf(au8WriteFileName[u32TestCnt], "A%06d.JPG", u32TestCnt);
// u32WriteFileHandle = DVB_FILECTRL_FileOpen(EN_USB_DEVICE,au8WriteFileName[u32TestCnt],'w');
// printf(".");
//
// while((u32TempSize>0)&&(b8Result == TRUE))
// {
// if(u32TempSize>512*u32ChunkSize)
// {
// DVB_FILECTRL_FileWrite(EN_USB_DEVICE,u32WriteFileHandle,512*u32ChunkSize,au8USBTestData);
// u32InfoSize = 512*u32ChunkSize;
// u32TempSize -= u32InfoSize;
// }
// else
// {
// DVB_FILECTRL_FileWrite(EN_USB_DEVICE,u32WriteFileHandle,u32TempSize,au8USBTestData);
// u32InfoSize = u32TempSize;
// u32TempSize -= u32InfoSize;
// }
// }
// DVB_FILECTRL_FileClose(EN_USB_DEVICE,u32WriteFileHandle);
//
// //Open Write file to compare data
// if(b8Result == TRUE)
// {
// printf("\n\r Cnt %ld",u32TestCnt);
// u32TestCnt++;
// u32TempSize = u32Size;
// }
// }
// if(b8Result == TRUE)
// {
// USB_DEBUG(("\n\r Test File Read Success"));
// }
// else
// {
// USB_DEBUG(("\n\r Test File Read Fail"));
// }
//
// DVB_FILECTRL_FileClose(EN_USB_DEVICE,u32ReadFileHandle);
//}
//
//void DVB_USB_TestUSB(void)
//{
// u8 u8RepeatCount;
//
// USB_DEBUG(("file size --> %lu bytes\n", sizeof(au8USBTestData)));
//
// DVB_USB_ChunkSize(32);
// DVB_USB_TestUsbWrite(8, 32);
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -