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

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

?? 2410bios.c

?? 2410bios 實現簡單功能 裸板傳輸 跑馬燈 定時器
?? 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);
void Function(void);
void Eth0(void);
void init_adc(void);

//static int org = 1;

extern U32 downloadAddress, downloadFileSize;

U32	Console_Uart = 0;
U32	Console_Baud = 115200;
char boot_params[256];

static short DsAutoBoot;
static short NorFlashSupport = 0 ;

volatile int PwrKeyChkEnd;

//*****************************************************************************
/*__irq表示這個函數是外部中斷處理函數*/
void __irq recieve(void)	
{


printf("in interrupt handler now!!\n");

/*只處理串口的接收中斷*/
	if(BIT_SUB_RXD1)
	{
/*等待接收緩沖為滿*/
		while(rUTRSTAT1 & 0X1 == 0)
			;
/*打印從串口接收到的字符*/
		
  /*      if(org==1)
		{
		printf("receive = in interrupt handler now!\n");
		org++;
		}
	*/
		
		printf("receive = %c\n",(U8)rURXH1);
/*完成中斷處理,在退出之前,清理干凈中斷寄存器的相關位,防止死循環*/
/*注意,在反復實驗的過程中,發現應該先清理子中斷源寄存器,再清理中斷源   *寄存器,這樣可以有效避免假中斷。最后重新設置中斷屏蔽位,屏蔽相應中斷和*子中斷
*/
	//	ClearSubPending(BIT_SUB_ERR1 | BIT_SUB_RXD1| BIT_SUB_TXD1);
	    ClearSubPending( BIT_SUB_RXD1| BIT_SUB_TXD1);
		ClearPending(BIT_UART1);
		
		DisableSubIrq( BIT_SUB_TXD1 | BIT_SUB_RXD1);
		DisableIrq(BIT_UART1);
	}
}

void uart_init2(void)
{
/*注冊中斷處理函數*/
	pISR_UART1 = (U32)recieve;
	rULCON1  = 0x3;  //8位數據,無奇偶校驗,非紅外發送模式
	rUCON1 = 0x25;   //回環發送模式,接收和發送均為中斷方式
	rUBRDIV1 = 0x19; //設置波特率
	rUFCON1 = 0x0;   //非FIFO模式
	
	EnableSubIrq( BIT_SUB_TXD1 | BIT_SUB_RXD1);
	EnableIrq(BIT_UART1);
/*手工清理中斷寄存器相關位*/
	ClearSubPending( BIT_SUB_RXD1 | BIT_SUB_TXD1);
	ClearPending(BIT_UART1);
}

void send(U8 data)
{

	EnableSubIrq( BIT_SUB_TXD1 | BIT_SUB_RXD1);
	EnableIrq(BIT_UART1);
	/*往發送數據寄存器填值,該數據會自動發送出去*/
	rUTXH1 = data;
}



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");
}
//*****************************************************************************
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"},
				{EnterPowerOff, "Test Power off"},
				{SDRAM_Test, "test SDRAM Memory"},
				{Function,"function test"}, 
				{Eth0,"ethernet"}, 
				{0, 0}						
			};

//*****************************************************************************
static void AutoBoot(U32 i)
{
	static cnt = 10;		//5s
	
	if(!--cnt) {
		ReleaseBiosTimerEvent(i);
		if(!DsAutoBoot)
			NandLoadRun();
	}
	rGPBDAT ^= 1<<5;
}

/******************************************************************************
【功能說明】系統主函數
******************************************************************************/

int Main(U32 RstStat)
{
	int i;
	int j;
//	ChangeClockDivider(1, 1);	// 1:2:4
//	ChangeMPllValue(172,4,1);	//FCLK=180.0Mhz
	SetClockDivider(0, 1);
	SetSysFclk(FCLK_96M);		//to save power, use 48M
	
	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();

	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

	LcdBackLightCtl(0, 60);
	Test_Lcd_Tft_16Bpp_240_320();

//	RequestBiosTimerEvent(50, AutoBoot);	//reload value = 50, 10ms*50 = 500ms

	//如果不做任何操作,自動啟動linux
	puts("************************************\n");
	puts("************************************\n");
	puts("********** Linux-Team2**************\n");
	puts("************************************\n");
	puts("************************************\n");
	
	
	

	SetClockDivider(0, 1);
	SetSysFclk(FCLK_96M);		//to save power, use 96M
	puts("************************************\n");
	puts("************************************\n");
	puts("Coder:XueTongtong.WangHuaqing,WangZhenhua\n");
	puts("*****Tester:LiJiaojiao,YangYang\n*****");
	puts("************************************\n\n");
	
	
	uart_init2();
	
	for(i='A';i<='z';i++)
	{

		send((U8)i);
		Delay(1000);
	}



	
	
	
	
	
	
	
	
/*	sendmsg();    //向串口1 發R232 協議數據
	receive_uart();
	
	
	uart_init();
	in_out();

*/	
	
/*	init_adc(); 
	GetSysClock();		//輸出主頻
	
	pISR_TIMER2 = (U32)timer_service ;   //timer 中斷		
	timer_init();
	while(1);

		
	tout_init();  //蜂鳴器							
		
	pISR_UART1 =(U32)in_out;  	//串口中斷
	uart_init();

	
	
	IntInit();		//鍵盤中斷
	pISR_EINT0 =(U32)service;
	pISR_EINT2 =(U32)service;
	pISR_EINT8_23=(U32)service;
	while(1);
*/	

	
	//****************************************************
	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;
	
		puts("\nPlease select function : \n");	
		for(i=0; CmdTip[i].fun!=0; i++)
			printf("%d : %s\n", i, CmdTip[i].tip);
			
		idx = getch();
		DsAutoBoot = 1;	//when get a key press, disable auto boot
		
		idx -= '0';
		if(idx<i)
		{
			(*CmdTip[idx].fun)();
			continue;
		}
		
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人亚洲人成电影网站色| 麻豆国产欧美日韩综合精品二区| 欧美韩日一区二区三区| 精品动漫一区二区三区在线观看| 欧美在线观看一二区| 欧美国产综合一区二区| 中文字幕乱码亚洲精品一区| 天堂在线亚洲视频| 国产成人自拍网| 久久久久99精品一区| 国产一区二区调教| 日韩影院精彩在线| 色综合久久综合中文综合网| 91行情网站电视在线观看高清版| 欧美一区二区三区白人| 毛片av一区二区三区| 亚洲精品一区在线观看| 免费看日韩精品| 91精品国产综合久久婷婷香蕉| 亚洲一区免费观看| 欧美一区二区在线不卡| 国产精品一区免费视频| 国产精品久久久久影院老司| 在线观看一区二区精品视频| 亚洲美女在线一区| 日韩欧美www| 成人综合在线观看| 国产午夜亚洲精品理论片色戒 | 欧美性三三影院| 午夜精品久久久久影视| 久久精品在线观看| 在线观看精品一区| 一卡二卡三卡日韩欧美| 一区二区三区欧美激情| 日韩av不卡一区二区| 亚洲成人777| 一区二区久久久| 青青青伊人色综合久久| 九九**精品视频免费播放| 激情综合色播激情啊| 色综合视频在线观看| 中文字幕一区二区三区不卡在线| 欧美一级片免费看| 欧美日韩精品一二三区| 免费在线观看日韩欧美| 美女诱惑一区二区| 日韩高清在线一区| 国产欧美日韩综合精品一区二区| 日韩欧美综合一区| 欧美xingq一区二区| 日韩美女一区二区三区四区| 日韩丝袜美女视频| 中文字幕精品在线不卡| 精品国产乱码久久久久久影片| 欧美成人国产一区二区| 中文一区二区完整视频在线观看| 亚洲一区欧美一区| 中文字幕一区二区三| 综合av第一页| 免费观看91视频大全| 国产剧情一区二区三区| 麻豆91免费看| 国产精品中文欧美| 成人精品视频一区二区三区| 色综合久久精品| 51精品久久久久久久蜜臀| 欧美日韩精品欧美日韩精品| 五月天婷婷综合| 18涩涩午夜精品.www| 成人性生交大片免费| 麻豆成人久久精品二区三区红| 亚洲视频在线观看三级| 久久久www免费人成精品| 精品精品欲导航| 国产精品美日韩| 亚洲精品成人悠悠色影视| 婷婷成人激情在线网| 91亚洲资源网| 日本一区二区久久| 九九国产精品视频| 中文av一区特黄| 亚洲欧洲精品天堂一级| 国产一区二区三区综合| 久久久不卡影院| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美videos中文字幕| 午夜久久久影院| 日韩欧美一二三区| 久久99久久99精品免视看婷婷| 欧美视频第二页| 中文字幕久久午夜不卡| 精品国产一二三| 东方欧美亚洲色图在线| 国产精品嫩草影院av蜜臀| 成人黄色av电影| 亚洲一级在线观看| 精品乱人伦一区二区三区| 国产成人免费视频一区| 亚洲婷婷在线视频| 欧美裸体一区二区三区| 99精品在线免费| 另类人妖一区二区av| 日本一区二区电影| 欧美系列日韩一区| 国产一区二区三区久久悠悠色av| 亚洲精品五月天| 欧美日精品一区视频| 免费国产亚洲视频| 国产精品国产a| 国产日产精品1区| 欧美日韩激情在线| 91免费看视频| heyzo一本久久综合| 老司机免费视频一区二区| 亚洲一区二区在线观看视频| 国产午夜精品久久| 欧美一级精品大片| 欧美日本在线看| 欧美天堂一区二区三区| 91社区在线播放| 成人性生交大片| 成人综合在线观看| 国产一区二区h| 福利电影一区二区| 国产99精品国产| 蜜臀久久久久久久| 久久爱www久久做| 国产精品一二三区| 粉嫩绯色av一区二区在线观看| 中日韩av电影| 亚洲精品视频在线看| 亚洲国产精品一区二区久久恐怖片 | 国产免费观看久久| 午夜精品久久久久久| 91久久免费观看| 国产精品成人一区二区三区夜夜夜 | 欧美人xxxx| www亚洲一区| 日韩精品一区二区在线| 91精品欧美一区二区三区综合在 | 精品国产91久久久久久久妲己| 久久精品国产99国产精品| 免费人成黄页网站在线一区二区| 国产精品一区2区| 国产乱码精品1区2区3区| 国产成人免费视频一区| 欧美日韩中文字幕一区| 色婷婷精品大视频在线蜜桃视频| 日韩欧美激情四射| 久久国产尿小便嘘嘘尿| 日韩精品91亚洲二区在线观看| 精品中文av资源站在线观看| 日韩精品在线一区| 中文字幕在线观看一区| 国产毛片一区二区| 久久精品欧美一区二区三区不卡| 欧美二区三区91| 国产.精品.日韩.另类.中文.在线.播放| 欧美亚洲自拍偷拍| 国产日韩成人精品| 精品一区二区三区香蕉蜜桃 | 美国三级日本三级久久99| 国产一区二区调教| 亚洲午夜激情网站| 欧美性生活大片视频| 国产亚洲综合性久久久影院| 国产成人精品www牛牛影视| 26uuu久久综合| 裸体健美xxxx欧美裸体表演| 精品国精品国产| 韩国精品久久久| 日韩av一区二区三区四区| 久久蜜臀精品av| 久久精品免费观看| 国产精品福利一区| 色婷婷av一区| 国产精品一级在线| 国产欧美精品一区aⅴ影院| 色婷婷久久久久swag精品| 国产精品福利一区| 在线精品观看国产| 成人黄色软件下载| 国产成人啪午夜精品网站男同| 免费看日韩a级影片| 欧美精品一区二区蜜臀亚洲| 麻豆精品蜜桃视频网站| 在线观看91av| 色999日韩国产欧美一区二区| 亚洲综合在线电影| 亚洲一级不卡视频| 国产亚洲一区二区在线观看| 中文在线免费一区三区高中清不卡| 97精品久久久久中文字幕 | 精品播放一区二区| 成人av在线看| 91在线免费看| 国产91精品一区二区麻豆亚洲| 国产成人av影院| 国产一区二区精品久久91| 午夜精品一区二区三区免费视频 |