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

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

?? 2460mon.cpp

?? 三星S3C2460 USB DEVICE /USB HOST 監控代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/**
* Project Name : S3C2460 verification project
*
* Copyright 2004 by Samsung Electronics, Inc.
* All rights reserved.
*
* Project Description :
* This software is only for verifying functions of the S3C2460. 
* Anybody can use this code without our permission.
*/

/**
* File Name    : 2460mon.cpp
* Description  : S3C2460 USB monitor main code
* Author       : Y.C.Kwon
* Dept         : Mobile solution, AP
* Created Date : 2004.09.16
* Version      : 0.0
* History
*   R0.0 (2004.09.16): Kwon draft
*/

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

#include "type.h"
#include "Option.h"
#include "Console.h"

#include "2460addr.h"
#include "2460lib.h"
#include "2460slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"

#include "PLL.h"

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

#include "nand.h"
#include "am29f800.h"


void Isr_Init(void);
void Check_SleepKey(void);
void Clear_SleepKey(void);

void Lcd_Off(void);
void Usb_On(void);
void Usb_Off(void);
void WaitDownload(void);
void Menu(void);

#define	OS_START_ADDR_OFFSET (0x00200000)
#define DOWNLOAD_ADDRESS (_RAM_STARTADDRESS+OS_START_ADDR_OFFSET)

volatile unsigned int downloadAddress;

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


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

volatile int isUsbdSetConfiguration;

int download_run=0;
unsigned int tempDownloadAddress;
int menuUsed=0;

void WhichMemory( void)
{
	{
	
      #if (WHICH_PORT==1)
		printf("PORT1 : ");
		if (rP1BANKCFG_DDR&(1<<21)) printf("m");
		if (rP1BANKCFG_DDR&(1<<22)) printf("DDR");
		else printf("SDRAM_D");
	  #endif

		printf("\tPORT2 : ");
		if (rP2BANKCFG_DDR&(1<<21)) printf("m");
		if (rP2BANKCFG_DDR&(1<<22)) printf("DDR\n");
		else printf("SDRAM_D\n");
	}

}

int main(void)
{
	register int i;
    char *mode;

	for(i=0;i<10000;i++);	//	Wait for PLL lock down.

	GlobalCLK();

	Init_LogicalConsole();
	Init_LED();

   	Isr_Init();

	rCLKSRCCON	|=	(1<<5);
	rCLKDIVCON	=	rCLKDIVCON | (1<<12);	// USB 48 Div on
	SetUPLL( 72, 3, 1);

   	Usb_Off(); //USB D+ signal is 'Low'

    isUsbdSetConfiguration=0;

#if 0
    UsbdMain(); 
    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();  
   	UsbdMain(); 
#endif

    Delay(0);  //calibrate Delay()

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

    Led_Display(0x6);
   
#if USBDMA
   	mode="DMA";
#else
   	mode="Int";
#endif

    //printf("\nrP1BANKCFG_DDR=0x%08x,rP2BANKCFG_DDR=0x%08x\n",rP1BANKCFG_DDR,rP2BANKCFG_DDR);
    //printf("rP1BANKCON_DDR=0x%08x,rP2BANKCON_DDR=0x%08x\n",rP1BANKCON_DDR,rP2BANKCON_DDR);
    //printf("rP1REFRESH_DDR=0x%08x,rP2REFRESH_DDR=0x%08x\n",rP1REFRESH_DDR,rP2REFRESH_DDR);

   	printf("\n\n");
   	printf("+-----------------------------------------------+\n");
   	printf("| S3C2460A USB Downloader ver R0.2              +\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");
   		
	Usb_On(); //USB D+ signal is 'High'
    
   /*******************************/
   /*		Cause of Boot-up	   */
   /*******************************/
    //Check_SleepKey(); // Check the cause of Boot-up(Watchdog /Soft Reset / Power on reset / Sleep wakeup.....) 
   
    download_run=1; //The default menu is the Download & Run mode.

    while(1)
    {
    	if(menuUsed==1)Menu();
    	WaitDownload();    
    }

}

unsigned char not_suspend = TRUE;
unsigned char not_resume = TRUE;
unsigned char sus_res_print = FALSE;
uint32 bank_of_nor=0;
void Menu(void)
{
    int i;
	int key;
    menuUsed=1;
    volatile uint32 saved_SROM_BW;
    uint32 jumpAddress;
    
    while(1)
    {
        printf("\n###### Select Menu ######\n");
        printf(" [0] Download & Run\n");
        printf(" [1] Download Only\n");
		printf(" [2] Test SDRAM \n");
        printf(" [3] Program NAND Flash Memory(K9S1208)\n");
        printf(" [4] Run DSP\n");
        printf(" [5] Clear SDRAM.\n");
		printf(" [6] Jump to Specific Address.\n");
		printf("\t(Note! Effective only when pressing a reset button without power-off.\n");
		printf(" [7] USB Suspend/Resume Test\n");
	  #if (WHICH_PORT==1)	//only 496pkg supports this
        printf(" [8] Program AMD NOR Flash Memory\n");
	  #endif

	 	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(0x...):");
            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;
            break;
        case '3':
            Test_K9S1208();
            printf("\nProgram NAND Flash Ends.\n");
		    rINTMSK&=~(BIT_USB);  
   			rINTSUBMSK&=~(BIT_SUB_USBD);
            break;

		case '4':
			rARM2DSP_CTRL	&=	~(0x8);
			i=HCLK;
			printf("\nSelect the frequency of DSPCLK\n");
			printf("[0] HCLK (%dMHz)      [1] HCLK/2 (%dMHz)\n",i/1000000,i/2000000);
			
			if (getchar()=='1') {
				rCLKDIVCON	|=	0x8;
				i/=2;
			} else {
				rCLKDIVCON	&=	~(0x8);
			}
			printf("\nNow run the TeakDSP @%dMHz !!!\n",i);
			
			rARM2DSP_CTRL	|=	0x8;
			break;
			
		case '5':
			printf("\nMemory Clear is selected.\n");
			ClearMemory();
			break;
				
		case '6':
			printf("\nEnter the branch address(Default:0x%08x):",(_RAM_STARTADDRESS+0x00200000));
            jumpAddress=(uint32)GetIntNum();
            if (jumpAddress==0xffffffff)
            	jumpAddress = (_RAM_STARTADDRESS+0x00200000);
            run = (void (*)(void))jumpAddress;
            run();
			break;
		
		case '7':
			printf("\n USB Suspend/Resume test is selected.\n");
			printf("\nIf you don't want to wait suspend interrupt any more, press any key\n");	
			rEP_INT_EN_REG = 0;
			sus_res_print = TRUE;	
			rPWR_REG = 0x01;	//enable suspend mode
    		rUSB_INT_EN_REG |= SUSPEND_INT;
			while(((rPWR_REG & 0x02) != 0x02) && (not_suspend==TRUE))
			{
				if(Uart_GetKey())
					break;
			}
			//printf("Curent PWR_Reg Value is 0x%01x\n", (rPWR_REG&0xf));
			//printf("Curent USB_INT_Reg Value is 0x%01x\n", (rUSB_INT_REG&0xf));
			//printf("Curent USB_INT_EN_Reg Value is 0x%01x\n", (rUSB_INT_EN_REG&0xf));
			
			if(rPWR_REG & 0x02)
			{	
				printf("\nEntered Suspend Mode\n");
			}
			printf("\nIf you want to end this test, press 'y' key\n");
			while(not_resume==TRUE)
			{
				if(Uart_GetKey()=='y')
					break;
			}
			//printf("Curent PWR_Reg Value is 0x%01x\n", (rPWR_REG&0xf));
			//printf("Curent USB_INT_Reg Value is 0x%01x\n", (rUSB_INT_REG&0xf));
			//printf("Curent USB_INT_EN_Reg Value is 0x%01x\n", (rUSB_INT_EN_REG&0xf));
			
			not_suspend = TRUE;
			not_resume = TRUE;   
			
			sus_res_print = FALSE;	
		
			rPWR_REG &= ~0x01;	//disable suspend mode			
    		rEP_INT_EN_REG=EP0_INT|EP1_INT|EP3_INT; 	// determines which interrupt is enabled
    		
			break;
			
	  #if (WHICH_PORT==1)	//only 496pkg supports this
        case '8':
            downloadAddress=_NONCACHE_STARTADDRESS;
            bank_of_nor = 0x0;	//bank0
            saved_SROM_BW = rSROM_BW;
            rSROM_BW = rSROM_BW & ~(0x7<<0) | (0x1<<0);
            
		    printf("\n[Check AM29LVxxx]\n");
		    switch(AM29F800_CheckId())  //04.01.12 junon
		    {
				case 1 :
				    printf("This device is AM29LV200B!\n");	
				    break;
				case 2 :
				    printf("This device is AM29LV400B!\n");	
				    break;
				case 3 :
				    printf("This device is AM29LV800B!\n");	
				    break;
				case 4 :
				    printf("This device is AM29LV160B!\n");	
				    break;
		    	default:
		    		rSROM_BW = saved_SROM_BW;
		    		bank_of_nor = 0x05000000;	//bank2
            		rSROM_BW = rSROM_BW & ~(0x7<<3) | (0x1<<3);
            		switch(AM29F800_CheckId())
            		{
						case 1 :
						    printf("This device is AM29LV200B!\n");	
						    break;
						case 2 :
						    printf("This device is AM29LV400B!\n");	
						    break;
						case 3 :
						    printf("This device is AM29LV800B!\n");	
						    break;
						case 4 :
						    printf("This device is AM29LV160B!\n");	
						    break;
				    	default:  
				    		printf("ID Check Error!!!\n");
				    		return;          		
            		}
            		break;
		    }            
            
            ProgramAM29F800();
            printf("\nProgram AMD NOR Flash Ends.\n");
		    rINTMSK&=~(BIT_USB);  
   			rINTSUBMSK&=~(BIT_SUB_USBD);
            break;
	  #endif            
            
		default:
			break;
		}	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美久久久久久久久久| 免费视频最近日韩| 中文字幕在线观看不卡视频| 中文字幕一区二区5566日韩| 成人免费视频播放| 在线精品视频小说1| 在线成人免费观看| 日韩精品一级中文字幕精品视频免费观看 | 亚洲免费色视频| 日韩中文字幕av电影| 日韩一区二区三区电影在线观看| 国产午夜精品在线观看| 亚洲国产wwwccc36天堂| 国产黄人亚洲片| 欧美日韩国产精品成人| 国产精品免费免费| 日韩va亚洲va欧美va久久| 色美美综合视频| 欧美艳星brazzers| 一区视频在线播放| 欧美天堂一区二区三区| 美腿丝袜在线亚洲一区| 91精彩视频在线| 日本少妇一区二区| 中文字幕欧美日韩一区| 久久国内精品视频| 欧美精品第1页| 粉嫩av一区二区三区在线播放| 精品久久久久久无| 午夜影院在线观看欧美| 在线观看不卡视频| 国精产品一区一区三区mba桃花| 欧美高清精品3d| 国产成人精品影视| 亚洲成人777| 国产午夜一区二区三区| 欧美视频你懂的| 国产成人精品免费| 视频一区国产视频| 亚洲同性同志一二三专区| 91小视频在线| 一区二区中文字幕在线| 欧美一区三区二区| 日本在线不卡视频一二三区| 中文乱码免费一区二区| 日韩写真欧美这视频| 91麻豆免费视频| 国产经典欧美精品| 日韩黄色片在线观看| 国产精品传媒视频| 日本精品视频一区二区| 国产伦精品一区二区三区免费| 久久久亚洲精品石原莉奈| 极品少妇一区二区三区精品视频| 精品美女一区二区| 欧美日韩一级黄| 日韩精品欧美精品| 亚洲一区二区三区四区在线观看| 欧美性一区二区| av亚洲精华国产精华| 一区二区成人在线视频| 欧美一区二区精品在线| 91国产福利在线| 97se狠狠狠综合亚洲狠狠| 亚洲成av人片在线观看| 一区二区在线观看不卡| 欧美一区二区三区小说| 欧美日韩卡一卡二| 欧美色窝79yyyycom| 色狠狠桃花综合| 91美女在线看| 99re6这里只有精品视频在线观看| 国产麻豆91精品| 国产一区二区三区四区五区入口| 日本美女视频一区二区| 日本中文一区二区三区| 午夜久久久久久久久久一区二区| 精品sm在线观看| 91看片淫黄大片一级| 不卡一二三区首页| 蜜臀久久久久久久| 奇米在线7777在线精品| 麻豆极品一区二区三区| 精品一区二区免费视频| 九九精品一区二区| 国产麻豆成人传媒免费观看| 国产福利精品导航| 丁香一区二区三区| 91原创在线视频| 在线一区二区三区四区五区| 欧美色图天堂网| 欧美日韩卡一卡二| 精品电影一区二区| 国产日韩欧美激情| 日韩午夜精品视频| 国产亚洲污的网站| 一区在线播放视频| 天天综合网 天天综合色| 日韩高清一区在线| 国产一区二区三区免费观看| 国产在线精品一区二区| 成人精品小蝌蚪| 91黄视频在线| 日韩一区二区免费视频| 国产欧美一区二区三区在线看蜜臀| 国产精品国产成人国产三级| 亚洲激情中文1区| 亚洲成a人v欧美综合天堂| 久久av资源网| 99国产精品国产精品久久| 欧美午夜宅男影院| 久久只精品国产| 精品国产1区2区3区| 国产精品久久久久久久久免费相片 | 精品国产91洋老外米糕| 国产亚洲污的网站| 亚洲一区二区三区在线看| 毛片不卡一区二区| 一本到不卡免费一区二区| 在线电影院国产精品| 欧美激情一区二区在线| 亚洲国产一区二区三区青草影视| 天天操天天干天天综合网| 国产999精品久久久久久绿帽| 日本韩国欧美国产| 26uuu精品一区二区三区四区在线| 亚洲欧美另类在线| 久久不见久久见免费视频1| 色综合视频在线观看| 日韩一区二区三区三四区视频在线观看| 久久精品亚洲国产奇米99| 香蕉影视欧美成人| eeuss鲁片一区二区三区在线观看| 欧美日韩亚洲综合一区| 国产性做久久久久久| 蜜臀99久久精品久久久久久软件| av一区二区三区四区| 久久人人超碰精品| 亚洲成人综合在线| 暴力调教一区二区三区| 欧美精品一区在线观看| 亚洲第一成人在线| 日本韩国一区二区| 国产精品久久久久久久久免费丝袜| 免费xxxx性欧美18vr| 欧美日韩在线播放三区四区| 国产精品久久久久久久第一福利 | 99re这里只有精品6| 欧美v日韩v国产v| 丝瓜av网站精品一区二区| 91最新地址在线播放| 欧美激情一区二区在线| 国产精品一级在线| av中文字幕亚洲| 久久影院视频免费| 麻豆传媒一区二区三区| 在线播放亚洲一区| 亚洲综合色丁香婷婷六月图片| bt7086福利一区国产| 国产欧美日本一区视频| 国产成人精品影视| 国产欧美日韩一区二区三区在线观看| 蜜桃免费网站一区二区三区| 91精品免费观看| 欧美高清在线视频| 丰满少妇在线播放bd日韩电影| 精品国产制服丝袜高跟| 久久国产精品一区二区| 精品久久久久99| 国内精品在线播放| 26uuu精品一区二区| 国产一区中文字幕| 久久看人人爽人人| 豆国产96在线|亚洲| 国产精品毛片久久久久久| 成人av在线观| 亚洲欧美色一区| 欧美在线观看视频在线| 亚洲一区二区三区精品在线| 欧美日韩在线三区| 另类综合日韩欧美亚洲| 精品国产一区二区三区久久影院 | 亚洲国产视频网站| 欧美情侣在线播放| 蜜桃久久久久久| 久久精品在这里| 91最新地址在线播放| 亚洲国产裸拍裸体视频在线观看乱了| 欧美日韩精品欧美日韩精品一综合| 午夜影视日本亚洲欧洲精品| 欧美成人精品福利| 成人在线视频一区二区| 亚洲精品日产精品乱码不卡| 欧美日韩在线免费视频| 国产在线精品免费| 亚洲特黄一级片| 91麻豆精品国产91久久久| 国产一区二区精品久久| 亚洲视频综合在线| 在线综合+亚洲+欧美中文字幕|