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

📄 main.c

📁 三星mcu S3C4510B评估板的原码
💻 C
字号:
/*************************************************************************/
/*                                                                       */
/* FILE NAME                                      VERSION                */
/*                                                                       */
/* source\main.c                                   1.0                   */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*     DIAGNOSTIC CODE for S3C4510B0                                     */
/*                                                                       */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/* FUNCTIONS : main test routine                                         */
/*                                                                       */
/* DEPENDENCIES                                                          */
/*                                                                       */
/*                                                                       */
/* NAME:    Nicolas Park           				         */
/* The last Modification date:  18-April-2002                            */
/* REMARKS:  Created initial version 1.0                                 */
/*                                                                       */
/*                                Copyright (C) 2002 AIJISYSTEM CO.,LTD  */
/*************************************************************************/

#include <stdio.h>
#include <ctype.h>
#include "std.h"
#include "s3c4510b0.h"
#include "nbc_main.h"
#include "memory.h"
#include "download.h"
#include "pollio.h"
#include "uart.h"
#include "isr.h"
#include "c_lcd.h"
#include "i2c.h"
#include "timer.h"
#include "system.h"
#include "mac.h"
#include "sysconf.h"
#include "ioport.h"

extern U32 AllTestResult ;

ITEMS  SelTestItem[MAXTESTITEM] = {
         'm',  "* Memory Test",
         't',  "* Timer Test",
         'l',  "* MAC Test",
         's',  "* I2C Test",
         'u',  "* UART Test",
         'p',  "* Downloading" 
} ;


void Main(void)
{

while(1){
	system_init() ;
	PrintBanner() ;
	TestItemSelect() ;
	}
}

void system_init(void) 
{
	IOPMOD |= 0xff ; // General Purpose Register Mode Select
	IOPDATA = 0x0 ;

	InitInterrupt() ;

          UART_Initialize();

	LCDInit() ;
	IicSetup() ; 
	MacInitialize() ;

	IOPDATA = 0xF ;
	Enable_Int(nGLOBAL_INT);
}

void PrintBanner(void)
{
	Print("\n\n") ;
	Print("\n#########################################################\r") ;
	Print("\n#     NBC v1.1 (S3C4510B0) DIAGNOSTIC     June. 2002    #\r") ;
	Print("\n#########################################################\r") ;
	Print("\n# 1. User PGM Download  -[P] 2. Flash Download     -[F] #\r") ;
	Print("\n# 3. Memory Test        -[M] 4. Timer Test         -[T] #\r") ;
	Print("\n# 5. MAC/Ethernet Test  -[L] 6. I2C Test           -[S] #\r") ;
	Print("\n# 7. UART Test          -[U] 8. I/O Port Functions -[G] #\r") ;
	Print("\n# 9. View Configuration -[V]                            #\r") ;
	Print("\n#########################################################\r") ;
	Print("\n#             URL: www.aijisystem.com , www.mculand.com #\r") ;
	Print("\n#                        E-mail: openice@aijisystem.com #\r") ;
	Print("\n#########################################################\r") ;
}

void TestItemSelect(void)
{
	char ItemSel ;

	Print("\n\rSelect Test Item : ") ;
	ItemSel = get_byte();
		switch(ItemSel)
		{
		case 'P' :case '1' : case 'p' : DownloadDiag() ; break ;
		case 'F' :case '2' : case 'f' : FusingDiag() ; break ;
		case 'M' :case '3' : case 'm' : MemTestDiag() ; break ;
		case 'T' :case '4' : case 't' : TimerTestDiag() ; break ;
		case 'L' :case '5' : case 'l' : MacTestDiag() ; break ;
		case 'S' :case '6' : case 's' : I2CTestDiag() ; break ;
		case 'U' :case '7' : case 'u' : UartTestDiag() ; break ;
		case 'G' :case '8' : case 'g' : IoFuncDiag(); break ;
		case 'V' :case '9' : case 'v' : SysConfig() ; break ;

		default : Print("\nWrong Item Selected!!") ; 
		break ;
		}
	return ;
}


void InitTestItemSelFunction(int nItem , void (*TestItem)())
{
    	SelTestItemFunc[nItem] = TestItem;
}


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

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

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

void I2CTestDiag(void)
{
	lPrint("I2C Test ..") ;
	IICTest() ; 
	l1Print(" Test Finished. ") ;
}

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


void IoFuncDiag(void)
{
	l2Print("I/O Port & share","function Test ..") ;
	ioptest(); 
	l1Print(" Test Finished. ") ;
}


void DownloadDiag(void)
{
	lPrint("SDRAM download .") ;
	DownLoadPgm() ; 
	l1Print(" Test Finished. ") ;
}

void FusingDiag(void)
{
	lPrint("Flash download..") ;
	FlashDown() ; 
	l1Print(" Test Finished. ") ;
}

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 ;

	l2Print("System Configura","tions 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 ;

	Print("\n\r###################################") ;
	Print("\n\r#     SMR DATA VALUE              #") ;
	Print("\n\r###################################") ;
	if (SPSTR & STALL_ENABLE) Print("\n\r   - Stall Enabled") ;
	else Print("\n\r   - Stall Disabled") ;

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

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

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

	Print("\n\r###################################") ;
	Print("\n\r#   - SRAM Base Addr  : %8x  #",((SPSTR & 0xFFC0) << 10) ) ;
	Print("\n\r###################################") ;
	Print("\n\r# Read Only Memory Used           #") ;
	Print("\n\r###################################") ;
	Print("\n\r#   - Read Only Base  : %8x  #",RO_BaseAddr) ;
	Print("\n\r#   - Read Only End   : %8x  #",RO_EndAddr) ;
	Print("\n\r#   - Read Only Size  : %8d  #",RO_Size) ;
	Print("\n\r###################################") ;
	Print("\n\r# Read/Write Memory Used          #") ;
	Print("\n\r###################################") ;
	Print("\n\r#   - Read/Write Base : %8x  #",RW_BaseAddr) ;
	Print("\n\r#   - Read/Write End  : %8x  #",RW_EndAddr) ;
	Print("\n\r#   - Read/Write Size : %8d  #",RW_Size) ;
	Print("\n\r###################################") ;

}

void GetSizeOfRom(void)
{
	Print("\n") ;
	Print("\n\r##################################") ;
	Print("\n\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  #") ;
}

⌨️ 快捷键说明

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