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

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

?? main.c

?? arm2440系統編程
?? C
字號:
/****************************************************************
 NAME: u2440mon.c
 DESC: u2440mon entry point,menu,download
 HISTORY:
 Mar.25.2002:purnnamu: S3C2400X profile.c is ported for S3C2410X.
 Mar.27.2002:purnnamu: DMA is enabled.
 Apr.01.2002:purnnamu: isDownloadReady flag is added.
 Apr.10.2002:purnnamu: - Selecting menu is available in the waiting loop. 
                         So, isDownloadReady flag gets not needed
                       - UART ch.1 can be selected for the console.
 Aug.20.2002:purnnamu: revision number change 0.2 -> R1.1       
 Sep.03.2002:purnnamu: To remove the power noise in the USB signal, the unused CLKOUT0,1 is disabled.
 ****************************************************************/
#define	GLOBAL_CLK		1

#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"

#include "usbmain.h"
#include "usbout.h"
#include "usblib.h"
#include "2440usb.h"

extern char Image$$RO$$Limit[];
extern char Image$$RO$$Base[];
extern char Image$$RW$$Limit[];
extern char Image$$RW$$Base[];
extern char Image$$ZI$$Limit[];
extern char Image$$ZI$$Base[];

void Isr_Init(void);
void HaltUndef(void);
void HaltSwi(void);
void HaltPabort(void);
void HaltDabort(void);
void ClearMemory(void);


void Clk0_Enable(int clock_sel);	
void Clk1_Enable(int clock_sel);
void Clk0_Disable(void);
void Clk1_Disable(void);

extern void Lcd_Tft_LTV350QV_F05_Init(void) ;
extern void Lcd_Tft_LTV350QV_F05_Test( void ) ;
extern void Test_Lcd_VGA_640_480(void) ;
extern void Test_Lcd_VGA_800_600(void) ;
extern void Test_VGA_640_480(void) ;

extern void Test_Touchpanel(void) ;
extern void Test_Adc(void) ;		//adc test
extern void KeyScan_Test(void) ;
extern void RTC_Display(void) ;
extern void Test_MCP2510(void) ;
extern void Test_IrDA_Tx(void) ;
extern void PlayMusicTest(void) ;
extern void RecordTest( void ) ;
extern void Camera_Test( void ) ;
extern void Test_Iic(void) ;
extern void Test_SDI(void) ;
extern void CF_Card_Test( void );

volatile U32 downloadAddress;

void (*restart)(void)=(void (*)(void))0x0;

volatile unsigned char *downPt;
volatile U32 downloadFileSize;
volatile U16 checkSum;
volatile unsigned int err=0;
volatile U32 totalDmaCount;

volatile int isUsbdSetConfiguration;

int download_run=0;
U32 tempDownloadAddress;
int menuUsed=0;

extern char Image$$RW$$Limit[];
U32 *pMagicNum=(U32 *)Image$$RW$$Limit;
int consoleNum;

static U32 cpu_freq;
static U32 UPLL;
static void cal_cpu_bus_clk(void)
{
	U32 val;
	U8 m, p, s;
	
	val = rMPLLCON;
	m = (val>>12)&0xff;
	p = (val>>4)&0x3f;
	s = val&3;

	//(m+8)*FIN*2 不要超出32位數!
	FCLK = ((m+8)*(FIN/100)*2)/((p+2)*(1<<s))*100;
	
	val = rCLKDIVN;
	m = (val>>1)&3;
	p = val&1;	
	val = rCAMDIVN;
	s = val>>8;
	
	switch (m) {
	case 0:
		HCLK = FCLK;
		break;
	case 1:
		HCLK = FCLK>>1;
		break;
	case 2:
		if(s&2)
			HCLK = FCLK>>3;
		else
			HCLK = FCLK>>2;
		break;
	case 3:
		if(s&1)
			HCLK = FCLK/6;
		else
			HCLK = FCLK/3;
		break;
	}
	
	if(p)
		PCLK = HCLK>>1;
	else
		PCLK = HCLK;
	
	if(s&0x10)
		cpu_freq = HCLK;
	else
		cpu_freq = FCLK;
		
	val = rUPLLCON;
	m = (val>>12)&0xff;
	p = (val>>4)&0x3f;
	s = val&3;
	UPLL = ((m+8)*FIN)/((p+2)*(1<<s));
	UCLK = (rCLKDIVN&8)?(UPLL>>1):UPLL;
}


void Temp_function() { Uart_Printf("\nPlease input 1-16 to select test!!!\n"); }

struct {
	void (*fun)(void);
	char *tip;
}CmdTip[] = {
				{ Temp_function, "Please input 1-16 to select test" } ,
				{ BUZZER_PWM_Test, "Test PWM" } ,
				{ RTC_Display, "RTC time display" } ,
				{ Test_Adc, "Test ADC" } ,
				{ KeyScan_Test, "Test interrupt and key scan" } ,
				{ Test_Touchpanel, "Test Touchpanel" } ,
				{ Lcd_Tft_LTV350QV_F05_Test, "Test LCD LTV350QV_F05" } ,
				//{ Test_Lcd_VGA_800_600, "Test VGA 800*600" } ,
				{ Test_VGA_640_480, "Test VGA 640*480" } ,
				{ Test_IrDA_Tx, "Test IrDA" } ,
				{ PlayMusicTest, "UDA1341 play music" } ,
				{ RecordTest, "UDA1341 record voice" } ,
				{ Test_SDI, "Test SD Card" } ,
				{ Camera_Test, "Camera Preview Test " } ,
				{ 0, 0}						
			};


void Main(void)
{
	char *mode;
	int i;
	U8 key;
	U32 mpll_val = 0 ;
	//U32 divn_upll = 0 ;
    
	#if ADS10   
//	__rt_lib_init(); //for ADS 1.0
	#endif

	Port_Init();
	
	Isr_Init();
	
	i = 2 ;	//don't use 100M!
		//boot_params.cpu_clk.val = 3;
	switch ( i ) {
	case 0:	//200
		key = 14;
		mpll_val = (100<<12)|(2<<4)|(2);
		break;
	case 1:	//300
		key = 14;
		mpll_val = (60<<12)|(1<<4)|(1);
		break;
	case 2:	//400
		key = 14;
		mpll_val = (92<<12)|(1<<4)|(1);
		break;
	case 3:	//440!!!
		key = 14;
		mpll_val = (102<<12)|(1<<4)|(1);
		break;
	default:
		key = 14;
		mpll_val = (92<<12)|(1<<4)|(1);
		break;
	}
	
	//init FCLK=400M, so change MPLL first
	ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);
	ChangeClockDivider(key, 12);
	cal_cpu_bus_clk();
	
	consoleNum = 0;	// Uart 1 select for debug. 
	Uart_Init( 0,115200 );
	Uart_Select( consoleNum );
	
	Beep(2000, 100);
	
	Uart_SendByte('\n');
	Uart_Printf("<***********************************************>\n");
	Uart_Printf("           TE-2440 Test Program VER1.0\n");
	Uart_Printf("                www.witech.com.cn\n");
	Uart_Printf("      Build time is: %s  %s\n", __DATE__ , __TIME__  );
    Uart_Printf( "          Image$$RO$$Base  = 0x%x\n", Image$$RO$$Base );
	Uart_Printf( "          Image$$RO$$Limit = 0x%x\n", Image$$RO$$Limit );
	Uart_Printf( "          Image$$RW$$Base  = 0x%x\n", Image$$RW$$Base );
	Uart_Printf( "          Image$$RW$$Limit = 0x%x\n", Image$$RW$$Limit );
    Uart_Printf( "          Image$$ZI$$Base  = 0x%x\n", Image$$ZI$$Base );
    Uart_Printf( "          Image$$ZI$$Limit = 0x%x\n", Image$$ZI$$Limit );
	Uart_Printf("<***********************************************>\n");

	rMISCCR=rMISCCR&~(1<<3); // USBD is selected instead of USBH1 
	rMISCCR=rMISCCR&~(1<<13); // USB port 1 is enabled.


	rDSC0 = 0x2aa;
	rDSC1 = 0x2aaaaaaa;
	//Enable NAND, USBD, PWM TImer, UART0,1 and GPIO clock,
	//the others must be enabled in OS!!!
	rCLKCON = 0xfffff0;
	



	MMU_Init();	

	pISR_SWI=(_ISR_STARTADDRESS+0xf0);	//for pSOS

	Led_Display(0x6);

#if USBDMA
	mode="DMA";
#else
	mode="Int";
#endif

	// CLKOUT0/1 select.
	//Uart_Printf("CLKOUT0:MPLL in, CLKOUT1:RTC clock.\n");
	//Clk0_Enable(0);	// 0:MPLLin, 1:UPLL, 2:FCLK, 3:HCLK, 4:PCLK, 5:DCLK0
	//Clk1_Enable(2);	// 0:MPLLout, 1:UPLL, 2:RTC, 3:HCLK, 4:PCLK, 5:DCLK1	
	Clk0_Disable();
	Clk1_Disable();
	
	mpll_val = rMPLLCON;

	Lcd_Tft_LTV350QV_F05_Init() ;		// LCD initial
	
	download_run=1; //The default menu is the Download & Run mode.

	while(1)
	{
		U8 idx;
	
		Uart_Printf("\nPlease select function : \n");	
		for(i=0; CmdTip[i].fun!=0; i++)
			Uart_Printf("%d : %s\n", i, CmdTip[i].tip);
		idx = Uart_GetIntNum_GJ() ;	
		if(idx<i)
		{
			(*CmdTip[idx].fun)();
			Delay(20);
			Uart_Init( 0,115200 );
		}	
	}	  	

}

void Isr_Init(void)
{
	pISR_UNDEF=(unsigned)HaltUndef;
	pISR_SWI  =(unsigned)HaltSwi;
	pISR_PABORT=(unsigned)HaltPabort;
	pISR_DABORT=(unsigned)HaltDabort;
	rINTMOD=0x0;	  // All=IRQ mode
	rINTMSK=BIT_ALLMSK;	  // All interrupt is masked.

	//pISR_URXD0=(unsigned)Uart0_RxInt;	
	//rINTMSK=~(BIT_URXD0);   //enable UART0 RX Default value=0xffffffff

#if 1
	pISR_USBD =(unsigned)IsrUsbd;
	pISR_DMA2 =(unsigned)IsrDma2;
#else
	pISR_IRQ =(unsigned)IsrUsbd;	
		//Why doesn't it receive the big file if use this. (???)
		//It always stops when 327680 bytes are received.
#endif	
	ClearPending(BIT_DMA2);
	ClearPending(BIT_USBD);
	//rINTMSK&=~(BIT_USBD);  
   
	//pISR_FIQ,pISR_IRQ must be initialized
}


void HaltUndef(void)
{
	Uart_Printf("Undefined instruction exception!!!\n");
	while(1);
}

void HaltSwi(void)
{
	Uart_Printf("SWI exception!!!\n");
	while(1);
}

void HaltPabort(void)
{
	Uart_Printf("Pabort exception!!!\n");
	while(1);
}

void HaltDabort(void)
{
	Uart_Printf("Dabort exception!!!\n");
	while(1);
}


void ClearMemory(void)
{
	//int i;
	//U32 data;
	int memError=0;
	U32 *pt;
	
	Uart_Printf("Clear Memory (%xh-%xh):WR",_RAM_STARTADDRESS,HEAPEND);

	pt=(U32 *)_RAM_STARTADDRESS;
	while((U32)pt < HEAPEND)
	{
		*pt=(U32)0x0;
		pt++;
	}
	
	if(memError==0)Uart_Printf("\b\bO.K.\n");
}

void Clk0_Enable(int clock_sel)	
{	// 0:MPLLin, 1:UPLL, 2:FCLK, 3:HCLK, 4:PCLK, 5:DCLK0
	rMISCCR = rMISCCR&~(7<<4) | (clock_sel<<4);
	rGPHCON = rGPHCON&~(3<<18) | (2<<18);
}
void Clk1_Enable(int clock_sel)
{	// 0:MPLLout, 1:UPLL, 2:RTC, 3:HCLK, 4:PCLK, 5:DCLK1	
	rMISCCR = rMISCCR&~(7<<8) | (clock_sel<<8);
	rGPHCON = rGPHCON&~(3<<20) | (2<<20);
}
void Clk0_Disable(void)
{
	rGPHCON = rGPHCON&~(3<<18);	// GPH9 Input
}
void Clk1_Disable(void)
{
	rGPHCON = rGPHCON&~(3<<20);	// GPH10 Input
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费在线观看视频一区| 欧美久久久久久久久久| 国产精品自拍在线| 麻豆成人久久精品二区三区小说| 亚洲国产精品久久久男人的天堂| 亚洲激情网站免费观看| 亚洲天堂av一区| 亚洲丝袜另类动漫二区| 亚洲欧美日韩人成在线播放| 亚洲另类在线一区| 亚洲码国产岛国毛片在线| 亚洲免费伊人电影| 亚洲超碰精品一区二区| 免费在线看一区| 国产一区二区成人久久免费影院| 国产成人一区在线| 99精品1区2区| 欧美性猛交xxxx乱大交退制版| 欧美无砖专区一中文字| 欧美夫妻性生活| 日韩女优电影在线观看| 久久久亚洲精品石原莉奈| 国产午夜精品理论片a级大结局| 国产精品丝袜一区| 一区二区三区波多野结衣在线观看| 亚洲综合色视频| 免费人成在线不卡| 国产传媒欧美日韩成人| 99国产精品久久久久| 欧美偷拍一区二区| 精品日韩在线观看| 欧美国产日产图区| 亚洲综合男人的天堂| 日韩激情视频在线观看| 国产一区欧美日韩| 色婷婷狠狠综合| 欧美www视频| 成人免费在线播放视频| 亚洲成a人片在线观看中文| 久久99精品一区二区三区三区| 国产成人亚洲综合a∨猫咪| 色婷婷一区二区三区四区| 91麻豆精品国产91| 中文一区一区三区高中清不卡| 一区二区三区在线免费视频| 激情综合色播五月| 91免费国产在线观看| 91精品国产高清一区二区三区蜜臀| 久久久亚洲精品一区二区三区| 亚洲精品久久久久久国产精华液| 久久国产日韩欧美精品| 91免费版在线看| 欧美白人最猛性xxxxx69交| 亚洲精品日韩专区silk| 久久丁香综合五月国产三级网站| 99热这里都是精品| 精品少妇一区二区三区在线播放| 亚洲色图一区二区| 国产资源精品在线观看| 精品视频1区2区| 欧美国产乱子伦 | 亚洲精品视频自拍| 精彩视频一区二区| 欧美视频自拍偷拍| 中文在线一区二区| 韩国精品免费视频| 91麻豆精品国产91久久久久久 | 狠狠久久亚洲欧美| 欧美亚洲日本国产| 国产精品美女久久久久久久久久久 | 91久久精品网| 中文成人av在线| 韩国精品主播一区二区在线观看| 欧美日韩二区三区| 综合久久国产九一剧情麻豆| 国产一区中文字幕| 欧美一区二区视频在线观看| 夜夜精品视频一区二区 | 日韩午夜中文字幕| 亚洲中国最大av网站| 99这里只有久久精品视频| 亚洲精品一区二区三区香蕉 | 色吊一区二区三区| 自拍偷拍欧美激情| 成人亚洲精品久久久久软件| 精品国产亚洲在线| 欧美aaa在线| 欧美一区二区女人| 五月婷婷综合在线| 欧美日韩黄视频| 亚洲成人激情综合网| 欧美在线视频你懂得| 亚洲男人的天堂在线aⅴ视频| www.亚洲精品| 国产精品国产三级国产a| 国产精品99久久久久久有的能看| 精品国产免费人成在线观看| 麻豆91免费看| 欧美成人高清电影在线| 捆绑紧缚一区二区三区视频| 欧美一区二区日韩| 蜜桃91丨九色丨蝌蚪91桃色| 日韩一区二区中文字幕| 日韩和欧美一区二区| 欧美精品日韩精品| 丝袜美腿高跟呻吟高潮一区| 欧美久久高跟鞋激| 免费成人小视频| 精品国产第一区二区三区观看体验 | 亚洲国产精品人人做人人爽| 欧美午夜精品理论片a级按摩| 亚洲小少妇裸体bbw| 欧美日韩高清一区二区| 五月天视频一区| 欧美videos中文字幕| 国内精品第一页| 欧美国产成人精品| 91免费观看国产| 午夜成人免费电影| www亚洲一区| youjizz久久| 亚洲妇熟xx妇色黄| 欧美一级免费大片| 国产一区二区视频在线播放| 国产精品国模大尺度视频| 在线观看亚洲一区| 爽好多水快深点欧美视频| 日韩精品一区二区三区三区免费| 国内精品视频666| 亚洲视频免费在线| 欧美精品久久天天躁| 久久av资源网| 国产精品久久久久婷婷| 91国偷自产一区二区使用方法| 五月天激情综合网| 久久久精品国产免费观看同学| 成人精品视频.| 亚洲成人自拍一区| 精品国产凹凸成av人网站| 91亚洲精品一区二区乱码| 午夜激情久久久| 国产亚洲1区2区3区| 欧美色综合网站| 国精品**一区二区三区在线蜜桃| 亚洲欧洲一区二区在线播放| 欧美日韩精品欧美日韩精品| 国产成人精品1024| 亚洲国产日韩a在线播放| 久久午夜免费电影| 欧美影院午夜播放| 国内精品国产三级国产a久久| 亚洲精品中文在线| 亚洲精品一线二线三线| 欧美视频一二三区| 国产福利视频一区二区三区| 亚洲chinese男男1069| 中文av一区二区| 日韩精品一区二区三区蜜臀| 色综合视频在线观看| 精品一区二区久久| 亚洲午夜久久久久久久久电影院| 精品电影一区二区| 欧美无人高清视频在线观看| 成人午夜av在线| 久久电影网站中文字幕| 亚洲综合另类小说| 国产精品热久久久久夜色精品三区| 欧美一级黄色大片| 在线免费av一区| 国产91露脸合集magnet| 免费在线观看日韩欧美| 一区二区三区影院| 欧美国产欧美亚州国产日韩mv天天看完整 | 91精品国产色综合久久不卡电影| thepron国产精品| 国产在线播放一区三区四| 亚洲国产中文字幕| 综合久久一区二区三区| 久久久久久久久久久99999| 正在播放亚洲一区| 欧美最新大片在线看| 99久久99久久综合| 国产**成人网毛片九色| 六月丁香婷婷久久| 午夜精品久久久久| 亚洲一区二区三区四区在线观看| 亚洲视频在线观看三级| 欧美国产日韩亚洲一区| 久久久影视传媒| 久久网站热最新地址| 日韩欧美视频一区| 91精品欧美综合在线观看最新| 精品视频1区2区| 欧美人xxxx| 欧美精品一二三区| 精品视频全国免费看| 欧美日韩国产免费一区二区| 欧美在线观看视频一区二区| 在线精品视频小说1| 日本韩国一区二区三区|