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

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

?? u2440mon.c

?? 這是三星2440潛入式系統上USB的驅動下載程序,比較精簡.
?? C
?? 第 1 頁 / 共 3 頁
字號:
        Uart_Printf ( "-------------------------------------\r\n");
        Uart_Printf ( "1) Upgrade NBOOT\r\n");
        Uart_Printf ( "2) Upgrade EBOOT\r\n");
        Uart_Printf ( "3) Save License\r\n");
	  	Uart_Printf ( "4) Change the Boot Picture\r\n");
	  	Uart_Printf ( "5) Back\r\n");
/*	  Uart_Printf ( "6) Upgrade NBOOT through Serial\r\n");
        Uart_Printf ( "7) Upgrade EBOOT  through Serial\r\n");
        Uart_Printf ( "8) Save License  through Serial\r\n");
	  Uart_Printf ( "9) Change the Boot Picture  through Serial\r\n");
*/	  	Uart_Printf ( "\r\nEnter your selection: ");
loop:
		KeySelect=GUI_WaitKey();
		if(default_keyproc(KeySelect)==0)
			goto loop;
		Out2TerminalChar((char)KeySelect);
	switch(KeySelect)
	{
		case '1':
			//gBlockIndex=NBOOT_BLOCK;
			//return 0;
		case '2':
			//gBlockIndex=EBOOT_BLOCK;
			//return 0;
		case '3':
			//gBlockIndex=TOC_BLOCK;
			//return 0;
		case '4':
			//gBlockIndex=BOOT_PICTURE_BLOCK;
			gBlockIndex=block_index[KeySelect-'1'];
			//currfilename = file_name[KeySelect-'1'];
			do{
				Uart_Printf ( "Select Upgrade through path\r\n");
				Uart_Printf ( "1) Through USB\r\n");
	        		Uart_Printf ( "2) Through Serial\r\n");
	        		Uart_Printf ( "3) Through SD Card Files\r\n");
				Uart_Printf ( "\r\nEnter your selection: ");
			loop1:	
				KeySelect=GUI_WaitKey();
				if(default_keyproc(KeySelect)==0)
					goto loop1;
				Out2TerminalChar((char)KeySelect);
				if(KeySelect == '2')
				{
					uartInit();
					return 0;
				}
				if(KeySelect == '3')
				{
					FS_FILE *fp;
					fp=SelectFile();//FS_FOpen(currfilename,"rb");
					if(fp)
					{
						downloadFileSize=fp->size;
						downloadAddress = DMABUFFER;
						downPtIndex = DMABUFFER;
						readPtIndex = DMABUFFER;
						downPt = (unsigned char*)downPtIndex;
						FS_FRead((void *) downPt, downloadFileSize, 1, fp);
						FS_FClose(fp);
						return 0;
					}
				}
				if(KeySelect == '1')
					return 0;
			}
			while(1);
			
		case '5':
			return 0;
#if 0
		case '6':
			gBlockIndex=NBOOT_BLOCK;
			uartInit();
			return 0;
		case '7':
			gBlockIndex=EBOOT_BLOCK;
			uartInit();
			return 0;
		case '8':
			gBlockIndex=TOC_BLOCK;
			uartInit();
			return 0;
		case '9':
			gBlockIndex=BOOT_PICTURE_BLOCK;
			uartInit();
			return 0;
#endif
		default:
			default_keyproc(KeySelect);
			break;
	}
    }
	return 0;
}
void Menu(void)
{
	int i,j;
	U8 key;
	U32 curr_ticks;
	while(1)
	{
		Uart_Printf("\n###### Main Menu ######\n");
		Uart_Printf(" [0] Download & Run\n");
		Uart_Printf(" [1] Download and Save-->\n");
		Uart_Printf(" [2] EBOOT-->\n");
		Uart_Printf(" [3] Self Test-->\n");
		Uart_Printf(" [4] NandFlash Block Read\n");
//		Uart_Printf(" [4] Touch Calibration\n");
		Uart_Printf(" [5] NandFlash Block Write\n");
		Uart_Printf ( "\r\nEnter your selection: ");
loop:
		key=GUI_WaitKey();
		if(default_keyproc(key)==0)
			goto loop;
	      Out2TerminalChar((char)key);
		
		switch(key)
		{
		case '0':
			Uart_Printf("\nDownload&Run is selected.\n\n");
			download_run=1;
			do{
				Uart_Printf ( "Select Download through path\r\n");
				Uart_Printf ( "1) Through USB\r\n");
	        		Uart_Printf ( "2) Through Serial\r\n");
	        		Uart_Printf ( "3) Through SD Card Files\r\n");
				Uart_Printf ( "\r\nEnter your selection: ");
	loop1:				
				key=GUI_WaitKey();
				if(default_keyproc(key)==0)
					goto loop1;
				Out2TerminalChar((char)key);
				if(key == '2')
				{
					uartInit();
					Uart_Printf("Enter a download address(0x3...):");
					downloadAddress=Uart_GetIntNum();
					downPt = (unsigned char*)downloadAddress;
					return ;
				}
				if(key == '3')
				{
					FS_FILE *fp;
				    fp=SelectFile();
					if(fp)
					{
						downloadFileSize=fp->size;	
						Uart_Printf("Enter a download address(0x3...):");
						downloadAddress = Uart_GetIntNum();
						downPt = (unsigned char*)downloadAddress;
						FS_FRead((void *) downPt, downloadFileSize, 1, fp);
						FS_FClose(fp);
						return ;
					}
				}
				if(key == '1')
					return ;
			}while(1);
	//		MMU_DeInit();
			return;
		case '1':
//			Uart_Printf("\nDownload and Write to Nand Flash is selected.\n");
//			Uart_Printf("Enter a new temporary download address(0x3...):");
	//		tempDownloadAddress=Uart_GetIntNum();
			download_run=0;
			upgrade_keyproc();
//			Uart_Printf("The temporary download address is 0x%x.\n\n",tempDownloadAddress);
			return;
		case '2':
			download_run=2;
			eboot_main();
			break;
		case '3':
			test_keyproc();
			break;
		case '4':
			{
				U32 block,sector;
				U8 buffer[2048+16];
				Uart_Printf("buffer %p size=%d\n",buffer,sizeof(buffer));
				Uart_Printf("Input target block number:");
				block=Uart_GetIntNum();
				Uart_Printf("Input target page number:");
				sector=Uart_GetIntNum();
				Uart_Printf("block=%d,page=%d:",block,sector);
				sector=sector+BLOCK_TO_SECTOR(block);//block<<5;
				FMD_ReadSector(sector, (LPBYTE) buffer, (PSectorInfo)(buffer+SECTOR_SIZE), 1);
			    for(i=0;i<SECTOR_SIZE;i++)
			    {
			        if(i%16==0)
				    Uart_Printf("\n%3xh:",i);
			        Uart_Printf("%02x ",buffer[i]);
			    }
				Uart_Printf("\nS.A.:",i);
			
			    for(i=0;i<8;i++)
			    {
			        Uart_Printf("%02x ",buffer[i+SECTOR_SIZE]);
			    }

			    Uart_Printf("\n"); 	
			}
			break;
		case '5':
			{
				U32 block,sector;
				U8 buffer[2048+16];
				Uart_Printf("buffer %p size=%d\n",buffer,sizeof(buffer));
				Uart_Printf("Input target block number:");
				block=Uart_GetIntNum();
				Uart_Printf("Input target page number:");
				sector=Uart_GetIntNum();
				Uart_Printf("block=%d,page=%d:",block,sector);
				sector=sector+BLOCK_TO_SECTOR(block);//block<<5;
				memset(buffer,0x55,sizeof(buffer));
				FMD_WriteSector(sector, (LPBYTE) NULL, (PSectorInfo)(buffer+SECTOR_SIZE), 1);
				FMD_ReadSector(sector, (LPBYTE) buffer, (PSectorInfo)(buffer+SECTOR_SIZE), 1);
			    for(i=0;i<SECTOR_SIZE;i++)
			    {
			        if(i%16==0)
				    Uart_Printf("\n%3xh:",i);
			        Uart_Printf("%02x ",buffer[i]);
			    }
				Uart_Printf("\nS.A.:",i);
			
			    for(i=0;i<8;i++)
			    {
			        Uart_Printf("%02x ",buffer[i+SECTOR_SIZE]);
			    }

			    Uart_Printf("\n"); 	
			}
			break;
/*		case '4':
			WM_HideWindow(hTerm);
			Show_ExecKeyboard(NULL,0);
			_ExecCalibration() ;
			WM_ShowWindow(hTerm);
			Show_ExecKeyboard(NULL,1);
			break;
		case '5':
			curr_ticks =  OSTimeGet();
			srand(curr_ticks);	
			rsa_self_test();
			Uart_Printf("rsa test spent time %dms",(OSTimeGet()-curr_ticks)*10);
			break;
*/		default:
			default_keyproc(key);
			break;
	}	
	}		

}

int AfterRcvFirstDataPacket();
BOOL check_license_valid(U8 *license_dat)
{
	rsa_context rsa;
	uint len = 8+54*2;
	memset(&rsa,0x00,sizeof(rsa));
	rsa_init(&rsa);
	if( rsa_pkcs1_decrypt_public( &rsa, license_dat, 128,
                                 output_decrypt,  &len ) != 0)
             goto Cleanup;
	if(memcmp(output_decrypt,serial_num_rev,8)!=0)
			goto Cleanup;
	if(memcmp(&output_decrypt[8],plaintext_a,54)!=0)
		goto Cleanup;
	if(memcmp(&output_decrypt[8+54],plaintext_b,54)!=0)
		goto Cleanup;
	rsa_free(&rsa);
	return TRUE;
Cleanup:
	rsa_free(&rsa);
	return FALSE;
}
void WaitDownload(void)
{
	U32 i;
	U32 j;
	U16 cs;
	U32 temp;
	U16 dnCS;
	int first=1;
	float time;
	U8 tempMem[16];
	U8 key;
	checkSum=0;
//	downloadAddress=(U32)tempMem; //_RAM_STARTADDRESS; 
	downPt=(unsigned char *)downPtIndex;//downloadAddress;
	//This address is used for receiving first 8 byte.
	//downloadFileSize=0;
	
#if 0
	MMU_DisableICache(); 
		//For multi-ICE. 
		//If ICache is not turned-off, debugging is started with ICache-on.
#endif

	/*******************************/
	/*	Test program download	*/
	/*******************************/
	j=0;

	if(isUsbdSetConfiguration==0)
	{
	Uart_Printf("USB host is not connected yet.\n");
//	_UpdateCmdWin(_usbhInfoWin, "USB host is not connected yet.");
//    WM_ExecIdle();
	}

	while(downloadFileSize==0)
	{
		if(first==1 && isUsbdSetConfiguration!=0)
		{
			Uart_Printf("USB host is connected. Waiting a download.\n");
//			_UpdateCmdWin(_usbhInfoWin, "USB host is connected. Waiting a download.");
//    		WM_ExecIdle();
			first=0;
		}

	if(j%0x280000==0)Led_Display(0x6);
	if(j%0x280000==0x14000)Led_Display(0x9);
	j++;

	key=GUI_GetKey();
	if(key!=0)
	{
		Menu();
			first=1; //To display the message,"USB host ...."
	}
//	GUI_Exec();
	}
	if(isSerSetConfiguration)
	{
		if(SERAfterRcvFirstDataPacket()==-1)
			return ;
	}
	else if(isUsbdSetConfiguration)
	{
		if(AfterRcvFirstDataPacket()==-1)
			return ;
	}
	else
	{/* upgrade from SD card*/
		//if(SERAfterRcvFirstDataPacket()==-1)
		//	return ;
	}
//	Uart_TxEmpty(consoleNum);


	if(download_run==1)
	{
		rINTMSK=BIT_ALLMSK;
		Launch(downloadAddress);
		//run=(void (*)(void))downloadAddress;
	//run();
	}
	if(download_run == 0)
	{/*download successful, then try to program to nand flash*/
		U32 targetSize;
		U32 blockIndex;
		SectorInfo si,si1;
		U8 *srcPt;
		U32 progSize=0;		
		Uart_Printf("\n[SMC(K9S1208V0M) NAND Flash Writing Program]\n");
    
    		Uart_Printf("\nSource size:0h~%xh\n",downloadFileSize-1);
//    		Uart_Printf("\nAvailable target block number: 0~4095\n");
//    		Uart_Printf("Input target block number:");
//    		blockIndex=Uart_GetIntNum();//scanf("%d",&targetBlock);
		blockIndex = gBlockIndex;
		if(blockIndex == 1)
		{/* this is for save license data,we need check the license is valid then save to flash.*/
			U8 license_dat[128];
			U32 calc_crc;
			if(isSerSetConfiguration)//from Serial Port.
				memcpy(license_dat,(U8*)downloadAddress,downloadFileSize-6);				
			else if(isUsbdSetConfiguration)
			{
				if(downloadFileSize != 128+10)
				{
					Uart_Printf("1 it is not valid license file,please try again\n");
					return ;
				}
				memcpy(license_dat,(U8*)downloadAddress,downloadFileSize-10);
			}
			else//from SD Card..
				memcpy(license_dat,(U8*)downloadAddress,downloadFileSize);
			//check the license is valid or not...
			if(check_license_valid(license_dat)== FALSE)
			{
				Uart_Printf("2 it is not valid license file,please try again\n");
				return ;
			}
			{
				TOC_Read();
				g_pTOC->license_signature=LICENSE_SIG;
				memcpy((LPVOID)g_pTOC->license_dat,license_dat,128);//fix save license from SD card invalid issue,use the fixed length 128. 
				for(i=0,calc_crc=0;i<128;i+=4)
				{
					calc_crc=(U32)(calc_crc+g_pTOC->license_dat[i]+g_pTOC->license_dat[i+1]+g_pTOC->license_dat[i+2]+g_pTOC->license_dat[i+3]);
				}
				g_pTOC->license_crc = calc_crc;
				TOC_Write();
			}
			return ;
		}
    		if((blockIndex == NBOOT_BLOCK)||(blockIndex == EBOOT_BLOCK))
    		{
    			while((key != 'y')&&(key != 'Y')&&(key != 'n')&&(key != 'N'))
    			{
					Uart_Printf("\nAre you make sure to upgrade the %s[Y/N]?",blockIndex==0?"NBOOT":"EBOOT");
					key = GUI_WaitKey();
					Out2TerminalChar(key);
					if(key == '\r')
						break;
    			}
			if((key=='n')||(key=='N'))
				return;
		}
	//	if(blockIndex>IMAGE_START_SECTOR)
    		targetSize=((downloadFileSize+PAGES_PER_BLOCK*SECTOR_SIZE-1)/(PAGES_PER_BLOCK*SECTOR_SIZE))*(PAGES_PER_BLOCK*SECTOR_SIZE);
    		Uart_Printf("target start block number     =%d\n",blockIndex);
    		Uart_Printf("target size        (0x20000*n) =0x%x\n",targetSize);
    		Uart_Printf("STATUS:");
		

             // to keep bootpart off of our reserved blocks we must mark it as bad, reserved & read-only
             si.bOEMReserved = OEM_BLOCK_RESERVED | OEM_BLOCK_READONLY;
             si.bBadBlock    = BADBLOCKMARK;
             si.dwReserved1  = 0;
             si.wReserved2   = 0;
		si1.bOEMReserved &= ~OEM_BLOCK_READONLY;
		#define SECTOR_WRITE_COMPLETED 0x0004  // Indicates data is valid for the FAL
    		si1.wReserved2 &= ~SECTOR_WRITE_COMPLETED;
		si1.bBadBlock    = 0xff;
    		si1.dwReserved1 = 0;
		srcPt=(U8*)downloadAddress;
		while(1)
		{
			if(blockIndex>IMAGE_START_BLOCK)
			{
				if(IsBlockBad(blockIndex) == TRUE)
				{
					Uart_Printf("block %d is Bad,skip it\n",blockIndex);
					blockIndex++;
					continue;
				}
				FMD_ReadSector(BLOCK_TO_SECTOR(blockIndex), NULL,&si1,1);
				si1.bOEMReserved &= ~OEM_BLOCK_READONLY;
    				si1.wReserved2 &= ~SECTOR_WRITE_COMPLETED;
			}
			FMD_EraseBlock(blockIndex);
			Uart_Printf("\nE");
				
			//for(i=0;i<PAGES_PER_BLOCK;i++) // 16K size only
			{
			    FMD_WriteSector((BLOCK_TO_SECTOR(blockIndex))+0,srcPt,blockIndex<IMAGE_START_BLOCK?&si:&si1,PAGES_PER_BLOCK);// block num, page num, buffer
			    srcPt+=SECTOR_SIZE*PAGES_PER_BLOCK;	// Increase buffer addr one pase size
			    Uart_Printf("b");
			}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区你懂的| 国产美女av一区二区三区| 精品国产一区二区三区不卡 | 视频一区免费在线观看| 中文字幕乱码日本亚洲一区二区| 欧美精品久久一区| 色综合久久久久久久| 色综合久久66| 久久综合网色—综合色88| 欧美成人精品福利| 久久综合狠狠综合久久综合88| 亚洲欧美电影一区二区| 一区二区三区精品在线观看| 亚洲理论在线观看| 五月婷婷综合网| 蜜桃久久久久久久| 麻豆精品一区二区三区| 欧美在线免费观看亚洲| 在线播放91灌醉迷j高跟美女| 91亚洲男人天堂| 91亚洲精华国产精华精华液| 久久久噜噜噜久久中文字幕色伊伊| 久久久久久久网| 蜜臀av性久久久久蜜臀aⅴ| 欧美色图片你懂的| 欧美在线观看视频在线| 亚洲视频每日更新| 日韩中文字幕91| 欧美亚洲一区二区三区四区| 综合亚洲深深色噜噜狠狠网站| 国产成人午夜电影网| 99视频在线精品| 欧美日韩一区三区| 亚洲国产婷婷综合在线精品| 另类调教123区| 99久久99精品久久久久久| 91精品国产高清一区二区三区蜜臀| 久久久久久久综合日本| 国产一区二区在线观看视频| 久久综合久久综合亚洲| 国产一区二区精品久久99| 久久久精品免费网站| 懂色av中文一区二区三区| 欧美亚洲动漫精品| 五月激情丁香一区二区三区| 777午夜精品视频在线播放| 免费在线看一区| 欧美精品欧美精品系列| 久久国产剧场电影| 久久久久久久久久久久久久久99 | 色婷婷精品久久二区二区蜜臂av | 国产高清精品久久久久| 日本一区二区视频在线| 久色婷婷小香蕉久久| 精品精品欲导航| 成人精品视频网站| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲精品成人在线| 制服丝袜av成人在线看| 国产乱理伦片在线观看夜一区| 国产清纯美女被跳蛋高潮一区二区久久w | 久久久久久久网| 色综合久久久久| 精品一区二区三区不卡| 777a∨成人精品桃花网| 国产一区二区电影| 一区二区三区四区不卡在线| 欧美另类变人与禽xxxxx| 国产一区二区三区四区五区入口| 亚洲三级电影全部在线观看高清| 欧美日韩三级一区| www.亚洲色图.com| 日本视频免费一区| 在线综合视频播放| 懂色中文一区二区在线播放| 亚洲国产综合色| 久久久久国产精品免费免费搜索| 欧美日韩精品免费| 午夜久久久久久久久久一区二区| 欧美tickling挠脚心丨vk| 97se亚洲国产综合自在线不卡| 美国三级日本三级久久99| 亚洲欧洲在线观看av| 色婷婷综合激情| 国产成人自拍高清视频在线免费播放| 亚洲一区二区三区国产| 91精选在线观看| 91美女片黄在线观看| 国产一区二区三区美女| 日本欧美在线观看| 亚洲综合色视频| 亚洲欧美日韩小说| 欧美国产一区二区在线观看| 欧美一区二区三区免费视频| 色成人在线视频| 亚洲a一区二区| 欧美成人女星排行榜| 欧美视频一区二区| 欧洲国产伦久久久久久久| 成人免费毛片片v| 国产在线一区二区| 亚洲视频一区二区在线观看| 久久蜜臀中文字幕| 欧美tickle裸体挠脚心vk| 日韩一区二区免费电影| 国产九色精品成人porny| 美女国产一区二区| 日本亚洲一区二区| 蜜臀99久久精品久久久久久软件| 亚洲18影院在线观看| 亚洲主播在线播放| 亚洲第一激情av| 亚洲国产精品久久久久婷婷884| 亚洲一区在线观看网站| 一个色妞综合视频在线观看| 亚洲综合激情网| 亚洲国产日韩一区二区| 亚洲成人免费看| 日本免费新一区视频| 麻豆精品一区二区av白丝在线| 午夜精品福利久久久| 日韩成人精品视频| 久久超碰97人人做人人爱| 久久疯狂做爰流白浆xx| 国内久久精品视频| 国产福利一区在线| 99精品热视频| 欧美色老头old∨ideo| 欧美精品1区2区3区| 日韩免费在线观看| 欧美亚洲一区二区三区四区| 欧美日韩精品一区二区三区 | 99精品国产视频| 欧美性一二三区| 日韩一级免费观看| 欧美经典一区二区三区| 亚洲欧美日韩综合aⅴ视频| 调教+趴+乳夹+国产+精品| 久88久久88久久久| www.亚洲色图| 欧美日韩高清一区二区| 久久中文字幕电影| 国产精品久久久久久久久快鸭| 欧美www视频| 国产精品国产三级国产| 亚洲123区在线观看| 国产v综合v亚洲欧| 欧美日韩亚洲综合一区二区三区| xnxx国产精品| 一区二区三区欧美视频| 久久国产精品99久久久久久老狼| 成人丝袜视频网| 91精品免费在线| 亚洲同性gay激情无套| 美女任你摸久久| 91国产成人在线| 国产亚洲成aⅴ人片在线观看| 日韩精品一区二区三区视频播放 | 精品国产露脸精彩对白| 国产精品三级电影| 国产精品久久午夜夜伦鲁鲁| 午夜精品一区在线观看| 国产福利一区二区| 欧美一区午夜视频在线观看 | 91在线视频网址| 欧美mv和日韩mv的网站| 亚洲一区二区免费视频| 成人网页在线观看| 久久综合久久鬼色| 日本不卡在线视频| 一本大道av伊人久久综合| 国产天堂亚洲国产碰碰| 日韩黄色免费网站| 日本乱人伦aⅴ精品| 中文av一区二区| 精品一区二区免费| 宅男噜噜噜66一区二区66| 亚洲女人的天堂| 成人午夜激情视频| 国产午夜精品理论片a级大结局| 免费人成精品欧美精品| 欧美综合亚洲图片综合区| 中文字幕欧美激情| 国产精品伊人色| 欧美sm极限捆绑bd| 精品一区二区在线看| 制服丝袜国产精品| 日本网站在线观看一区二区三区| 欧美撒尿777hd撒尿| 亚洲免费电影在线| 91亚洲精华国产精华精华液| 国产精品久久毛片| 成人黄色国产精品网站大全在线免费观看| 色婷婷综合视频在线观看| 中文字幕久久午夜不卡| 国产91在线看| 亚洲国产成人自拍| 91免费观看在线| 亚洲综合在线第一页| 欧美日韩精品一区二区三区四区 |