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

📄 usbfifo.c

📁 2410开发测试程序
💻 C
字号:
//====================================================================
// File Name : usbfifo.c
// Function	: S3C2410 USB FIFO Test
// Program	: Kang, Weon Tark (KWT)
// Date		: July 19, 2002
// Version	: 0.0
// History
//	0.0 : Programming start (July 19, 2002) -> KWT
//====================================================================

#include <string.h>
#include "2410addr.h"
#include "2410lib.h"
#include "def.h"

void MarchCMinus32(int address,int unit,unsigned int pattern);
void _MarchSub1(unsigned int *pt,int unit,unsigned int pattern,int incdec);
int MarchError;

int Test_USBFIFO(void)
{
	Uart_Printf("USB FIFO Cell Test by March C-\n");
	
	// Make test mode
	*(int *)0x52000280 = 0x1;
/*
	*(int *)0x52000100=0xffffffff;
	Uart_Printf("0x%x\n",*(int *)0x52000100);
*/
	MarchError=0;

	//00->01->11<->10

	MarchCMinus32(0x52000000,63,0x00000000); 
	MarchCMinus32(0x52000000,63,0x0f0f0f0f);
	MarchCMinus32(0x52000000,63,0x33333333);
	MarchCMinus32(0x52000000,63,0x55555555);
	MarchCMinus32(0x52000000,63,0xaaaaaaaa);

	if(MarchError==0)
	{
		Uart_Printf("USB FIFO is tested... OK!!\n");
		return 1; 
	}
	else
	{
		Uart_Printf("USB FIFO is tested... Fail!!\n");
		return 0;
	}
}

void MarchCMinus32(int address,int unit,unsigned int pattern)
{
	int i;
	unsigned int *tempPt;

	tempPt=(unsigned int *)address;

	for(i=0;i<=unit;i++)
	{
		//Uart_Printf("P=%x",pattern);
		*tempPt++=pattern;
		//Uart_Printf("A=%x,P=%x\n",tempPt,*tempPt);
	}

	Uart_Printf("\nWaitting 1 Sec\n");
	Delay(10000);
	Uart_Printf("Start\n");	
	
	_MarchSub1((unsigned int *)address,unit,~pattern,1);
	_MarchSub1((unsigned int *)address,unit,pattern,1);
	_MarchSub1((unsigned int *)address+unit,unit,~pattern,-1);
	_MarchSub1((unsigned int *)address+unit,unit,pattern,-1); 
	
	tempPt=(unsigned int *)address;
	for(i=0;i<=unit;i++)
	{
		if(*tempPt!=pattern)
		{
			MarchError=1;
//			Uart_Printf("ERROR0:%x\n",tempPt);
			Uart_Printf("ERROR0 : Address= 0x%8x,	Write= 0x%8x,	Read= 0x%8x\n",tempPt,pattern,*tempPt);			
		}
		tempPt++;
	}
	//Uart_Printf("RP=%x,RA=%x\n",*tempPt,tempPt);
}

void _MarchSub1(unsigned int *pt,int unit,unsigned int pattern,int incdec)
{
	unsigned int i,rp;

	for(i=0;i<=unit;i++)
	{
		rp=*pt;
		//Uart_Printf("RP=%x",*pt);
		*pt=pattern;
		//Uart_Printf("j=%x,p=%x,pt=%x\n",rp,(~pattern),pt);
		if(rp!=(~pattern))
		{
			MarchError=1;
//			Uart_Printf("ERROR1:A=%x,RP=%x,WP=%x \n",pt,rp,(~pattern));
			Uart_Printf("ERROR1 : Address= 0x%8x,	Write= 0x%8x,	Read= 0x%8x\n",pt,(~pattern),rp);
		}
		pt+=incdec;
	}
}

⌨️ 快捷键说明

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