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

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

?? dm644x.c

?? Basic Application Loading over the Serial Interface for the DaVinci TMS320DM644x
?? C
字號:
/* -------------------------------------------------------------------------- *
 * dm644x.c - Implementation of platform initialization commands   				*
 * -------------------------------------------------------------------------- */

#include "dm644x.h"
#include "uart.h"
#include "uartapp.h"

extern volatile unsigned int DDRMem[0];

void boot()
{
	// Stack setup (__topstack symbol defined in linker script)
	extern int __topstack;
	register int* stackpointer asm ("sp");	
	stackpointer = &(__topstack);
	
	// Call to main code
	uartapp_main();
	
	// Infinite loop to catch fall through from the main 
	while(1);
}
	
void PlatformInit()
{
	// Mask all interrupts
	AINTC->INTCTL = 0x0;
	AINTC->EINT0 = 0x0;
	AINTC->EINT1 = 0x0;		
	
	// Put the C64x+ Core into reset (if it's on)
	PSC->MDCTL[39] &= (~0x00000100);
	PSC->PTCMD |= 0x00000002;
	while ((PSC->PTSTAT) & (0x00000002));
	while ((PSC->MDSTAT[39]) & (0x00000100));
	
	/******************* UART Setup **************************/
	UARTInit();
	
	/******************* System PLL Setup ********************/
	PLL1Init();
	
	/******************* DDR PLL Setup ***********************/	
	PLL2Init();

	/******************* DDR2 Timing Setup *******************/
	DDR2Init();
			
	/******************* AEMIF Setup *************************/
	AEMIFInit();
}

void PLL2Init()
{	
	// Set PLL2 clock input to external osc. 
	PLL2->PLLCTL &= (~0x00000100);
	
	// Clear PLLENSRC bit and clear PLLEN bit for Bypass mode 
	PLL2->PLLCTL &= (~0x00000021);

	// Wait for PLLEN mux to switch 
	waitloop(32*11);
	
	PLL2->PLLCTL &= (~0x00000008);          // Put PLL into reset
	PLL2->PLLCTL |= (0x00000010);           // Disable the PLL
	PLL2->PLLCTL &= (~0x00000002);          // Power-up the PLL
	PLL2->PLLCTL &= (~0x00000010);          // Enable the PLL
	
	// Set PLL multipliers and divisors 
	PLL2->PLLM = 23;        // 27  Mhz * (23+1) = 648 MHz 
	PLL2->PLLDIV1 = 11;     // 648 MHz / (11+1) = 54  MHz
	PLL2->PLLDIV2 = 1;      // 648 MHz / (1+1 ) = 324 MHz (the PHY DDR rate)
		
	PLL2->PLLDIV2 |= (0x00008000);          // Enable DDR divider	
	PLL2->PLLDIV1 |= (0x00008000);          // Enable VPBE divider	
	PLL2->PLLCMD |= 0x00000001;             // Tell PLL to do phase alignment
	while ((PLL2->PLLSTAT) & 0x1);          // Wait until done
	waitloop(256*11);

	PLL2->PLLCTL |= (0x00000008);           // Take PLL out of reset	
	waitloop(2000*11);                       // Wait for locking
	
	PLL2->PLLCTL |= (0x00000001);           // Switch out of bypass mode
}

void DDR2Init()
{
	int tempVTP;	
	
	// Set the DDR2 to enable
	while (PSC->PTSTAT & 0x00000001);
	PSC->MDCTL[13] = ((PSC->MDCTL[13]) & (0xFFFFFFE0)) | (0x00000003);
	PSC->PTCMD |= 0x00000001;
	while ((PSC->PTSTAT) & 0x00000001);
	while (((PSC->MDSTAT[13]) & 0x1F) != 0x00000003);	
	
	// For Micron MT47H64M16BT-37E @ 162 MHz
	// Setup the read latency (CAS Latency + 3 = 6 (but write 6-1=5))
	DDR->DDRPHYCR = 0x14001905;
	// Set TIMUNLOCK bit, CAS LAtency 3, 8 banks, 1024-word page size 
	DDR->SDBCR = 0x00138632;
	// Program timing registers 
	DDR->SDTIMR = 0x28923211;
	DDR->SDTIMR2 = 0x0016C722;
	// Clear the TIMUNLOCK bit 
	DDR->SDBCR &= (~0x00008000);
	// Set the refresh rate
	DDR->SDRCR = 0x000004F0;
	
	// Dummy write/read to apply timing settings
	DDRMem[0] = DDR_TEST_PATTERN;
	if (DDRMem[0] == DDR_TEST_PATTERN)
          UARTSendInt(DDRMem[0]);
	
	// Set the DDR2 to syncreset
	PSC->MDCTL[13] = ((PSC->MDCTL[13]) & (0xFFFFFFE0)) | (0x00000001);
	PSC->PTCMD |= 0x00000001;
	while ((PSC->PTSTAT) & 0x00000001);
	while (((PSC->MDSTAT[13]) & 0x1F) != 0x00000001);	

	// Set the DDR2 to enable
	PSC->MDCTL[13] = ((PSC->MDCTL[13]) & (0xFFFFFFE0)) | (0x00000003);
	PSC->PTCMD |= 0x00000001;
	while ((PSC->PTSTAT) & 0x00000001);
	while (((PSC->MDSTAT[13]) & 0x1F) != 0x00000003);
	
			 
	/***************** DDR2 VTP Calibration ****************/
	DDR->VTPIOCR = 0x201F;        // Clear calibration start bit
	DDR->VTPIOCR = 0xA01F;        // Set calibration start bit 
	
	waitloop(11*33);              // Wait for calibration to complete 
		 
	SYSTEM->DDRVTPER = 0x1;       // DDRVTPR Enable register
	
	tempVTP = 0x3FF & DDRVTPR;    // Read calibration data
	
	// Write calibration data to VTP Control register 
	DDR->VTPIOCR = ((DDR->VTPIOCR) & 0xFFFFFC00) | tempVTP; 
	
	// Clear calibration enable bit
	DDR->VTPIOCR = (DDR->VTPIOCR) & (~0x00002000);
	
	// DDRVTPR Enable register - disable DDRVTPR access 
	SYSTEM->DDRVTPER = 0x0;
	
}

void PLL1Init()
{
	// Set PLL2 clock input to internal osc. 
	PLL1->PLLCTL &= (~0x00000100);	
	
	// Clear PLLENSRC bit and clear PLLEN bit for Bypass mode 
	PLL1->PLLCTL &= (~0x00000021);

	// Wait for PLLEN mux to switch 
	waitloop(32);
	
	PLL1->PLLCTL &= (~0x00000008);     // Put PLL into reset
	PLL1->PLLCTL |= (0x00000010);      // Disable the PLL
	PLL1->PLLCTL &= (~0x00000002);     // Power-up the PLL
	PLL1->PLLCTL &= (~0x00000010);     // Enable the PLL
	
	// Set PLL multipliers and divisors 
	PLL1->PLLM = 21;                   // 27Mhz * (21+1) = 594 MHz 
			
	PLL1->PLLCMD |= 0x00000001;		// Tell PLL to do phase alignment
	while ((PLL1->PLLSTAT) & 0x1);	// Wait until done
	
	waitloop(256);
	PLL1->PLLCTL |= (0x00000008);		//	Take PLL out of reset	
	waitloop(2000);				// Wait for locking
	
	PLL1->PLLCTL |= (0x00000001);		// Switch out of bypass mode
}
 
void AEMIFInit()
{     
   AEMIF->AWCCR     = 0x00000000;
   AEMIF->AB1CR     = 0x3FFFFFFD;
   AEMIF->AB2CR     = 0x3FFFFFFD;
   AEMIF->AB3CR     = 0x3FFFFFFD;
   AEMIF->AB4CR     = 0x3FFFFFFD;
   AEMIF->NANDFCR   = 0x00000000;
}
 
void UARTInit() {

     // Wait until the RBL is done using the UART. 
     while((UART0->LSR & 0x40) == 0 );

	// The DM644x pin muxing registers must be set for UART0 use. 
	SYSTEM->PINMUX[1] |=  1;
	
	// Set DLAB bit - allows setting of clock divisors 
	UART0->LCR |= 0x80;
	
	//divider = 27000000/(16*115200) = 14.64 => 15 = 0x0F (2% error is OK)
	UART0->DLL = 0x0F;
	UART0->DLH = 0x00; 

    // Enable, clear and reset FIFOs	
	UART0->FCR = 0x07;
	
	// Disable autoflow control 
	UART0->MCR = 0x00;
	
	// Enable receiver, transmitter, st to run. 
	UART0->PWREMU_MGNT |= 0x6001;

	// Set word length to 8 bits, clear DLAB bit 
	UART0->LCR = 0x03;

	// Disable the timer 
	TIMER0->TCR = 0x00000000;
	// Set to 64-bit GP Timer mode, enable TIMER12 & TIMER34
	TIMER0->TGCR = 0x00000003;

	// Reset timers to zero 
	TIMER0->TIM34 = 0x00000000;
	TIMER0->TIM12 = 0x00000000;
	
	// Set timer period (5 second timeout = (27000000 * 5) cycles = 0x080BEFC0) 
	TIMER0->PRD34 = 0x00000000;
	TIMER0->PRD12 = 0x080BEFC0;
}

void waitloop(unsigned int loopcnt)
{
	for (loopcnt = 0; loopcnt<1000; loopcnt++)
	{
		asm("   NOP");
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线播放| 无吗不卡中文字幕| 亚洲综合色区另类av| 国内精品视频666| 欧日韩精品视频| 欧美激情综合网| 老鸭窝一区二区久久精品| 一本色道久久综合狠狠躁的推荐| 日韩欧美中文一区二区| 伊人色综合久久天天人手人婷| 久久超碰97中文字幕| 欧美视频一区二区| 亚洲蜜臀av乱码久久精品| 国产黄人亚洲片| 久久这里只有精品6| 日本不卡的三区四区五区| 欧美自拍偷拍一区| 亚洲乱码国产乱码精品精98午夜| 国产精品18久久久久久久久 | 91在线porny国产在线看| 久久久久国产精品厨房| 精品在线观看视频| 欧美成人伊人久久综合网| 天堂精品中文字幕在线| 精品污污网站免费看| 亚洲制服丝袜在线| 在线欧美日韩精品| 亚洲午夜影视影院在线观看| 色哦色哦哦色天天综合| 亚洲精品水蜜桃| 欧美日韩专区在线| 欧美日韩国产综合一区二区三区| 亚洲视频 欧洲视频| 成人av午夜电影| 国产精品久久久久影院亚瑟| 国产日韩欧美综合一区| 国产成人午夜高潮毛片| 欧美激情中文不卡| 99麻豆久久久国产精品免费| 国产精品三级在线观看| av电影天堂一区二区在线| 成人欧美一区二区三区黑人麻豆| av成人免费在线| 亚洲一区二区三区四区五区中文 | 1区2区3区欧美| 成人av影院在线| 一片黄亚洲嫩模| 欧美日韩国产精选| 日韩精品一区第一页| 精品日韩欧美在线| 高清视频一区二区| 亚洲黄色小视频| 日韩欧美国产午夜精品| 国产激情偷乱视频一区二区三区| 中文字幕日韩欧美一区二区三区| 色八戒一区二区三区| 日韩国产高清在线| 久久久亚洲精品一区二区三区| 成人app网站| 午夜精品免费在线观看| 精品88久久久久88久久久| 成人精品国产福利| 日韩黄色免费网站| 亚洲国产成人一区二区三区| 在线区一区二视频| 国产精一品亚洲二区在线视频| 亚洲欧美在线另类| 精品美女在线观看| 色综合久久88色综合天天6| 日韩一区精品视频| 最新国产の精品合集bt伙计| 日韩一区二区三区视频在线| zzijzzij亚洲日本少妇熟睡| 丝袜亚洲另类欧美综合| 中文天堂在线一区| 日韩视频免费观看高清在线视频| 成人h动漫精品| 老司机精品视频一区二区三区| 国产精品欧美一区二区三区| 欧美一区二区在线视频| 99视频热这里只有精品免费| 久久www免费人成看片高清| 亚洲精品一卡二卡| 中文字幕国产一区二区| 日韩美一区二区三区| 在线精品视频小说1| 丰满岳乱妇一区二区三区| 蜜桃久久av一区| 亚洲h在线观看| 亚洲人成网站色在线观看 | 国产日韩成人精品| 黑人巨大精品欧美一区| 亚洲成a人v欧美综合天堂 | 精品欧美黑人一区二区三区| 欧美亚洲精品一区| 久久久亚洲高清| 精品乱人伦小说| 欧美亚洲国产一区二区三区va | 国产日韩欧美精品电影三级在线| 欧美日韩精品二区第二页| 91免费在线播放| 99精品在线观看视频| 懂色av一区二区三区免费观看| 欧美a一区二区| 丝袜美腿亚洲一区| 一级精品视频在线观看宜春院 | 精品成人一区二区| 日韩视频一区二区三区在线播放| 欧美区一区二区三区| 欧美日本乱大交xxxxx| 欧美日韩在线综合| 在线亚洲+欧美+日本专区| 色婷婷香蕉在线一区二区| 99re8在线精品视频免费播放| 成人免费视频caoporn| 成人av电影免费观看| 99视频一区二区三区| 91视频com| 91激情五月电影| 欧美三级一区二区| 欧美高清性hdvideosex| 91麻豆精品国产91久久久久 | 色婷婷久久久亚洲一区二区三区| 99精品国产热久久91蜜凸| 91亚洲国产成人精品一区二三| 91网址在线看| 欧美视频三区在线播放| 日韩欧美一级在线播放| 久久综合国产精品| 国产精品久久久久久久浪潮网站 | 久久综合色播五月| 久久先锋资源网| 亚洲国产精品精华液ab| 亚洲免费观看高清完整| 肉肉av福利一精品导航| 经典三级视频一区| www.av精品| 欧美精品色综合| 久久噜噜亚洲综合| 亚洲激情av在线| 精品一区二区三区欧美| 成人国产精品视频| 欧美美女网站色| 久久久www成人免费毛片麻豆| 亚洲v中文字幕| 美国十次综合导航| 成人国产精品免费观看动漫| 欧美日本一道本| 国产精品乱码妇女bbbb| 一级精品视频在线观看宜春院 | 国产亚洲精品久| 亚洲精品欧美在线| 欧美欧美欧美欧美| 成人小视频在线| 91精品国产综合久久蜜臀| 精品一区二区日韩| 日韩精品一二三四| 99精品偷自拍| xf在线a精品一区二区视频网站| 有码一区二区三区| 国产一区二区三区在线看麻豆| 色婷婷国产精品综合在线观看| 日韩欧美aaaaaa| 亚洲国产成人porn| 成人黄色免费短视频| 欧美一区二区三区视频免费播放 | 国产乱子伦视频一区二区三区 | 成人av电影在线| 精品久久人人做人人爱| 亚洲欧美成aⅴ人在线观看| 麻豆精品久久精品色综合| 色哟哟欧美精品| 久久久久久久av麻豆果冻| 香蕉影视欧美成人| 色婷婷精品大在线视频| 中文一区在线播放| 激情五月播播久久久精品| 欧美日韩一级二级| 亚洲精品成人在线| av成人老司机| 国产精品国产精品国产专区不片| 精品一区二区三区欧美| 日韩一二在线观看| 午夜欧美电影在线观看| 日本久久一区二区| 亚洲美女少妇撒尿| www.99精品| 中文字幕在线免费不卡| 国产**成人网毛片九色| 久久综合九色综合97婷婷女人| 日韩高清一区二区| 9191国产精品| 日韩制服丝袜av| 欧美日韩视频专区在线播放| 亚洲乱码国产乱码精品精可以看 | 欧美午夜不卡视频| 亚洲一级电影视频| 欧美性受xxxx黑人xyx性爽| 一区二区三区国产| 欧美日韩一区中文字幕|