亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 2410bios.c

?? 本人水品有限
?? C
字號:
#include "def.h"
#include "2410addr.h"
#include "2410lib.h"
#include "2410slib.h"
#include "mmu.h"
#include "uart.h"
#include "timer.h"
#include "39vf160.h"
#include "LCD.h"
#include "PowerManage.h"

void call_linux(U32 a0, U32 a1, U32 a2);
void UsbMain(void);
void comdownload(void);
void NandWrite(void);
void NandLoadRun(void);
void NandErase(void);

#define START_ADDRESS   (_NONCACHE_STARTADDRESS)
//#define START_ADDRESS   (_NONCACHE_STARTADDRESS+0x2f00000)   
#define END_ADDRESS     (_NONCACHE_STARTADDRESS+0x2feff00)

#define PATTERN00       0x00000000
#define PATTERN01       0x55555555
#define PATTERN11       0xffffffff
#define PATTERN10       0xaaaaaaaa

#define PATTERNADDR     0               //1: Address = Pattern ,  0: Pattern
#define PATTERN_INVERT  1               //1: Pattern Invert    ,  0: Pattern Non Invert 

void mem_write_read (int address, int end_addr, int pattern);
extern U32 downloadAddress, downloadFileSize;
static EnvParams Env;
U32	Console_Uart = 0;
U32	Console_Baud = 115200;
char boot_params[256];

static short DsAutoBoot;
static short NorFlashSupport = 0 ;

volatile int PwrKeyChkEnd;

//*****************************************************************************
void GetBootParam(void)
{
	U16 cmd_cnt = 0;
	char tmp[256] = {0};
	
	puts("Set boot params, press Enter to finish, Esc to abort\n");
	while(1) {
		char c = getch();
		if(c==0x1b) 
			return;
		
		if(c==0xd)
			break;
		if((c==0x8)&&(cmd_cnt)) {			
			cmd_cnt -= 1;
			tmp[cmd_cnt] = 0;
			putch(c);
			putch(' ');
			putch(c);
		}
		else {
			if(cmd_cnt<255) {
				putch(c);
				tmp[cmd_cnt++] = c;
				tmp[cmd_cnt]   = 0;
			}
		}		
	}

	for(cmd_cnt=0; tmp[cmd_cnt]; cmd_cnt++)
		boot_params[cmd_cnt] = tmp[cmd_cnt];
	boot_params[cmd_cnt] = 0;			
}

//*****************************************************************************
static __inline int RtcAlmWake(void)
{	
	return ((rBCDHOUR==rALMHOUR)&&(rBCDMIN==rALMMIN));
}

//*****************************************************************************
static void ProgNorFlash(void)
{
	if(NorFlashSupport) {
		SectorProg(0, (U16 *)downloadAddress, downloadFileSize);
	}
}


//*****************************************************************************
void mem_write_read (int address, int end_addr, int pattern)
{
    int i, addr1, addr2;
    
    addr1 = 0x31000000;
    addr2 = 0x33feff00;
    
    Uart_Printf("\n*** Memory Test Pattern= 0x%08x and 0x%08x\n",pattern,~pattern);
   
//    Uart_Printf("Now, Writing ...\n");

    Uart_Printf("Memory Testing ...\n");    

    for(i=0;i<1000000;i++)
    {    
        *((U32 *)addr1) = pattern;
        *((U32 *)addr2) = ~pattern;            
    
   	    if (!(*((U32 *)addr1) == pattern))
            Uart_Printf("Error!!!: Address= 0x%08x,    Write= 0x%08x,   Read= 0x%08x\n",addr1,pattern,*((U32 *)addr1));
        
   	    if (!(*((U32 *)addr2) == ~pattern))
            Uart_Printf("Error!!!: Address= 0x%08x,    Write= 0x%08x,   Read= 0x%08x\n",addr2,~pattern,*((U32 *)addr2));        
            
        *((U32 *)addr1) = ~pattern;
        *((U32 *)addr2) = pattern;            
    
   	    if (!(*((U32 *)addr1) == ~pattern))
            Uart_Printf("Error!!!: Address= 0x%08x,    Write= 0x%08x,   Read= 0x%08x\n",addr1,~pattern,*((U32 *)addr1));
        
   	    if (!(*((U32 *)addr2) == pattern))
            Uart_Printf("Error!!!: Address= 0x%08x,    Write= 0x%08x,   Read= 0x%08x\n",addr2,pattern,*((U32 *)addr2));            
    }
    Uart_Printf("Testing Completed.\n");      	    
    //Uart_Printf("Press to any key. Continue...\n");
    //while(!Uart_GetKey());      
}
//*****************************************************************************
void SDRAM_Test(void)
{
 int i;
    
    Uart_Printf("\n[ Memory Write/Read/Compare Test ]\n");
    
//    Uart_Printf("Start Address= 0x%08x,  End Address= 0x%08x, Size= %d Bytes\n",
//               START_ADDRESS,END_ADDRESS,(END_ADDRESS-START_ADDRESS));    

    if (!PATTERNADDR)
    {
        
        mem_write_read (START_ADDRESS, END_ADDRESS, 0xffff5555);   
        mem_write_read (START_ADDRESS, END_ADDRESS, 0xaaaaffff);
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x5555ffff);   
        mem_write_read (START_ADDRESS, END_ADDRESS, 0xffffaaaa);
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x0000ffff); 
        mem_write_read (START_ADDRESS, END_ADDRESS, 0xffff0000);
        mem_write_read (START_ADDRESS, END_ADDRESS, 0xa5a5a5a5);
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x5a5a5a5a);
        
        mem_write_read (START_ADDRESS, END_ADDRESS,  PATTERN00);    // 0x00000000
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x11111111);
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x22222222);
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x33333333); 
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x44444444);
        mem_write_read (START_ADDRESS, END_ADDRESS, PATTERN01);    // 0x55555555
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x66666666);
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x77777777);
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x88888888);  
        mem_write_read (START_ADDRESS, END_ADDRESS, 0x99999999); 
        mem_write_read (START_ADDRESS, END_ADDRESS,  PATTERN10);    // 0xaaaaaaaa
        mem_write_read (START_ADDRESS, END_ADDRESS, 0xbbbbbbbb);
        mem_write_read (START_ADDRESS, END_ADDRESS, 0xcccccccc); 
        mem_write_read (START_ADDRESS, END_ADDRESS, 0xdddddddd); 
        mem_write_read (START_ADDRESS, END_ADDRESS, 0xeeeeeeee);
        mem_write_read (START_ADDRESS, END_ADDRESS,  PATTERN11);    // 0xffffffff                                                                                                                                                          
        
//        mem_write_read (START_ADDRESS, END_ADDRESS, PATTERN01);    // 0x55555555 
//        mem_write_read (START_ADDRESS, END_ADDRESS, 0xa5a5a5a5);
 
        for (i=0;i<32;i++)          // Data Bit
            mem_write_read (START_ADDRESS, END_ADDRESS, (1<<i)); 
        for (i=0;i<31;i++)
            mem_write_read (START_ADDRESS, END_ADDRESS, (3<<i)); 
        for (i=0;i<30;i++)
            mem_write_read (START_ADDRESS, END_ADDRESS, (7<<i)); 
        for (i=0;i<29;i++)
            mem_write_read (START_ADDRESS, END_ADDRESS, (0xf<<i));           
                                                   
    }
    else
    {
        mem_write_read (START_ADDRESS, END_ADDRESS, PATTERN00);        
    }

    Uart_Printf("Memory Test Completed.\n");
}
/****************** by chang *****************************/
static void Set_Auto_Run(void)
{
	printf("Please Input Number:");
	Env.Os_Auto_Flag=getch()-'0';
	//Env.Os_Auto_Flag=1;
	printf("%x\n",Env.Os_Auto_Flag);
	NFSaveParams((char *)&Env);
}
/***************** by chang *****************************/
struct {
	void (*fun)(void);
	char *tip;
}CmdTip[] = {
				{UsbMain, "USB download file"},
				{comdownload, "Uart download file"},
				{NandWrite, "Write Nand flash with download file"},
				{NandLoadRun, "Load Pragram from Nand flash and run"},
				{NandErase, "Erase Nand flash regions"},
				//{ProgNorFlash, "Write NOR flash with download file"},
				{GetBootParam, "Set boot params"},
				{NandLoadRunW,"Run Wince"},
				{Set_Auto_Run,"Set AutoBoot parameter,1:linux 2:wince"},
				{EnterPowerOff, "Test Power off"},
				{SDRAM_Test, "test SDRAM Memory"},
				{0, 0}						
			};

static int Wince_Run=0;	
//*****************************************************************************
static void AutoBoot(U32 i)
{
	static cnt = 10;		//5s
	if(!--cnt) {
		ReleaseBiosTimerEvent(i);
		//if(!DsAutoBoot)
		//	NandLoadRun();
	if((!DsAutoBoot)&&(Env.Os_Auto_Flag==1))NandLoadRun();
	if(Env.Os_Auto_Flag==2)Wince_Run=1;
	//if((!DsAutoBoot)&&(Env.Os_Auto_Flag==2))NandLoadRun();
	}
	rGPBDAT ^= 1<<5;
}


struct st_date
{
    U32 year;
    U16 month;
   
    U16 day;
    U16 hour;
    U16 minute;
    U16 second;
};

void rtcsetdate(struct st_date *p_date)
{
	rRTCCON=0x01;
		
	rBCDYEAR= p_date->year;
 	rBCDMIN= p_date->minute;
 	rBCDDAY= p_date->day;
 	rBCDMON=p_date->month;
 	rBCDHOUR= p_date->hour;
 	rBCDSEC = p_date->second;

	rRTCCON =0x00;

}

void rtc_display(void)
{
	U32 year;
	U16 month,day,hour,minute,second;
	year = 0x2000+rBCDYEAR  ;		//年
	month = rBCDMON  ;		//月
	day = rBCDDAY  ;		//日	
//	eek = rBCDDAY  ;		//星期
	hour = rBCDHOUR  ;		//小時
	minute = rBCDMIN  ;		//分
	second = rBCDSEC  ;		//秒
   	Uart_Printf( "RTC time : %04x-%02x-%02x %02x:%02x:%02x\n", year, month, day, hour, minute, second );
}

void Isr_Eint0(void)
{
	ClearPending(BIT_EINT0);
	Uart_Printf("中斷服務程序");
	Delay(10000);
	Uart_Printf("返回");
	Delay(100000);
}

void Eint0_Init(void)
{
	EnableIrq(BIT_EINT0);
	rEXTINT0 = rEXTINT0 | 0xff;
	rEXTINT0 = rEXTINT0 & 0x22;
	pISR_EINT0 = (U32)Isr_Eint0;
	ClearPending(BIT_EINT0);
}

/******************************************************************************
【功能說明】系統主函數
******************************************************************************/
void Main(void)
{
	int i;
	ChangeClockDivider(1, 1);	// 1:2:4//struct st_date tt1;//int i;
	ChangeMPllValue(161,3,1);	//FCLK=203.0Mhz
	SetClockDivider(1, 1);
	SetSysFclk(FCLK_203M);		//to save power, use 48M
	Port_Init();
	Isr_Init();
	Eint0_Init();
	Uart_Init(0, Console_Baud);
	Uart_Select(Console_Uart);	
#if 1			//bank0 modified to RO_START
 	MMU_Init();	
	//MMU should be reconfigured or turned off for the debugger, 
	//After downloading, MMU should be turned off for the MMU based program,such as WinCE.	
#else
	MMU_EnableICache();
	UsbMain();
#endif
    puts("\n\n\n\n");
	puts("http://www.hfrk.net \n");
	Uart_Printf("實時時鐘測試程序");
	while(1)
    {
    	rGPFDAT = rGPFDAT & 0x3f;
    	Delay(10000);
		Uart_Printf("等待___");
		Delay(10000);
		puts("\n");
		puts("zai 再等待,顯示時間:");
		Delay(10000);
		rtc_display();
		rGPFDAT = rGPFDAT | 0xc0;
		Delay(10000);
	}
//enable GPIO,UART0,PWM TIMER,NAND FLASH module clock
/*	EnableModuleClock(CLOCK_ALL);	
	LcdBackLightOn();
	Delay( 0 ) ;
	PwrKeyChkInit();
	if(RstStat&1) {
		puts("Power on reset\n");
//		EnterPowerOff();
	}
	if(RstStat&4) {
		puts("Watchdog reset\n");
//		EnterPowerOff();
	}
	if(RstStat&2) {
		puts("Power-off reset\n");
		if(RtcAlmWake()) {
			puts("Alarm wake up\n");
			printf("RTC hr : %d, min : %d\nALM hr : %d, min : %d\n", rBCDHOUR, rBCDMIN, rALMHOUR, rALMMIN);
		} else if( PwrKeyWake() ) {			
			PwrKeyChkEnd = 1;
			RequestBiosTimerEvent(1, PwrKeyChk);	//reload value = 1, 10ms*1 = 10ms
			while(PwrKeyChkEnd>0);
			if(PwrKeyChkEnd!=0)
				EnterPowerOff();
			puts("Power key wake up\n");
		}
	}	
	rMISCCR &= ~(0x3007);		//USB port0,1 = normal, D0~D31 pull-up enable
	Set_Tout1_Pwm( 60 ) ;
	if(rGPFDAT&0x1) {
	Test_Lcd_Tft_16Bpp_240_320();
	}
	else
	Test_Lcd_Tft();
	RequestBiosTimerEvent(50, AutoBoot);	//reload value = 50, 10ms*50 = 500ms
	NFSearchParams((char *)&Env);
	printf("Env.Os_Auto_Flag=%x\n",Env.Os_Auto_Flag);
	if(rBWSCON&6)
	{
		U32 nor_flash_id;
		
		nor_flash_id = GetFlashID();
		puts("NOR Flash Boot, ");
		printf("Read ID is : 0x%x\n", nor_flash_id);
		
		if ( (nor_flash_id==0x278200bf) | (nor_flash_id==0x234b00bf) )
		{
			NorFlashSupport = 1 ;
			if(nor_flash_id==0x278200bf)		puts("SST39VF160 found\n");
			if(nor_flash_id==0x234b00bf)		puts("SST39VF1601 found\n");
		}
		else
			printf( "Not supported NorFlash found!!!\n" ) ;
		
	}
	else 
		puts("NAND Flash Boot\n");
	while(1)
	{
		U8 idx=0;
		puts("\nPlease select function : \n");	
		for(i=0; CmdTip[i].fun!=0; i++)
			printf("%d : %s\n", i, CmdTip[i].tip);
		while((!idx)&&(Wince_Run!=1))
		{
			idx=getkey();
			//if(Wince_Run==1)NandLoadRunW();
			if((idx==0)&&(Wince_Run==1))NandLoadRunW();//(*CmdTip[7].fun)();
		}
		//if(Wince_Run==1)(*CmdTip[7].fun)();
		DsAutoBoot = 1;	//when get a key press, disable auto boot
		idx -= '0';
		printf("%x\n",idx);
		if(idx<i)
		{
			(*CmdTip[idx].fun)();
		}
		Wince_Run=0;
		
	}*/
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本欧洲一区二区| 色狠狠一区二区三区香蕉| 国产不卡免费视频| 在线观看不卡一区| 国产日产精品一区| 图片区小说区区亚洲影院| 国产99一区视频免费| 欧美网站大全在线观看| 国产日产欧美一区| 日韩高清不卡在线| 色婷婷综合五月| 国产欧美日韩中文久久| 美腿丝袜亚洲三区| 亚洲精品一区二区三区香蕉| 亚洲色图在线播放| 国产精品69毛片高清亚洲| 欧美视频第二页| 亚洲欧美日韩国产成人精品影院 | 日韩av一二三| 日本韩国欧美在线| 国产精品少妇自拍| 蜜桃91丨九色丨蝌蚪91桃色| 欧美系列一区二区| 国产精品福利一区二区三区| 国内精品嫩模私拍在线| 91精品国产免费久久综合| 一区二区三区精品在线观看| 成人晚上爱看视频| 国产香蕉久久精品综合网| 欧美aaa在线| 欧美美女网站色| 一区二区三区精密机械公司| 成人黄色小视频| 欧美韩国日本不卡| 国产一区二区在线观看视频| 日韩免费视频一区| 久久er99热精品一区二区| 欧美日韩视频第一区| 一区二区三区 在线观看视频| 成人黄色大片在线观看| 国产午夜亚洲精品午夜鲁丝片| 欧美日韩三级视频| 亚洲成人免费影院| 欧美伦理影视网| 五月激情六月综合| 欧美一级日韩一级| 久久精品国内一区二区三区| 日韩欧美国产午夜精品| 美女久久久精品| 久久久亚洲精华液精华液精华液| 国内一区二区视频| 国产欧美精品在线观看| 国产成人精品亚洲777人妖 | 欧美日韩精品一区二区三区四区| 一区二区在线观看视频| 欧美日韩亚洲综合| 美女视频黄久久| 久久免费看少妇高潮| 国产iv一区二区三区| 中文字幕亚洲欧美在线不卡| 99久久免费国产| 亚洲午夜精品网| 日韩一级黄色大片| 国产91精品精华液一区二区三区 | 亚洲精品一区二区三区在线观看| 国产精品小仙女| 亚洲欧美另类久久久精品2019| 91黄视频在线观看| 久久99久国产精品黄毛片色诱| 久久久久高清精品| 欧美在线免费观看视频| 久久国产尿小便嘘嘘尿| 国产亚洲精品久| 欧美性色黄大片| 久久激情综合网| 亚洲人123区| 欧美一区在线视频| 91在线视频网址| 久久丁香综合五月国产三级网站| 中文字幕精品综合| 精品视频999| 成人免费视频视频在线观看免费| 香蕉久久一区二区不卡无毒影院 | 久久先锋影音av| 91国在线观看| 欧美午夜精品久久久| 国产美女主播视频一区| 亚洲在线成人精品| 国产人久久人人人人爽| 69久久99精品久久久久婷婷| 国产丶欧美丶日本不卡视频| 亚洲mv在线观看| 国产精品理伦片| 亚洲精品一线二线三线无人区| 欧美最猛性xxxxx直播| 国产在线国偷精品免费看| 香蕉成人伊视频在线观看| 国产精品萝li| 久久女同性恋中文字幕| 欧美日韩久久久| 91浏览器打开| 成人精品视频一区| 精品在线播放午夜| 日韩国产欧美视频| 亚洲午夜免费电影| 亚洲女人****多毛耸耸8| 国产日韩精品视频一区| 日韩一区二区三区四区五区六区| 在线视频亚洲一区| 91美女视频网站| 波多野结衣一区二区三区 | 91视视频在线直接观看在线看网页在线看| 久久9热精品视频| 日本午夜精品视频在线观看| 亚洲午夜精品一区二区三区他趣| 国产精品美女久久久久av爽李琼| 久久免费视频色| 337p粉嫩大胆噜噜噜噜噜91av| 欧美一区三区二区| 91精品国产综合久久久久久漫画| 欧美日韩中文另类| 欧美三级一区二区| 欧美日韩激情一区二区三区| 91国产成人在线| 精品污污网站免费看| 欧美日韩久久一区| 制服丝袜中文字幕亚洲| 67194成人在线观看| 制服丝袜亚洲色图| 精品国产一区二区三区四区四| 精品国一区二区三区| 精品成人a区在线观看| 国产夜色精品一区二区av| 国产日韩欧美a| 国产精品短视频| 一区二区国产视频| 婷婷丁香久久五月婷婷| 美女免费视频一区二区| 国产精品中文字幕日韩精品| 国产成人免费在线观看不卡| 成人国产亚洲欧美成人综合网| 色综合视频在线观看| 欧美日韩日日夜夜| 精品国产91九色蝌蚪| 国产欧美视频一区二区| 一区二区三区自拍| 全国精品久久少妇| 国产剧情一区二区| 国产欧美日韩精品a在线观看| 国产欧美一区二区在线观看| 亚洲天堂a在线| 日本亚洲最大的色成网站www| 国产一区二区女| 在线欧美小视频| 日韩欧美国产综合| 亚洲欧洲日韩在线| 青青青伊人色综合久久| 粉嫩av亚洲一区二区图片| 在线免费av一区| 日韩精品一区二区三区蜜臀| 国产精品乱子久久久久| 午夜精品福利在线| 成人免费毛片aaaaa**| 欧美日韩国产中文| 久久蜜桃av一区二区天堂| 亚洲综合在线电影| 国产精品一区二区91| 欧美日韩国产首页在线观看| 久久亚洲私人国产精品va媚药| 亚洲欧美另类图片小说| 国产一区二区中文字幕| 欧美无乱码久久久免费午夜一区| 久久色在线观看| 水蜜桃久久夜色精品一区的特点 | 91麻豆精品国产91久久久使用方法| 国产网站一区二区| 日韩电影一区二区三区| 成人aa视频在线观看| 日韩一区二区麻豆国产| 亚洲精品va在线观看| 国产sm精品调教视频网站| 日韩欧美电影一区| 亚洲在线视频免费观看| 99久久国产综合精品麻豆| 精品少妇一区二区三区在线视频| 亚洲制服丝袜av| 99精品一区二区| 中文字幕精品一区二区精品绿巨人 | 亚洲同性gay激情无套| 国产一区二区三区电影在线观看| 欧美日韩美女一区二区| 国产成人精品一区二区三区四区 | 91视视频在线观看入口直接观看www| 久久亚洲精品国产精品紫薇| 日本在线播放一区二区三区| 在线免费观看一区| 悠悠色在线精品| 色综合久久久久久久久久久| 欧美激情一区二区三区四区| 国产精品自在欧美一区|