📄 main.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 + -