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

📄 diag.c

📁 these r the codes of arm7 tdmi s3c4510b which r used to write codes for ethernet controller
💻 C
📖 第 1 页 / 共 2 页
字号:
	// Selected Function
	while(1) {
		switch(ch) {
		case 'U' : // P5 :Count up 
			if (SelCount == 0) SelCount = MAXTESTITEM ; 
			else SelCount-- ; 
			break; 
		case 'D' : // P6 Count down
			if (SelCount < MAXTESTITEM) SelCount++ ; 
			else SelCount = 0  ; 
			break; 
		case 'S' : // P7
			if (SelCount < MAXTESTITEM)
				{
				SelTestItemFunc[SelCount]() ; 
				// Should be attached get_key()
				lPrint("Press Any Key ...") ;
				//ch = get_key() ;
				LCDInit() ;
				continue ;
				}
			else return ; 
		default : break ;
		}
		break ;

	} // End of While : Select Function

	} // End of While : Main Routine
}

// Initialize Test Item Selection Function
void InitTestItemSelFunction(int nItem , void (*TestItem)())
{
    	SelTestItemFunc[nItem] = TestItem;
}

void MemTestDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("Memory Test ..") ;
	MemoryPartTest() ; 
	lPrint(" Finished.") ;
}

void CacheTestDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("Cache Test ..") ;
	CacheTest() ; 
	lPrint(" Finished.") ;
}
void IntTestDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("Interrupt Test ..") ;
	Print("\n Next Version Supported") ;
	//InterruptTest() ; 
	lPrint(" Finished.") ;
}

void DmaTestDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("DMA Test ..") ;
	GdmaTest() ; 
	lPrint(" Finished.") ;
}

void TimerTestDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("Timer Test ..") ;
	TimerTest() ; 
	lPrint(" Finished.") ;
}

void MacTestDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("MAC Test ..") ;
	MacTest() ; 
	lPrint(" Finished.") ;
}

void HdlcTestDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("HDLC Test ..") ;
	HdlcTest() ; 
	lPrint(" Finished.") ;
}

void I2CTestDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("I2C Test ..") ;
	//Print("\n Next Version Supported") ;
	IICTest() ; 
	lPrint(" Finished.") ;
}

void UartTestDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("UART Test ..") ;
	UartTest() ; 
	lPrint(" Finished.") ;
}


void IoFuncDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("I/O Port & share function Test ..") ;
	ioptest(); 
	lPrint(" Finished.") ;
}


void EtcTestDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("ETC Test ..") ;
	//Print("\n Next Version Supported") ;
	EtcTest() ;
	lPrint(" Finished.") ;
}

void AllTestDiag(void)
{
     char * s;

        l2Print("-NetMCU SNDS100-","Test Start..");

	/* TIMER 1 Initialized for mesuring the test time */
	tmReset(TIMER_DEV0);
	tm_init(TIMER_DEV0,(ONE_SECOND/TICKS_PER_SECOND));
	TimerStart(TIMER_DEV0);

	AllTestInternal(1) ;

	TimerStop(TIMER_DEV0);

        s = GetSysTime(TIMER_DEV0);

	if  (AllTestResult != 0 ) 
		{
		Print("\n $$$ All Test Failed !!!!!") ;
		Print("\n $$$ Error Occured Count : %d ", AllTestResult) ;
                l2Print("All Test FAIL!",s); 
		IOPDATA = 0x0f;
		lPrint(" Fail ?") ;
		}
	else
		{
		Print("\n $$$ All Test Passed !!!!!") ;
                l2Print("All Test PASS!",s); 
		IOPDATA = 0xaa ;
		}

	AllTestResult = 0 ;

	Print("\r-------------------------------------------------\r");
	PrtSysTime(TIMER_DEV0,"Total test time"); 
	Print("\r-------------------------------------------------\r");
	ClrTimeVar(TIMER_DEV0);
}

void DownloadDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("Downloading ..") ;
	DownLoadPgm() ; 
	lPrint(" Finished.") ;
}

void FusingDiag(void)
{
	LcdUsrModeSet() ;
	lPrint("Fusing ..") ;
	FlashDown() ; 
	lPrint(" Finished.") ;
}

void BenchMarkDiag(void)
{
	LcdUsrModeSet() ;
	l2Print("KS32C50100 SNDS100","Bench Marking test..") ;

      /* Timer0 used to measure the Dhryston performance */
        //TDATA0 = 0
        //TCNT0 = 0xffffffff;

	Dhrystone() ;
}

// Configuration View
void SysConfig(void)
{
	void *RO_Base 	= Image$$RO$$Base ;
	void *RO_End 	= Image$$RO$$Limit ;
	void *RW_Base 	= Image$$RW$$Base ;
	void *RW_End 	= Image$$RW$$Limit ;

	int *RO_BaseAddr, *RO_EndAddr, RO_Size ;
	int *RW_BaseAddr, *RW_EndAddr, RW_Size ;

	//int *ROM_
	LcdUsrModeSet() ;
	lPrint("System Configuration View ..") ;

	GetSizeOfRom() ;

	RO_BaseAddr = (int *)RO_Base ;
	RO_EndAddr = (int *)RO_End ;
	RO_Size = RO_EndAddr - RO_BaseAddr ;

	RW_BaseAddr = (int *)RW_Base ;
	RW_EndAddr = (int *)RW_End ;
	RW_Size = RW_EndAddr - RW_BaseAddr ;

        //CacheConfig(); // Cache & SRAM control stauts

	Print("\r===============================") ;
	Print("\r>> System Manager Status") ;
	Print("\r===============================") ;
	if (SPSTR & STALL_ENABLE) Print("\r   - Stall Enabled") ;
	else Print("\r   - Stall Disabled") ;

	if (SPSTR & CACHE_ENABLE) Print("\r   - Cache Enabled") ;
	else Print("\r   - Cache Disabled") ;

	if ((SPSTR & SRAM_CACHE) == 0x00 ) 
			Print("\r%6c4K SRAM, 4K CACHE",' ') ;
	else if ((SPSTR & SRAM_CACHE) == 0x10 ) 
			Print("\r%6c0K SRAM, 8K CACHE",' ') ;
	else if ((SPSTR & SRAM_CACHE) == 0x20 ) 
			Print("\r%6c8K SRAM, 0K CACHE",' ') ;
	else Print("\r%6cSRAM/CACHE Status : %x ",' ',(SPSTR & SRAM_CACHE) ) ; 

	if (SPSTR & WRITE_BUF_EN) Print("\r   - Write Buffer Enabled") ;
	else Print("\r   - Write Buffer Disabled") ;

	Print("\r   - SRAM Base Addr  : %8x",((SPSTR & 0xFFC0) << 10) ) ;
	Print("\r===============================") ;

	Print("\r>> Read Only Memory Used") ;
	Print("\r===============================") ;
	Print("\r   - Read Only Base  : %8x",RO_BaseAddr) ;
	Print("\r   - Read Only End   : %8x",RO_EndAddr) ;
	Print("\r   - Read Only Size  : %8d",RO_Size) ;
	Print("\r===============================") ;
	Print("\r>> Read/Write Memory Used") ;
	Print("\r===============================") ;
	Print("\r   - Read/Write Base : %8x",RW_BaseAddr) ;
	Print("\r   - Read/Write End  : %8x",RW_EndAddr) ;
	Print("\r   - Read/Write Size : %8d",RW_Size) ;
	Print("\r===============================") ;

}


void GetSizeOfRom(void)
{
	Print("\r===============================") ;
	Print("\r>> EEPROM Data Bus Size is ") ;
	if ( (EXTDBWTH & 0x3) == B0SIZE_BYTE ) 
			Print("BYTE") ;
	else if ( (EXTDBWTH & 0x3) == B0SIZE_SHORT ) 
			Print("SHORT") ;
	else if ( (EXTDBWTH & 0x3) == B0SIZE_WORD ) 
			Print("WORD") ;
}


void EtcTest0(void) 
{
	U32 *RomBase1, *DramBase1, *ExtIoBase2 ;
	Print("\n >> Etc Test <<") ;

	RomBase1 = (U32 *)ROMBasePtr1 ;
	DramBase1 = (U32 *)DRAMBasePtr1 ;
	ExtIoBase2 = (U32 *)EXTIOBasePtr2 ;

	Print("\n +- External Bank2 Read/Write : Press Any Key to Exit\r") ;
	Print("\r EXTACON1 : %x",EXTACON1) ;
	EXTACON1 = ETCOS2 | ETACS2 | ETCOH2 | ETACC2 ; 
	Print("\r EXTACON1 : %x\r",EXTACON1) ;

	do {
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
		*ExtIoBase2= *(ExtIoBase2+1) ;
	}while( !kbd_hit() ) ;

	Print("\n +- ROM Bank1 Read/Write : Press Any Key to Exit\r") ;
	do {
		*RomBase1 = *(RomBase1+1) ;
	}while( !kbd_hit() ) ;

	Print("\r DRAMCON0 : %x, DRAMCON1 : %x",DRAMCON0,DRAMCON1) ;
	Print("\r REFEXTCON : %x",REFEXTCON) ;
	Print("\n +- DRAM Bank1 Read/Write : Press Any Key to Exit\r") ;
	do {
		*DramBase1 = *(DramBase1+1) ;
	}while( !kbd_hit() ) ;

	Print("\n +- I/O Port 8 Write 1 ") ;
	IOPMOD = 0xF1F ;
	do {
		IOPDATA = 0xFF0 ;
	}while( !kbd_hit() ) ;

	Print("\n +- I/O Port 8 Write 0 ") ;
	do {
		IOPDATA = 0x001 ;
		IOPDATA = 0xF02 ;
		IOPDATA = 0x001 ;
		IOPDATA = 0xF02 ;
		IOPDATA = 0x001 ;
		IOPDATA = 0xF02 ;
		IOPDATA = 0x001 ;
		IOPDATA = 0xF02 ;
	}while( !kbd_hit() ) ;

}


⌨️ 快捷键说明

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