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

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

?? 2410bios.c

?? 優龍ST2410的BIOS源碼
?? 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 NandRunSystem(void);
void NandErase(void);
// GPB1/TOUT1 for Backlight control(PWM)
#define GPB1_TO_OUT()   (rGPBUP &= 0xfffd, rGPBCON &= 0xfffffff3, rGPBCON |= 0x00000004)
#define GPB1_TO_1()     (rGPBDAT |= 0x0002)
#define GPB1_TO_0()     (rGPBDAT &= 0xfffd)
    
	//qjy: special power on timing, please research it!
void Lcd_Port_Init(void);
void Lcd_Init(void);

extern U32 downloadAddress, downloadFileSize;
//static EnvParams Env;
U32	Console_Uart = 0;
U32	Console_Baud = 115200;

static short DsAutoBoot;
static short NorFlashSupport = 0 ;

volatile int PwrKeyChkEnd;

//*****************************************************************************
void GetBootParam(void)
{
	U16 cmd_cnt = 0;
	char tmp[256] = {0};
	
	NFSearchParams((char *)&Env);
	if(Env.boot_params[0]=='r')
		printf("\n%s", Env.boot_params);
	puts("\nSet 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++)
		Env.boot_params[cmd_cnt] = tmp[cmd_cnt];
	Env.boot_params[cmd_cnt] = 0;			

	NFSaveParams((char *)&Env);
}

//*****************************************************************************
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("\nPlease 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"},
				{NandRunSystem, "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)
//			(*CmdTip[3].fun)();
	if((!DsAutoBoot)&&(Env.Os_Auto_Flag==1))NandLoadRun();
	if((!DsAutoBoot)&&(Env.Os_Auto_Flag==2))Wince_Run=1;
	}
	rGPBDAT ^= 1<<5;
}
/*
static void Led1Flash(U32 i)
{	
	static cnt = 30;
	
	if(!--cnt) {
		ReleaseBiosTimerEvent(i);
//		ChangeSlowMode(CLKSLOW_PLL_ON);		
//		Uart_Init(0, UART_BAUD);
	}
	rGPFDAT ^= 0x80;
}
static void Led2Flash(U32 i)
{	
	rGPFDAT ^= 0x40;	
}
static void Led3Flash(U32 i)
{	
	rGPFDAT ^= 0x20;	
}
static void Led4Flash(U32 i)
{		
	rGPFDAT ^= 0x10;	
}
*/
/******************************************************************************
【功能說明】系統主函數
******************************************************************************/
int Main(U32 RstStat)
{
	int i;
//	ChangeClockDivider(1, 1);	// 1:2:4
//	ChangeMPllValue(172,4,1);	//FCLK=180.0Mhz
	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 ) ;
	
	
	//turn on the LCD blacklight!
    GPB1_TO_OUT();
    GPB1_TO_1();
    
	//special power on timing, please research it!
    Lcd_Port_Init();
    Lcd_Init();

	//Beep( 2000, 1000 ) ;
	
	RequestBiosTimerEvent(30, Led4Flash);	//when request, auto open bios timer
	//RequestBiosTimerEvent(20, Led2Flash);
	//RequestBiosTimerEvent(50, Led3Flash);
	//RequestBiosTimerEvent(100, Led1Flash);
	
	
	NFSearchParams((char *)&Env);
	printf("Env.Os_Auto_Flag=%x\n",Env.Os_Auto_Flag);
	
	printf("<*******************************************>\n");
	printf("<*                                         *>\n");
	printf("<*         S3C2410 Board BIOS V2006        *>\n");
	printf("<*                                         *>\n");
	printf("<*         Http://www.ucdragon.com         *>\n");
	printf("<*                                         *>\n");
	printf("<*         深圳市優龍科技有限公司          *>\n");
	printf("<*                                         *>\n");
	printf("<*             版  權  所  有              *>\n");
	printf("<*                                         *>\n");
	printf("<*******************************************>\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");
	
	Test_Lcd_LTV350QVF05();
	
	RequestBiosTimerEvent(50, AutoBoot);	//reload value = 50, 10ms*50 = 500ms

	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();
			Delay(500);
			if((Wince_Run==1))
				NandLoadRunW();//(*CmdTip[7].fun)();
		}
		//if(Wince_Run==1)(*CmdTip[7].fun)();
		Delay(200);
		DsAutoBoot = 1;	//when get a key press, disable auto boot
		idx -= '0';
		printf("%x\n",idx);
		if(idx<i)
		{
			Wince_Run=0;
			(*CmdTip[idx].fun)();
		}
		Wince_Run=0;
		
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产综合久久久久影院| 奇米影视在线99精品| 国产网站一区二区| www国产精品av| 久久久高清一区二区三区| 久久综合久久鬼色| 久久久久成人黄色影片| 国产精品理论在线观看| 亚洲视频图片小说| 午夜精品福利一区二区三区蜜桃| 日韩精品久久理论片| 美腿丝袜亚洲三区| 国产一区二区三区精品欧美日韩一区二区三区 | 色呦呦一区二区三区| 91在线观看高清| 欧美日韩在线三级| 精品日韩一区二区三区免费视频| 久久精品一区二区三区av| 国产精品网曝门| 亚洲国产视频直播| 狠狠色丁香婷婷综合| 99热国产精品| 欧美福利电影网| 日韩精品一区二区三区swag| 久久久久国产精品人| 亚洲久草在线视频| 免费观看久久久4p| 成人激情免费视频| 91精品国产一区二区三区蜜臀| 久久久久免费观看| 亚洲午夜日本在线观看| 国产精品小仙女| 欧美在线观看视频在线| 日韩免费一区二区三区在线播放| 国产精品激情偷乱一区二区∴| 亚洲成人午夜电影| 成人久久视频在线观看| 91麻豆精品国产91久久久久久| 国产亚洲精品aa午夜观看| 一区二区三区免费观看| 国产999精品久久久久久绿帽| 欧美亚洲一区二区在线观看| 久久婷婷综合激情| 日日欢夜夜爽一区| 99视频精品全部免费在线| 精品国产成人在线影院| 五月婷婷综合在线| 在线看国产一区| 国产日产欧产精品推荐色| 日韩电影在线看| 欧美亚一区二区| 国产精品乱码一区二三区小蝌蚪| 喷水一区二区三区| 欧美视频精品在线观看| 国产精品久久久久影院色老大| 黄网站免费久久| 91精品久久久久久久91蜜桃| 亚洲视频你懂的| 不卡av在线免费观看| 久久久久久久久久久久久女国产乱 | 欧美精品高清视频| 亚洲精品欧美二区三区中文字幕| 粉嫩av一区二区三区在线播放| 日韩一区二区视频| 日韩成人午夜电影| 91精品国产色综合久久不卡蜜臀| 午夜精品一区二区三区三上悠亚| 97se亚洲国产综合自在线不卡| 中文子幕无线码一区tr| 国产精品看片你懂得| 成人精品视频一区二区三区尤物| 久久久精品国产99久久精品芒果| 狠狠色综合播放一区二区| 日韩一级成人av| 精品一区二区三区视频| 精品久久久久久久久久久院品网| 精品一区二区影视| 久久精品亚洲国产奇米99| 国产精品99久久久| 中文字幕一区二区不卡| 91福利精品第一导航| 亚洲大片在线观看| 日韩一级片在线播放| 狠狠色丁香久久婷婷综合_中 | 日本不卡视频在线观看| 欧美videos中文字幕| 国产综合久久久久久久久久久久| 久久久亚洲欧洲日产国码αv| 国产精品99久| 亚洲天堂av一区| 欧美日韩和欧美的一区二区| 免费成人在线网站| 久久久精品人体av艺术| 99re这里只有精品视频首页| 亚洲自拍偷拍九九九| 91精品国产综合久久久蜜臀图片 | 亚洲私人黄色宅男| 欧美区一区二区三区| 秋霞午夜av一区二区三区| 国产日韩欧美不卡在线| 91福利在线导航| 国产自产v一区二区三区c| 1024精品合集| 日韩欧美一区二区不卡| 91色porny在线视频| 日本视频一区二区| 亚洲视频中文字幕| 欧美xxxx老人做受| 欧美一区二区免费| 99热精品一区二区| 久久精品国产77777蜜臀| 亚洲欧洲色图综合| 欧美大片拔萝卜| 91黄色免费版| 国产福利91精品一区| 亚洲成人激情自拍| ...xxx性欧美| 久久亚洲一区二区三区明星换脸| 色噜噜久久综合| 岛国精品在线观看| 日本vs亚洲vs韩国一区三区二区| 中文字幕在线观看不卡视频| 99精品视频在线播放观看| 亚洲综合久久av| 精品sm在线观看| 91麻豆国产福利在线观看| 国产在线播精品第三| 亚洲国产综合91精品麻豆| 久久久国产精品不卡| 日韩一区二区三区高清免费看看| 91女厕偷拍女厕偷拍高清| 国产伦精品一区二区三区视频青涩 | 不卡电影免费在线播放一区| 青青草国产成人av片免费| 亚洲男人的天堂av| 国产女人aaa级久久久级| 日韩免费观看2025年上映的电影 | 久久综合成人精品亚洲另类欧美| 欧美午夜一区二区三区| 97国产一区二区| 成人av在线电影| 成人深夜福利app| 国产高清不卡一区二区| 国内一区二区视频| 免费一级欧美片在线观看| 亚洲一区二区偷拍精品| 一区二区在线观看视频| 成人欧美一区二区三区| 欧美精品一区二区三区蜜桃视频| 欧美一级二级三级蜜桃| 7777女厕盗摄久久久| 欧美日韩一区二区三区在线| 在线观看亚洲专区| 欧洲国内综合视频| 欧美亚洲自拍偷拍| 欧美精品三级日韩久久| 7777精品伊人久久久大香线蕉的 | 亚洲视频小说图片| 亚洲精品日日夜夜| 性做久久久久久久免费看| 五月婷婷色综合| 国内久久婷婷综合| 不卡欧美aaaaa| 在线视频一区二区三| 欧美日本视频在线| 精品欧美久久久| 国产精品女同一区二区三区| 亚洲日本va在线观看| 亚洲一区影音先锋| 日韩不卡一二三区| 国产成人精品aa毛片| 99国产精品国产精品久久| 欧日韩精品视频| 日韩视频123| 欧美激情一区二区三区四区| 亚洲免费观看在线观看| 视频一区中文字幕国产| 国产福利91精品一区二区三区| 99精品视频在线观看| 91精品久久久久久久91蜜桃| 国产无人区一区二区三区| 亚洲综合视频在线观看| 久久99精品国产麻豆不卡| 成人av集中营| 欧美一区二区啪啪| 亚洲视频一二三区| 狠狠狠色丁香婷婷综合激情 | 91精品国产欧美一区二区18| 欧美激情一区二区三区不卡| 亚洲国产一区二区a毛片| 国产一区二区三区四区在线观看 | 五月综合激情婷婷六月色窝| 国产精品69毛片高清亚洲| 精品美女被调教视频大全网站| 国产精品久久久久久久久久免费看| 香蕉加勒比综合久久| 成人视屏免费看| 精品国产一区二区国模嫣然| 亚洲精品videosex极品| 国产成人精品免费一区二区|