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

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

?? pll.c

?? MBA2440(s3c2440)的 源代碼文件 ARM920T內核。
?? C
字號:
/*****************************************
  NAME: pll.c
  DESC: PLL & Maximum frequency test.
  HISTORY:
  03.21.2002:purnnamu: first release for S3C2410X
  06.02.2003:DonGo: Modified for S3C2440X
  Jan.e.2004:DonGo: Modified for S3C2440A
 *****************************************/
#include <math.h>
#include <stdlib.h>

#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h" 
#include "pll.h"
#include "memtest.h"

extern Calc_Clock(int print_msg);
extern U32 Mdiv, Pdiv, Sdiv, Fclk, Hclk, Pclk, Hdivn, Pdivn, Hclk_Ratio, Pclk_Ratio, Ref_Cnt;


void Sram_Test(void);

#if FIN==12000000
volatile U32 Mps_Val[][4]={
	// FCLK,	 M,  P,  S.
	{271500000, 173,  2, 2},
	{304000000,  68,  1, 1},
	{338400000, 133,  3, 1},
	{372000000,  85,  1, 1},
	{406430000, 127,  2, 1},
	{451200000, 180,  3, 1},
	{496000000, 116,  1, 1},
	{532800000, 125,  1, 1},
	{542400000, 218,  3, 1}
};
#else
volatile U32 Mps_Val[][4]={
	// FCLK,	 M,  P,  S.
	{266716800, 118,  2, 2},
	{296352000,  97,  1, 2},
	{331914240,  90,  3, 1},
	{370440000, 167,  6, 1},
	{399651840, 110,  3, 1},
	{431827200,  94,  2, 1},
//	{470776320, 131,  3, 1},
//	{500774400, 199,  5, 1},
//	{530611200,   86,  1, 1},
//	{541900800, 120,  2, 1}
};
#endif

int No_Of_Mps_Val=sizeof(Mps_Val)/16;


void Test_PLL(void)
{
	int temp, voltage=120;
	int i,j, mdiv, pdiv, sdiv, sval, fclk, hdiv_val, pdiv_val;
	U32 prev_fclk;
	U32 mpllcon_bk, clkdivn_bk, camdivn_bk;

	// clock register backup.
	mpllcon_bk = rMPLLCON;
	clkdivn_bk = rCLKDIVN;
	camdivn_bk = rCAMDIVN;
	
	Uart_Printf("[PLL frequency change test 100,000 times]\n");
	//Uart_TxEmpty(1);

//	rLOCKTIME=((U32)(1807*0.8)<<12)|((U32)(1807*0.8)<<0); 
	rLOCKTIME=((U32)(12048)<<16)|((U32)(12048)<<0); 

	j=0;
	while(1) 
	{
		if(Uart_GetKey()==ESC_KEY) 
			break;
		if(j>100000) 
			break;	

		i= j%No_Of_Mps_Val;


		fclk = Mps_Val[i][0];
		//Uart_Printf("[%d]FCLK=%d [Mps_Val=%xh,%xh,%xh]\n", j, Mps_Val[i][0],Mps_Val[i][1],Mps_Val[i][2],Mps_Val[i][3]);
		Uart_Printf("[%d] ", j);
		Uart_TxEmpty(1);

		if(Mps_Val[i][0]<=350000000)
		{
			hdiv_val=12; 
			pdiv_val=12;
			voltage=110;
		}
		else if(Mps_Val[i][0]<= 440000000) 
		{
			hdiv_val=13; 
			pdiv_val=12;
			voltage=120;
		}
		else
		{
			hdiv_val=14; 
			pdiv_val=12;
			voltage=135;
		}	
		
		Led_Display(j%2);
		//Uart_Printf("[FCLK:HCLK:PCLK=1:%d:%d=", hdiv_val%10, (hdiv_val%10)*(pdiv_val%10));
		//Uart_Printf("%4.1f:%4.1f:%4.1f MHz]\n", (float)fclk/MEGA, (float)fclk/MEGA/(hdiv_val%10), (float)fclk/MEGA/((hdiv_val%10)*(pdiv_val%10)));
		Uart_Printf("Voltage:%4.2f[V]\n", (float)voltage/100);
		Max1718_Set(voltage);
		Delay(10);

		if(prev_fclk<Mps_Val[i][0]) {
			Led_Display(0x1);		
			ChangeClockDivider(hdiv_val, pdiv_val);
			Led_Display(0x2);
			ChangeMPllValue(Mps_Val[i][1],Mps_Val[i][2],Mps_Val[i][3]);
		} 
		else 
		{
			Led_Display(0x2);
			ChangeMPllValue(Mps_Val[i][1],Mps_Val[i][2],Mps_Val[i][3]);
			Led_Display(0x1);		
			ChangeClockDivider(hdiv_val, pdiv_val);
		}
		
		Calc_Clock(1);
		Led_Display(0x4);
		UPDATE_REFRESH(Hclk);
		Led_Display(0x8);

#if 1
		Mem_Test(1);
#endif

		prev_fclk = Mps_Val[i][0];
		j++;
	}  

	Uart_Printf("\nMPLL change test OK.\n");

	Uart_Printf("\nReturn to Previous setting.\n");
	rMPLLCON = mpllcon_bk;
	rCLKDIVN = clkdivn_bk;
	rCAMDIVN = camdivn_bk;
	Calc_Clock(1);

}



// lock time: user lock time setting time[us],
// lock_count: register setting value for wanted locktime.
#define TIME_OF_XTAL	((float)MEGA/(float)FIN)	//us
U32 Calc_Locktime(U32 lock_time)
{
	U32 lock_count=0;
	lock_count = (U32)((float)lock_time/((float)TIME_OF_XTAL));
	return lock_count;
}

void Test_Locktime(void)
{
	int temp;
	int i,j, mdiv, pdiv, sdiv, sval, fclk, hdiv_val, pdiv_val;
	U32 lock_time=300, lock_count=12048;	//Unit is us.
	U32 mpllcon_bk;

	// clock register backup.
	mpllcon_bk = rMPLLCON;

	Uart_Printf("[PLL Lock time test 100,000 times]\n");
	Uart_Printf("Lock time range: 300us - %dus\n", (U32)(0xffff*TIME_OF_XTAL));
	Uart_Printf("Input Lock time[us]: ");
	lock_time = Uart_GetIntNum();

	lock_count = Calc_Locktime(lock_time);	// lock_time [us]
	rLOCKTIME=((U32)(lock_count&0xffff)<<16)|((U32)(lock_count&0xffff)<<0); 
	Uart_Printf("Locktime register M_LTIME value is %d(%xh).\n", 
		rLOCKTIME&0xffff, rLOCKTIME&0xffff);
	Uart_Printf("Clock will be locked after LED4 is ON\n");

	i=0;
	while(1) 
	{
		if(Uart_GetKey()!=0x0) 
			break;
		if(i>10000) 
			break;
		if(i%2) 
		{
			Led_Display(0x8);
			rMPLLCON = mpllcon_bk;
		}else{		
			Led_Display(0x0);
			rMPLLCON = mpllcon_bk;
		}
		//Delay(1000);
		i++;
	}	
	Uart_Printf("\n\n[PLL Lock time test %d times end]\n\n\n",i-1);
}


void Manual_Change_Pll(void)
{
	U32 pdiv, mdiv, sdiv, sval, fclk, hdiv_val, pdiv_val, voltage=120;
	int i, fclk_sel;
	float ffclk;

	Uart_Printf("[Running change test of M/P/S value]\n");

	for(i=0; i<sizeof(Mps_Val)/16; i++) {
		if(i%2==0) Uart_Printf("\n");
		Uart_Printf("%2d: FCLK=%4.1f [%xh(%d),%xh,%xh]	", i, (float)Mps_Val[i][0]/MEGA,Mps_Val[i][1],Mps_Val[i][1],Mps_Val[i][2],Mps_Val[i][3]);
	}
	Uart_Printf("\n");

	#if 1
	Uart_Printf("Select FCLK No(0-%d): ", sizeof(Mps_Val)/16-1);
	fclk_sel=Uart_GetIntNum();
	mdiv = Mps_Val[fclk_sel][1];
	pdiv = Mps_Val[fclk_sel][2];
	sdiv = Mps_Val[fclk_sel][3];
	#else
	Uart_Printf("Input M vlaue : ");
	mdiv=Uart_GetIntNum();		
	Uart_Printf("Input P vlaue : ");
	pdiv=Uart_GetIntNum();	
	Uart_Printf("Input S vlaue : ");
	sdiv=Uart_GetIntNum();
	#endif

	Uart_Printf("Select FCLK : HCLK(1:1=11,1:2=12,1:3=13,1:4=14,...) : ");
	hdiv_val=Uart_GetIntNum();
	Uart_Printf("Select HCLK : PCLK(1:1=11,1:2=12) : ");
	pdiv_val=Uart_GetIntNum();

	sval=(int)pow(2,sdiv);
	ffclk = (U32) ( (((float)mdiv+8)*FIN*2.0)/(((float)pdiv+2)*(float)sval));	// pll2188x.
	Uart_Printf("Now change PLL value...(%dhz)[mps=%xh(%d), %d, %d]\n", (U32)ffclk, mdiv,mdiv, pdiv, sdiv);

	Uart_Printf("Voltage: 1.3V");
	voltage = 130;
	Max1718_Set(voltage);
	Delay(10);

	ChangeClockDivider(hdiv_val, pdiv_val);
	ChangeMPllValue(mdiv,pdiv,sdiv);

	Calc_Clock(1);
	UPDATE_REFRESH(Hclk);
	Uart_Init(Pclk, 115200);

	//Uart_Getch();
	Uart_Printf("Memory test (y/n)? ");
	if(Uart_Getch()=='y') {
		while(1) {
			Mem_Test(1);
			if(Uart_GetKey()!=0x0) break;
			Uart_Printf("\nIf you wanna stop memory test, Press Enter key..\n\n\n");
		}
	}
	Uart_Printf("\n\n\n");
	
 }

void Manual_Change_Pll_Iostrength(void)
{

	Manual_Change_Pll();
	Test_IO_Strength();

#if 1
	//Uart_Getch();
	while(1) {
		Mem_Test(1);
	if(Uart_GetKey()!=0x0) break;
	}
#endif
}

void Test_PllOnOff(void)
{
	int i,j;
	unsigned int saveREFRESH;

	Uart_Printf("[PLL On/Off test, 200 times]\n");
	Uart_TxEmpty(1);	//To avoid being crushed the character

	//
	rLOCKTIME=((U32)(5080)<<16)|((U32)(5080)<<16);

	Uart_Printf("count:                    ");

	for(j=0;j<200;j++) {
		Led_Display(0x2);
		rCLKSLOW=(1<<7)|(1<<5)|(1<<4)|(0<<0); //FCLK=FIN/1,SLOW mode,MPLL=off,UPLL=off
		
		saveREFRESH=rREFRESH;
		rREFRESH=(1<<23)|(U32)(2048+1-16.9344*7.8); //HCLK = 12MHz, Trp=2clk,Trc=4clk
	
		rCLKSLOW=(1<<7)|(0<<5)|(1<<4)|(0<<0);//PLL on,MPLL=on,UPLL=on
		for(i=0;i<2048/4;i++); //S/W MPLL lock-time
		Led_Display(0x0);
		rCLKSLOW=(1<<7)|(0<<5)|(0<<4)|(0<<0);//NORMAL mode,PLL on,MPLL=on,UPLL=on
	
		rREFRESH=saveREFRESH;
		if(j%50==0)
		{		
		Uart_Printf("\b\b\b\b\b\b%6d", j);
		Uart_TxEmpty(0);	//To avoid being crushed the character		
		}
	}
	Uart_Printf("\b\b\b\b\b\b%6d\n", j);
	Uart_Printf("PLL on/off test complete\n\n\n");
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频香蕉人妖| 欧美日韩一二三| 欧美亚洲动漫精品| 日韩一级二级三级| 国产精品久久久久影院色老大 | 日本网站在线观看一区二区三区| 久久成人免费电影| 高清在线成人网| 欧美日韩午夜精品| 久久精品夜色噜噜亚洲aⅴ| 一区二区三区资源| 精品一区二区三区视频在线观看| 99精品在线观看视频| 欧美一卡二卡三卡四卡| 国产精品萝li| 奇米一区二区三区| www.日本不卡| 日韩欧美在线不卡| 一区二区三区免费观看| 国产精品自拍三区| 欧美日韩亚洲另类| 国产精品国产三级国产普通话99| 蜜桃精品视频在线| 在线看国产日韩| 国产欧美精品区一区二区三区 | 日韩美女天天操| 亚洲日本乱码在线观看| 国产一区二区视频在线| 欧美日韩五月天| 最新国产の精品合集bt伙计| 狠狠狠色丁香婷婷综合激情 | 天堂av在线一区| 不卡的电视剧免费网站有什么| 日韩一区二区三区视频| 亚洲网友自拍偷拍| 9l国产精品久久久久麻豆| 精品久久一区二区| 亚洲一区二区三区精品在线| 99久久综合精品| 亚洲精品在线网站| 蜜桃久久精品一区二区| 欧美性极品少妇| 亚洲图片你懂的| 成人性视频免费网站| 精品奇米国产一区二区三区| 舔着乳尖日韩一区| 色网站国产精品| 国产精品久久福利| 国产成+人+日韩+欧美+亚洲 | 成人激情文学综合网| 精品久久免费看| 免费欧美在线视频| 欧美色图片你懂的| 一个色妞综合视频在线观看| 99riav久久精品riav| 国产清纯在线一区二区www| 久久精品99国产精品日本| 91精品国产aⅴ一区二区| 亚洲国产中文字幕在线视频综合 | 五月天中文字幕一区二区| 91麻豆.com| 亚洲色图欧美在线| 一本一道久久a久久精品| 亚洲三级电影网站| 91一区二区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 高清shemale亚洲人妖| 国产欧美视频一区二区| 高清国产一区二区三区| 国产精品麻豆99久久久久久| 成人黄色网址在线观看| 自拍av一区二区三区| 色综合激情五月| 亚洲激情在线播放| 欧美日韩一区二区欧美激情 | 日韩一区二区三区在线| 男女男精品网站| 欧美大尺度电影在线| 麻豆91精品91久久久的内涵| 精品少妇一区二区三区在线播放 | 亚洲精品一区二区三区在线观看| 久久精品国产第一区二区三区| 亚洲精品在线免费播放| 国产精品一区在线观看你懂的| 国产日产精品一区| 97久久精品人人澡人人爽| 亚洲综合色噜噜狠狠| 91.com视频| 久草精品在线观看| 中文字幕av在线一区二区三区| 99精品热视频| 亚洲国产精品久久久久婷婷884 | 国产最新精品免费| 亚洲国产精品成人综合| 91片在线免费观看| 午夜伦欧美伦电影理论片| 精品国产伦理网| 97久久久精品综合88久久| 五月天激情综合| 久久蜜桃一区二区| 色综合天天综合色综合av | 日韩一区二区精品葵司在线| 国产一区欧美日韩| 中文字幕一区二区三区不卡 | 天天av天天翘天天综合网 | 国产一区二区三区国产| ...中文天堂在线一区| 欧美色爱综合网| 久久精品国产亚洲aⅴ| 中文字幕在线不卡视频| 欧美日韩一区二区三区免费看| 精品无码三级在线观看视频| 亚洲欧美日韩成人高清在线一区| 91精品免费观看| 粉嫩av一区二区三区粉嫩| 亚洲午夜久久久久久久久电影院 | 成人污污视频在线观看| 亚洲第一狼人社区| 国产欧美一二三区| 欧美精品1区2区3区| 国产 日韩 欧美大片| 午夜精品久久一牛影视| 国产欧美日韩视频一区二区| 欧美精品v日韩精品v韩国精品v| 国产不卡高清在线观看视频| 视频一区二区三区入口| 国产精品久久久爽爽爽麻豆色哟哟| 3d动漫精品啪啪1区2区免费 | 一区二区三区不卡在线观看 | 国产乱国产乱300精品| 亚洲国产美女搞黄色| 欧美国产精品中文字幕| 91精品国产综合久久久蜜臀粉嫩| 丁香一区二区三区| 蜜臀精品久久久久久蜜臀 | 欧美精品久久一区二区三区| 成人在线视频一区| 蜜桃视频第一区免费观看| 一二三区精品福利视频| 久久九九99视频| 欧美一区二区三区免费大片| 色悠久久久久综合欧美99| 国产成人午夜电影网| 裸体歌舞表演一区二区| 亚洲成人av电影在线| 国产精品久久久久毛片软件| 在线综合+亚洲+欧美中文字幕| 91国偷自产一区二区三区成为亚洲经典 | 91免费版pro下载短视频| 国产精品乡下勾搭老头1| 日本成人在线电影网| 又紧又大又爽精品一区二区| 国产精品久久网站| 久久久不卡影院| 精品成人一区二区| 日韩亚洲欧美成人一区| 欧美日韩免费不卡视频一区二区三区| 成人福利视频网站| 国产成人免费在线观看| 国产一区二区在线视频| 久久精品99国产国产精| 免费观看在线色综合| 三级精品在线观看| 午夜精品久久久久| 夜夜揉揉日日人人青青一国产精品 | 韩国理伦片一区二区三区在线播放| 首页国产丝袜综合| 亚洲午夜在线观看视频在线| 亚洲精品成a人| 一区二区在线观看av| 国产精品免费视频观看| 中国av一区二区三区| 国产精品无遮挡| 国产欧美视频一区二区三区| 久久精品网站免费观看| 久久精品视频网| 国产嫩草影院久久久久| 国产欧美一区二区三区在线看蜜臀| 久久久精品黄色| 国产午夜精品理论片a级大结局| 久久久久久久国产精品影院| 国产日本欧美一区二区| 中文字幕精品三区| 中文字幕欧美国产| 中文字幕五月欧美| 亚洲免费观看高清完整版在线 | 制服丝袜成人动漫| 日韩精品在线一区| 精品久久久久久久久久久院品网| 精品国产污网站| 久久久三级国产网站| 久久精品视频免费| 亚洲欧洲一区二区三区| 一区二区免费在线播放| 亚洲成av人在线观看| 日韩电影免费在线| 另类调教123区| 国产盗摄一区二区三区| 99久久久免费精品国产一区二区| 色婷婷亚洲综合|