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

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

?? 2443mon_u.cpp

?? Samsung S3C2443 Monitor program source code
?? CPP
字號:
/**
* Project Name : S3C2443 verification project
*
* Copyright 2006 by Samsung Electronics, Inc.
* All rights reserved.
*
* Project Description :
* This software is only for verifying functions of the S3C2443. 
* Anybody can use this code without our permission.
*/

/**
* File Name    : 2443mon.cpp
* Description  : S3C2443 USB monitor main code
* Author       : Cha gyu hwan
* Dept         : Mobile solution, AP
* Created Date : 2006.09.16
* Version      : 0.0
* History
*   R0.0 (2006.06.): Cha gyu hwan draft
*/


#include <stdio.h>
#include <stdlib.h>


#include "Option.h"
#include "System.h"
#include "Console.h"
#include "MMUCache.h"
#include "Exception.h"

#include "2443addr.h"
#include "memtest.h"
#include "pll.h"


#include "profile.h"
#include "usbdev.h"
#include "uartdown.h" // add 060626


void Lcd_Off(void);
void WaitDownload(void);
void Menu(void);

void ClearMemory(void);

void UsbMon(void);

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

static USBDEV oUdev;
volatile U32 downloadAddress; //=DOWNLOAD_ADDRESS;

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

volatile U8 dma_done=0;

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

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

//static USB_OP eOpMode = USB_CPU;
static USB_OP eOpMode = USB_DMA;

static void __irq Isr_Usb(void)
{
//	rINTMSK|=BIT_USBD;  
	oUdev.HandleEvent();
	ClearPending(BIT_USBD);
//	rINTMSK&=~(BIT_USBD);  
}

void WhichMemory(void)
{
	
	if(rBANKCFG & 0x4)
	{
		printf("mSDR\n");	
	}else{
		printf("mDDR\n");	
	}
}

void Reset_Status_Check(void)
{
	printf("reset status register = %08x\n", rRSTSTAT);
	

	
	if( rRSTSTAT & (1<<0) )
	{
		printf("Power-on Reset\n");
	}

	else if( rRSTSTAT & (1<<2) )
	{
		printf("\nWatch-dog Reset\n\n");
		run=(void (*)(void))0x30000000;
		run();
	}
	else if( rRSTSTAT & (1<<3) )//Sleep mode wake-up
	{
		printf("\nSLEEP mode Wake-up\n\n");
		run=(void (*)(void))0x30000000;
		run();
	}
	else if( rRSTSTAT & (1<<4) )
	{
		printf("\nEsleep mode Wake-up\n\n");
		run=(void (*)(void))0x30000000;
		run();
	}
	else if( rRSTSTAT & (1<<5) )
	{
		printf("\nSoft Reset\n\n");
		run=(void (*)(void))0x30000000;
		run();
	}
}

int main(void)
{
	SystemCLK(0);
	Console();
	Isr_Init();
	UsbMon();
}

void UsbMon(void)
{

	
	if (rRSTSTAT&0x8) rRSTCON|=(1<<16); //if reset by sleep wakeup, control the retention I/O cell

	//USB Port is Normal mode
	rMISCCR=rMISCCR&~(1<<12);  // USBD is 0 ,normal mode ,1 is suspend mode /
	rPWRCFG |= (0x1<<4); // phy power enable 

	//USB device 2.0 must reset like bellow , 1st phy reset and after at least 10us, func_reset & host reset     
	//phy reset can reset bellow registers.
    rUSB_RSTCON = (0x0<<2)|(0x0<<1)|(0x1<<0);//Function 2.0 S/W reset, Host 1.1 S/W reset,PHY 2.0 S/W reset
    Delay(1); // phy reset must be asserted for at 10us 
    rUSB_RSTCON = (0x1<<2)|(0x1<<1)|(0x0<<0);//Function 2.0 S/W reset, Host 1.1 S/W reset,PHY 2.0 S/W reset
    rUSB_RSTCON = (0x0<<2)|(0x0<<1)|(0x0<<0);//Function 2.0 S/W reset, Host 1.1 S/W reset,PHY 2.0 S/W reset

	//rUSB_PHYCTRL =(0x2<<3)|(0x0<<2)|(0x1<<1)|(0x0<<0);  //12Mhz,X-tal,External X-tal,device
	rUSB_PHYCTRL =(0x0<<3)|(0x0<<2)|(0x1<<1)|(0x0<<0);  //48Mhz,x-tal,External X-tal,device
    rUSB_PHYPWR = (0x0<<31)|(0x3<<4)|(0x0<<3)|(0x0<<2)|(0x0<<1)|(0x0<<0); 
    //48Mhz clock on ,PHY2.0 analog block power on,XO block power on,XO block power in suspend mode,PHY 2.0 Pll power on ,suspend signal for save mode disable 
    //rUSB_PHYPWR = (0x1<<31)|(0x3<<4)|(0x0<<3)|(0x1<<2)|(0x1<<1)|(0x0<<0); 
    //48Mhz clock on ,PHY2.0 analog block power on,XO block power on,XO block power in suspend mode,PHY 2.0 Pll power on ,suspend signal for save mode disable 
    rUSB_TESTTI =(0x0<<31)|(0x0<<30)|(0x0<<12)|(0xf<<8)|(0xff<<0); // vbus detect enable...
    
	rUSB_CLKCON = (0x0<<31)|(0x1<<2)|(0x0<<1)|(0x0<<0); // vbus detect enable...
    //D+ pull up , USB2.0 Function clock Enable, USB1.1 HOST disable,USB2.0 PHY test enable

	
	rCLKDIV1|=0x1<<4; //  for test clk enable

    pISR_USBD =(unsigned)Isr_Usb;
	MMU_EnableICache();  
	

	ClearPending(BIT_USBD);
	rINTMSK&=~(BIT_USBD);   // usb interrupt enable 

	Delay(0);  //calibrate Delay()
	Led_Display(0x6);

	rUSB_CLKCON = (0x1<<31)|(0x1<<2)|(0x0<<1)|(0x1<<0); // vbus detect enable...
    //D+ pull up , USB2.0 Function clock Enable, USB1.1 HOST disable,USB2.0 PHY test enable

	// CLKOUT0/1 select.
	printf("CLKOUT0:MPLL in, CLKOUT1:RTC clock.\n");
   	printf("\n\n");
   	printf("+-----------------------------------------------+\n");
   	printf("| S3C2443X USB Downloader ver R0.1  	        +\n");
   	printf("+-----------------------------------------------+\n");
   	WhichMemory();
   	printf("MPLL=%.2fMHz, ARMCLK=%.2fMHz (%d:%d:%d), HCLK=%.2fMHz, PCLK=%.2fMHz\n\n",
   		(float)MPLL/1000000,(float)ARMCLK/1000000,ARMCLKdiv+1,(ARMCLKdiv+1)*(HCLKdiv+1),(ARMCLKdiv+1)*(HCLKdiv+1)*(PCLKdiv+1),(float)HCLK/1000000,(float)PCLK/1000000);
   	printf("USB: IN_ENDPOINT:1 OUT_ENDPOINT:3\n"); 
   	printf("FORMAT: <ADDR(DATA):4>+<SIZE(n+10):4>+<DATA:n>+<CS:2>\n");
   	printf("NOTE: 1. Power off/on or press the reset button for 1 sec\n");
   	printf("         in order to get a valid USB device address.\n");
   	printf("      2. For additional menu, Press any key. \n");
   	printf("\n");

	download_run=1; //The default menu is the Download & Run mode.
	
	Reset_Status_Check();
	
	rUSB_TESTTI = 0x0400; //
	
	while(1)
	{
	
		eOpMode =USB_DMA; 
		UsbdMain(); 
		if(menuUsed==1)Menu();
		WaitDownload();
	}
	

}

void UsbdMain(void)
{
    oUdev.SetOpMode(eOpMode);
    oUdev.Init();
}


void Menu(void)
{
	U8 key;
	menuUsed=1;
	while(1)
	{
		printf("\n###### Select Menu ######\n");
		printf(" [0] Download & Run\n");
		printf(" [1] Download Only\n");
		printf(" [2] Test SDRAM \n");
		printf(" [3] Clear SDRAM \n");
		printf(" [4] Change The Console UART Ch.\n");
 		printf(" [5] Download with UART\n");
		printf(" [6] Upload with USB 2.0 device \n");
		printf(" [7] suspend mode test\n");
		key=getchar();
		
		switch(key)
		{
		case '0':
			printf("\nDownload&Run is selected.\n\n");
			download_run=1;
			return;
		case '1':
			printf("\nDownload Only is selected.\n");
			printf("Enter a new temporary download address(0x3...):");
			
			tempDownloadAddress=GetIntNum();
			download_run=0;
			printf("The temporary download address is 0x%x.\n\n",tempDownloadAddress);
			return;
		case '2':
			printf("\nMemory Test is selected.\n");
			MemoryTest();
			Menu();
			return;
		case '3':
			printf("\nMemory Clear is selected.\n");
			ClearMemory();
			Menu();
			return;
		case '4':
			printf("\nWhich UART channel do you want to use for the console?[0/1]\n");
			if(getchar()!='1')
			{
				*pMagicNum=0x0;
				printf("UART ch.0 will be used for console at next boot.\n");					
			}
			else
			{
				*pMagicNum=0x12345678;
 				printf("UART ch.1 will be used for console at next boot.\n");		
				printf("UART ch.0 will be used after long power-off.\n");
			}
			printf("System is waiting for a reset. Please, Reboot!!!\n");
			while(1);
		case '5':  // add 060626
			printf("\nDownload with UART\n");
			UartMON();
			return;
		case '6':  // add 060626
			printf("\nUpload file !!\n");
			oUdev.SetOpMode(eOpMode); 
			getchar();
			return;
		case '7':  // add 060626
		//rMISCCR|=(1<<12);	
		    rUSB_PHYPWR = (0x0<<31)|(0x3<<4)|(0x0<<3)|(0x0<<2)|(0x1<<1)|(0x0<<0); 
		    
			getchar();
			return;
		default:
			break;
		}	
	}		

}

extern U32 checkTest;

void WaitDownload(void)
{
	U32 i;
	U32 j;
	U16 cs;
	U32 temp;
	U16 dnCS;
	int first=1;
	float time;
	U8 tempMem[16];
	U8 key;
	U32 uDownAddr, uDownFileSize;

	

	oUdev.m_uDownloadAddress=(U32)tempMem; //_RAM_STARTADDRESS; 
	oUdev.m_uDownloadFileSize=0;
	
	/*******************************/
	/*	Test program download	*/
	/*******************************/
	j=0;

	if(oUdev.IsEnumerationDone()==false)
	{
	printf("USB host is not connected yet.\n");
	}
	
	while(oUdev.m_uDownloadFileSize==0)
	{
		if(first==1 && oUdev.IsEnumerationDone()==true)
		{
			printf("USB host is connected. Waiting a download.\n");
			first=0;
		}

		if(j%0x50000==0)Led_Display(0x6);
		if(j%0x50000==0x28000)Led_Display(0x9);
		j++;
		key=Uart_GetKey();
		if(key!=0)
		{
		
			Menu();
			first=1; //To display the message,"USB host ...."
		}

	}

	StartStopwatch();  

	printf("\nNow, Downloading [ADDRESS:%xh,TOTAL:%d]\n",
			oUdev.m_uDownloadAddress,oUdev.m_uDownloadFileSize);
	printf("RECEIVED FILE SIZE:%12d",0);
 /*  	 if(oUdev.m_eOpMode!= USB_CPU)		
	{
		j=0x10000;
//	    getchar();

	    while(1)
		{
			printf("\b\b\b\b\b\b\b\b\b\b%10d",j);
			j+=0x10000;
			if(dma_done ==1)break;
	
		}
	
	}
	else
	{
	    
	   // printf("*");

*/
// getchar();
// printf("\nsize=%d oUdev.m_uDownloadFileSize-8 = %d\n",((U32)oUdev.m_pDownPt-oUdev.m_uDownloadAddress),(oUdev.m_uDownloadFileSize-8));
// printf("ep3csr = %x \n\n",rESR); 
// printf("oUdev.m_cpucnt= %d\n",oUdev.m_cpucnt);
 j=0x10000;
	while(((U32)oUdev.m_pDownPt-oUdev.m_uDownloadAddress)<(oUdev.m_uDownloadFileSize-8))
	{
		U8 key=0;
		//printf("*");	
		if( ((U32)oUdev.m_pDownPt-oUdev.m_uDownloadAddress)>=j)
		{
		//	printf("\b\b\b\b\b\b\b\b%8d",j);
			j+=0x10000;
		}
		key=Uart_GetKey();
	 	if(key=='x')
	 	{
		 	printf("\nsize=%d oUdev.m_uDownloadFileSize-8 = %d\n",((U32)oUdev.m_pDownPt-oUdev.m_uDownloadAddress),(oUdev.m_uDownloadFileSize-8));
			printf("ep3csr = %x \n\n",rESR); 
	 		printf("oUdev.m_cpucnt= %d\n",oUdev.m_cpucnt);
	 		printf("\nCheckTest : %d", checkTest);
	 	}
	}
		
		
		//printf("\b\b\b\b\b\b\b\b%8d",j);
//	}
//   dma_done=0;
	    
	time=EndStopwatch();
	printf("\b\b\b\b\b\b\b\b%8d",oUdev.m_uDownloadFileSize);	
	
	printf("\n(%5.1fKB/S,%3.1fS)\n",(float)(oUdev.m_uDownloadFileSize/time*1000.),time/1000000);
	

	

	printf("RECEIVE FILE DONE !! \n");
	if (oUdev.VerifyChecksum())
		printf("\nChecksum O.K.\n\n");
	else
		printf("\nChecksum failed.\n\n");

	if(download_run==1)
	{
		rINTMSK=BIT_ALLMSK;
		run=(void (*)(void))oUdev.m_uDownloadAddress;
	run();
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜视频一区在线观看| 国产精品国产成人国产三级| 日本亚洲免费观看| 日韩视频在线一区二区| 国产在线视频一区二区| 欧美激情在线一区二区| 91免费精品国自产拍在线不卡| 亚洲人吸女人奶水| 欧美高清视频不卡网| 美女视频网站久久| 国产精品女上位| 欧美影片第一页| 日本美女一区二区三区| 久久精品免费在线观看| 一本色道**综合亚洲精品蜜桃冫 | 久久蜜桃av一区精品变态类天堂| 国产精品中文字幕日韩精品 | 亚洲国产成人高清精品| 3d动漫精品啪啪1区2区免费| 国产中文字幕精品| 亚洲三级视频在线观看| 欧美一级二级三级乱码| 国产一区二区成人久久免费影院 | 国产欧美日韩在线看| 日本国产一区二区| 奇米亚洲午夜久久精品| 国产精品免费视频观看| 69堂亚洲精品首页| 成人免费黄色在线| 琪琪久久久久日韩精品| 亚洲特级片在线| 精品国产免费久久| 色欧美乱欧美15图片| 国产在线播放一区二区三区| 一区二区三区中文字幕精品精品| 26uuu国产电影一区二区| 91福利精品视频| 国产成人综合在线播放| 午夜精品视频在线观看| 最新日韩av在线| 26uuu色噜噜精品一区二区| 在线观看日韩一区| 成人av电影在线观看| 老司机精品视频线观看86| 亚洲午夜一区二区三区| 国产精品久久久久天堂| 久久免费视频一区| 日韩精品一区二区三区三区免费| 欧美主播一区二区三区| 91色.com| 成人91在线观看| 国产精品自拍av| 精品制服美女丁香| 免费看日韩精品| 亚洲成人动漫在线免费观看| 亚洲精品视频一区二区| 国产午夜精品一区二区| 26uuu成人网一区二区三区| 91麻豆精品国产91久久久久久 | 欧美日韩一区 二区 三区 久久精品| 成人丝袜高跟foot| 国产精品91一区二区| 国产一区二区三区黄视频| 日产国产欧美视频一区精品| 亚洲地区一二三色| 亚洲第一二三四区| 午夜av电影一区| 亚洲一区二区三区四区五区黄| 亚洲欧美区自拍先锋| 综合激情网...| 亚洲欧美偷拍卡通变态| 亚洲免费视频成人| 一区二区三区在线播| 亚洲一线二线三线久久久| 亚洲精品美国一| 亚洲一区二区三区视频在线| 亚洲午夜电影在线观看| 亚洲成人免费视| 男人操女人的视频在线观看欧美| 青青草97国产精品免费观看 | 不卡视频一二三四| 成人国产精品免费观看| www.日韩大片| 在线视频中文字幕一区二区| 欧美午夜寂寞影院| 日韩亚洲电影在线| 久久亚洲精品小早川怜子| 国产视频视频一区| 蜜桃精品视频在线| 韩国一区二区在线观看| 国产91清纯白嫩初高中在线观看| 波多野结衣亚洲一区| 99v久久综合狠狠综合久久| av综合在线播放| 欧美日韩一区二区在线观看视频 | av高清久久久| 欧美系列一区二区| 欧美mv日韩mv亚洲| 中文字幕免费在线观看视频一区| 亚洲欧美日韩久久| 日韩高清一级片| 丰满放荡岳乱妇91ww| 在线亚洲欧美专区二区| 欧美mv和日韩mv的网站| 中文av一区特黄| 亚洲综合精品久久| 久久精品国产精品亚洲红杏 | 亚洲国产成人91porn| 麻豆精品国产91久久久久久| 成人免费看黄yyy456| 51久久夜色精品国产麻豆| 久久久99久久| 亚洲国产成人va在线观看天堂| 久久99热这里只有精品| 99re免费视频精品全部| 欧美一级搡bbbb搡bbbb| 国产精品免费人成网站| 日韩综合在线视频| 成人18精品视频| 宅男在线国产精品| 亚洲欧美综合另类在线卡通| 日本亚洲三级在线| 色综合久久99| 久久精品免费在线观看| 日韩中文字幕91| 99视频一区二区| 精品久久久影院| 亚洲一区二区三区四区不卡| 风间由美性色一区二区三区| 日韩视频一区二区| 亚洲一区二区综合| 成人av电影在线| 欧美成人性福生活免费看| 夜夜亚洲天天久久| 国产 日韩 欧美大片| 欧美大片日本大片免费观看| 亚洲欧美偷拍卡通变态| 国产99一区视频免费| 日韩一级完整毛片| 午夜精品在线看| 色诱亚洲精品久久久久久| 国产亚洲一区字幕| 麻豆视频观看网址久久| 欧美人成免费网站| 亚洲综合成人在线| 色综合天天狠狠| 国产精品久久久久aaaa樱花| 国产精品一区二区在线看| 日韩欧美激情在线| 秋霞午夜av一区二区三区| 欧美日韩高清影院| 午夜视黄欧洲亚洲| 欧美精品精品一区| 性久久久久久久久久久久| 欧美性高清videossexo| 一个色综合av| 欧美色区777第一页| 亚洲成在人线免费| 在线电影一区二区三区| 亚洲sss视频在线视频| 欧美日韩亚洲国产综合| 亚洲一级二级三级在线免费观看| 日本韩国精品在线| 亚洲成人黄色小说| 欧美一区二区福利视频| 男人的j进女人的j一区| 欧美成人video| 精品亚洲成a人| 久久久综合网站| 成人av免费在线观看| 最好看的中文字幕久久| 色综合视频在线观看| 亚洲夂夂婷婷色拍ww47| 在线电影国产精品| 久久99久久99小草精品免视看| www国产精品av| 国产成人无遮挡在线视频| 一色屋精品亚洲香蕉网站| 在线精品视频一区二区三四| 亚洲va欧美va国产va天堂影院| 欧美一区二区三区视频| 国产制服丝袜一区| 国产精品久久久久久久久晋中| 91女神在线视频| 日日夜夜精品免费视频| 久久影院电视剧免费观看| 成人视屏免费看| 亚洲线精品一区二区三区八戒| 欧美高清www午色夜在线视频| 美女一区二区视频| 中文字幕久久午夜不卡| 91国内精品野花午夜精品| 免费观看在线综合| 国产女主播视频一区二区| 91理论电影在线观看| 日本人妖一区二区| 国产无遮挡一区二区三区毛片日本| 99久久精品免费精品国产| 亚洲亚洲人成综合网络| 久久精品视频一区|