亚洲欧美第一页_禁久久精品乱码_粉嫩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);

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 SDRAM_Test(void)
{
    int i;
    U32 data;
    int memError=0;
    U32 *pt;
    
    printf("Memory Test(%xh-%xh):WR",_RAM_STARTADDRESS,(_ISR_STARTADDRESS&0xfff0000));

    pt=(U32 *)_RAM_STARTADDRESS;
    while((U32)pt<(_ISR_STARTADDRESS&0xffff0000))
    {
	*pt=(U32)pt;
	pt++;
    }

    printf("\b\bRD");
    pt=(U32 *)_RAM_STARTADDRESS;
	
    while((U32)pt<(_ISR_STARTADDRESS&0xffff0000))
    {
	data=*pt;
	if(data!=(U32)pt)
	{
	    memError=1;
	    printf("\b\bFAIL:0x%x=0x%x\n",i,data);
	    break;
	}
	pt++;
    }

    if(memError==0)printf("\b\bO.K.\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;
}

/******************************************************************************
【功能說明】系統主函數
******************************************************************************/
int Main(U32 RstStat)
{
	int i;
//	ChangeClockDivider(1, 1);	// 1:2:4
//	ChangeMPllValue(172,4,1);	//FCLK=180.0Mhz
	//SetClockDivider(0, 1);
	//SetSysFclk(FCLK_96M);		//to save power, use 48M

	SetClockDivider(1, 1);
	SetSysFclk(FCLK_200M);		//to save power, use 50M

	Port_Init();
	Isr_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
	
	//enable GPIO,UART0,PWM TIMER,NAND FLASH module clock
//	DisableModuleClock(CLOCK_ALL);
	EnableModuleClock(CLOCK_ALL);	

	LcdBackLightOff();
	Delay( 0 ) ;

	putch('\n');

	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 ) ;
	Test_Lcd_Tft_16Bpp_240_320();
	
	//Beep( 2000, 500 ) ;
	
	
	RequestBiosTimerEvent(50, AutoBoot);	//reload value = 50, 10ms*50 = 500ms
	NFSearchParams((char *)&Env);
	printf("Env.Os_Auto_Flag=%x\n",Env.Os_Auto_Flag);
	
	puts("************************************\n");
	puts("*                                  *\n");
	puts("*     GEC2410 BIOS V1.1            *\n");
	puts("*     http://www.gd-emb.org        *\n");
	puts("*                                  *\n");
	puts("************************************\n");
	
	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一区二区三区免费野_久草精品视频
日韩精品一区二区三区在线播放| 成人免费黄色大片| 色哟哟日韩精品| 国产亚洲欧美激情| 国产在线播精品第三| 555www色欧美视频| 亚洲成av人片www| 欧美亚洲免费在线一区| 日韩精品综合一本久道在线视频| 日韩av不卡一区二区| 欧美精品1区2区| 免费在线观看成人| 日韩一区二区影院| 久久99国产精品免费| 日韩免费观看高清完整版| 日韩电影在线观看电影| 在线不卡免费av| 日本一区中文字幕| 欧美电视剧免费观看| 九一久久久久久| 久久久午夜精品理论片中文字幕| 国产一区二区美女诱惑| 国产视频一区二区在线观看| 国产一区二区三区| 国产精品视频一二| 色香蕉久久蜜桃| 亚洲一区日韩精品中文字幕| 色呦呦日韩精品| 亚洲超丰满肉感bbw| 日韩一级完整毛片| 国产成人精品免费视频网站| 国产精品传媒视频| 精品视频1区2区| 奇米四色…亚洲| 国产精品天干天干在观线| 91色九色蝌蚪| 三级成人在线视频| 欧美一级高清大全免费观看| 国产精品18久久久久| 中文字幕在线播放不卡一区| 精品婷婷伊人一区三区三| 男女男精品视频| 久久精品免视看| 色综合天天做天天爱| 婷婷丁香激情综合| 日韩一区二区免费电影| 免费不卡在线观看| 中文字幕中文在线不卡住| 欧美乱妇15p| 国产成人在线影院| 亚洲网友自拍偷拍| 精品国产123| 在线区一区二视频| 国产一区二三区| 综合av第一页| 日韩欧美一卡二卡| 91丨porny丨首页| 美国毛片一区二区| 亚洲欧美色综合| 久久亚洲一区二区三区明星换脸 | 久久人人超碰精品| 99久久99久久精品免费看蜜桃| 日韩国产精品久久久| 亚洲欧洲日韩在线| 日韩一区二区在线观看视频| 色偷偷久久一区二区三区| 久久福利资源站| 玉米视频成人免费看| 国产日韩高清在线| 日韩午夜av电影| 欧美中文字幕久久| 成人性视频免费网站| 激情综合网最新| 亚洲国产另类精品专区| 中文字幕一区二区三区在线播放 | 日韩国产精品大片| 国产欧美日韩另类一区| 日韩一级大片在线| 在线影院国内精品| 成人黄色大片在线观看| 国产一区二区0| 理论电影国产精品| 丝瓜av网站精品一区二区| 国产精品成人午夜| 中文字幕av一区二区三区| 日韩欧美中文字幕制服| 欧美高清一级片在线| 成人免费视频caoporn| 国产曰批免费观看久久久| 久久国产精品72免费观看| 三级精品在线观看| 日日夜夜一区二区| 亚洲成人动漫在线免费观看| 洋洋av久久久久久久一区| 中文无字幕一区二区三区| 亚洲免费在线观看| 最好看的中文字幕久久| 欧美国产精品中文字幕| 亚洲婷婷在线视频| 亚洲激情自拍偷拍| 国产精品丝袜一区| 中文字幕不卡在线播放| 国产精品久久久久久久久免费樱桃| 欧美韩日一区二区三区四区| 亚洲日本成人在线观看| 综合激情网...| 夜夜嗨av一区二区三区网页| 亚洲国产另类av| 日韩激情一区二区| 亚洲一二三四久久| 日本最新不卡在线| 精品影院一区二区久久久| 蜜臀国产一区二区三区在线播放| 麻豆精品在线播放| 国产一区二区三区久久久| 国产99精品在线观看| 国产成人免费网站| 99久久精品99国产精品| 666欧美在线视频| 日韩女同互慰一区二区| 国产亚洲成av人在线观看导航| 中文字幕在线观看一区| 一区二区三区欧美日| 中文字幕国产一区| 日韩精品欧美精品| 国产一区二区视频在线播放| 色综合一个色综合| 欧美一区二区成人6969| 久久嫩草精品久久久精品| 一区二区三区美女| 久久精品国产精品亚洲综合| 成人黄页毛片网站| 国产乱码精品一区二区三| 欧美亚洲日本一区| 久久综合精品国产一区二区三区| 国产精品色一区二区三区| 奇米影视7777精品一区二区| 国产福利一区在线| 欧美精品精品一区| 国产欧美一二三区| 欧美bbbbb| 欧美午夜电影一区| 亚洲欧洲国产日本综合| 青青草91视频| 国产不卡免费视频| 欧美成人欧美edvon| 亚洲裸体在线观看| 婷婷成人激情在线网| 北条麻妃一区二区三区| 欧美人动与zoxxxx乱| 国产精品久久久一本精品| 一区2区3区在线看| 日本不卡一区二区三区| 91视频.com| 久久久精品欧美丰满| 亚洲444eee在线观看| 在线视频亚洲一区| 久久久久久夜精品精品免费| 亚洲欧美激情插| 国内精品写真在线观看| 欧美在线啊v一区| 亚洲美女一区二区三区| 国产成人免费视| 7777精品伊人久久久大香线蕉完整版| 中文字幕精品在线不卡| 极品尤物av久久免费看| 日韩免费观看高清完整版| 午夜免费欧美电影| 欧美日韩成人在线一区| 亚洲精品高清在线| 成人av在线资源| 国产精品色在线| 国产在线精品一区二区| 久久一日本道色综合| 男男gaygay亚洲| 欧美乱妇20p| 午夜精品久久久久久| 欧美在线短视频| 亚洲激情欧美激情| 91麻豆高清视频| 久久嫩草精品久久久精品| 日本美女视频一区二区| 69成人精品免费视频| 日韩精品1区2区3区| 欧美老年两性高潮| 日韩国产欧美在线观看| 欧美精三区欧美精三区| 美脚の诱脚舐め脚责91 | 精品国产三级a在线观看| 午夜影视日本亚洲欧洲精品| 国产传媒一区在线| 亚洲日本青草视频在线怡红院| 99久久免费精品高清特色大片| 尤物视频一区二区| 91激情在线视频| 亚洲精品成人精品456| 欧美性猛片aaaaaaa做受| 亚洲综合一二区| 欧美色涩在线第一页| 亚洲r级在线视频|