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

📄 dvb_usb.c

📁 DVB软件,基于CT216软件的开发源程序.
💻 C
📖 第 1 页 / 共 4 页
字号:
	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 + -