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

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

?? burnflash.cpp

?? 在高通的手機平臺下,一個下載手機.bin文件到手機的flash中的工具,包含PC端的程序代碼和運行在基帶處理器中的代碼.
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// NAME: BurnFlash.cpp
//--------------------------------------------------------------------------------------------------
//
// GENERAL DESCRIPTION
//	
//--------------------------------------------------------------------------------------------------
//
// Revision History:
//                             Modification     Tracking
// Author                          Date          Number     Description of Changes
// -------------------------   ------------    ----------   ----------------------------------------
//
//
// Portability: 
//	This module can be portable to other C++ compilers or Win32 platforms. 
//
/*
 when        who                 what, where, why
 --------  --------     ---------------------------------------------------------------
 01/27/05  nony.wu      Change to communicate with dlram to support higher UART
 01/20/05  nony.wu      fixed bugs to support baudrate change
 ============================================================================ */

//--------------------------------------------------------------------------------------------------
//                                       INCLUDE FILES
//--------------------------------------------------------------------------------------------------
#include "stdafx.h"

using namespace std;

#include <io.h>
#include <fcntl.h>
#include <sys/stat.h>
#include "common.h"
#include "UART.h"
#include "BurnFlash.h"
#include "ProcDiag.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//--------------------------------------------------------------------------------------------------
//                                     CONSTANT
//--------------------------------------------------------------------------------------------------
#define RAM_BASE	0x1000000

//--------------------------------------------------------------------------------------------------
//                                     GLOBAL VARIABLES
//--------------------------------------------------------------------------------------------------

CBurnFlash theFlash;				//the unique instance for the application
//--------------------------------------------------------------------------------------------------
//                                     CLASS IMPLEMENTATION
//--------------------------------------------------------------------------------------------------
//
// Construction/Destruction
//--------------------------------------------------------------------------------------------------
CBurnFlash::CBurnFlash()
{
	m_pDiag = new CProcDiag();
	m_packet_snd = new pkt_buffer_type;
	if(m_packet_snd == NULL)
	{
		cout << "memory new error." << endl;
		exit(1);
	}
}

CBurnFlash::~CBurnFlash()
{
	delete m_packet_snd;
	m_packet_snd = NULL;

	delete m_pDiag;
	m_pDiag = NULL;
}
//--------------------------------------------------------------------------------------------------
//External Member Fucntions
//--------------------------------------------------------------------------------------------------
//
// FUNCTION: CBurnFlash::LoadData
//
// DESCRIPTION: 
//		This function writes the phone S/W to the specific Flash address.
//
// ARGUMENTS PASSED:
//		strFile			the name of the file in which contains data to be written;
//		nDstAddr		the original address from which to write the data;
//		nSpaceSize		the space size allowed to be written;
//		bCode			the flag indicating which Flash that the data to be written to. 
//						If true, the CodeFlash is to be written, else  
//						the DataFlash is to be written.
//
// RETURN VALUE:
//		SUCCESS
//		ERR_NO_VALID_RAM_FILE
//		ERR_NO_VALID_TARGET_FILE
//		ERR_SND_DLOAD_CMD
//		ERR_COMM_FAIL
//		ERR_SND_RAM_FILE
//		ERR_ERASE_FLASH_FAIL
// PRE-CONDITIONS:
//    (1) The phone must work on a normal state. 
//	  (2) The phone and the PC connect with a cable through COM1/COM2
//
// POST-CONDITIONS:
//    The new phone S/W are written to the Flash and the phone will restarted 
//	  automatically.
//    
// IMPORTANT NOTES:
//    None
//
//--------------------------------------------------------------------------------------------------
int 
CBurnFlash::LoadData(char* strFile, DWORD dwDstAddr,DWORD dwSpaceSize, BOOL bCode, BOOL bInitial)
{
	BYTE	buf[MAX_PACKET_LEN];
	DWORD	dwMaxReadSize = 5*1024;
	DWORD	dwFileLen;
	int		hFile;

	hFile = _open(strFile, _O_BINARY | _O_RDONLY,_S_IREAD);
	dwFileLen = _filelength(hFile);

	if( hFile == -1 || dwFileLen == 0)
		return ERR_NO_VALID_TARGET_FILE;

	if(bInitial)
	{
		if(!RAMFileExist())			
		return ERR_NO_VALID_RAM_FILE;
		
		BOOL diag_download;

        /* Send Hello to see if it is in diag download mode */
		if(m_pDiag->SayHello()==SUCCESS)
		{
			diag_download = TRUE;
    	}
		else{
			diag_download = FALSE;
		}

        printf("diag_download =%d ", diag_download);


		if(diag_download){
		cout << TAB_SUB_OPR << "Change the phone state to offline." << endl;
		if(m_pDiag->SendDloadCmd()!= SUCCESS)	
			return ERR_SND_DLOAD_CMD;
		}
		//////cout << TAB_SUB_OPR << "Change the phone state to offline." << endl;
		///////if(m_pDiag->SendDloadCmd()!= SUCCESS)	
		///////	return ERR_SND_DLOAD_CMD;

		

/*		cout << TAB_SUB_OPR << "Change the UART BaudRate to 115200." << endl;	
		if(!theComm.SetBaudRateTo115200())*/
		
		//wait the phone ready to download
		Sleep(1000);

		cout << TAB_SUB_OPR << "Load the ram downloader." << endl;
		if(LoadRAMFile("dlram.bin") != SUCCESS)					
			return ERR_SND_RAM_FILE;
	}

	   baud_rate_type bt;
	   extern baudrate;
       switch(baudrate)
       	{
	   	    case 0:
				bt=UART_576K_BPS;
        		cout << TAB_SUB_OPR << "Change the UART BaudRate to 57600." << endl;	
				break;
	   	    case 1:
				bt=UART_1152K_BPS;
        		cout << TAB_SUB_OPR << "Change the UART BaudRate to 115200." << endl;	
				break;
			case 2:
				bt=UART_2304K_BPS;
        		cout << TAB_SUB_OPR << "Change the UART BaudRate to 230400." << endl;	
				break;
			case 4:
				bt=UART_4608K_BPS;
        		cout << TAB_SUB_OPR << "Change the UART BaudRate to 460800." << endl;	
				break;
			default:
				bt=UART_1152K_BPS;
        		cout << TAB_SUB_OPR << "Change the UART BaudRate to 115200." << endl;	

        }

    if(bt!=UART_1152K_BPS && bt!=UART_576K_BPS)
     {
        FormChangeBaudRateCMD(bt);
    	if( !SendAndWaitRsp())
	    {
		TRACE0("\r\nsend Change Baud Rate Cmd fail.\r\n");
		_close(hFile);
		return ERR_COMM_FAIL;
     	}

		if(!theComm.SetBaudRate(bt))
		        	return ERR_COMM_FAIL;
     }
	
	
	cout << TAB_SUB_OPR << "Erase the Flash......"<< endl;
	FormEraseFlashCMD(dwDstAddr, dwSpaceSize, bCode);
	if( !SendAndWaitRsp())
		return ERR_ERASE_FLASH_FAIL;

	cout << TAB_SUB_OPR << "Erase successfully"<< endl;
	cout << TAB_SUB_OPR << "Begin to download"<< endl;

	cout << TAB_SUB_OPR;
	DWORD dwRead = 0;
	do{
		 cout << "*";
		dwRead = _read(hFile, buf, dwMaxReadSize);
		if(dwRead == 0)
			break;
		
		FormWriteFlashCMD(dwDstAddr, buf, dwRead, bCode);	
		if( !SendAndWaitRsp())
		{
			cout << endl;
			return ERR_WRITE_FLASH_FAIL;
		}
	
		dwDstAddr += dwRead;
		
	}while(dwRead != 0);

	cout << endl;
	cout << TAB_SUB_OPR << "Download Successfully"<< endl;

	return SUCCESS;
}
//--------------------------------------------------------------------------------------------------
//
// FUNCTION: CBurnFlash::EraseFlash
//
// DESCRIPTION: 
//    This function erases the spaces of the DataFlash or CodeFlash from the specified address.
//
// ARGUMENTS PASSED:
//		nDstAddr	the original address to be erased
//		nSpaceSize	the size to be erased from the specified original address
//		bCode		the flag indicating which Flash to be erased. If true, the CodeFlash is erased, 
//					else the DataFlash is erased.
//
// RETURN VALUE:
//	  SUCCESS
//    ERR_NO_VALID_RAM_FILE
//	  ERR_COMM_FAIL
//	  ERR_SND_RAM_FILE
//    ERR_ERASE_FLASH_FAIL
//
// PRE-CONDITIONS:
//    (1) The phone must work on a normal state. 
//	  (2) The phone and the PC connect with a cable through COM1/COM2
//
// POST-CONDITIONS:
//    The relevant area in the phone Flash memory is filled with 0xFF and the phone will restart automatically.
//
// IMPORTANT NOTES:
//    None
//
//--------------------------------------------------------------------------------------------------
int 
CBurnFlash::EraseFlash(DWORD dwDstAddr, DWORD dwSpaceSize, BOOL bCode, BOOL bInitial)
{
	if (bInitial)
	{
		if(!RAMFileExist())			
			return ERR_NO_VALID_RAM_FILE;

		cout << TAB_SUB_OPR << "send Dload Cmd to phone." << endl;
		if(m_pDiag->SendDloadCmd() != SUCCESS)
			return ERR_SND_DLOAD_CMD;
		
		cout << TAB_SUB_OPR << "change PC BaudRate to 115200." << endl;
		if(!theComm.SetBaudRateTo115200())
			return ERR_COMM_FAIL;
		
		//wait the phone ready to download
		Sleep(1000);
		
		cout << TAB_SUB_OPR << "prepare for download." << endl;
		if(LoadRAMFile("dlram.bin") != SUCCESS)					
			return ERR_SND_RAM_FILE;
	}

	cout << TAB_SUB_OPR << "start to erase......"<< endl;
	FormEraseFlashCMD(dwDstAddr, dwSpaceSize, bCode);
	if( !SendAndWaitRsp())
		return ERR_ERASE_FLASH_FAIL;
	
	return SUCCESS;
}

//--------------------------------------------------------------------------------------------------
//
// FUNCTION: CBurnFlash::ResetPhone
//
// DESCRIPTION: 
//    This function sends a Reset CMD to phone and restores the PC serial
//	  port BaudRate to 38400.
//
// ARGUMENTS PASSED:
//	None
//
// RETURN VALUE:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲免费视频| 欧美日韩一本到| 毛片基地黄久久久久久天堂| 亚洲福利视频一区| 亚洲综合色区另类av| 一区二区三区中文字幕精品精品| 中文字幕av不卡| 中文字幕亚洲区| 亚洲另类春色校园小说| 亚洲综合久久久| 视频一区二区中文字幕| 美女视频黄 久久| 国产在线精品不卡| 国产福利电影一区二区三区| 国产精品一区二区免费不卡| 成人一区在线看| 不卡大黄网站免费看| 色先锋aa成人| 制服丝袜亚洲播放| 久久人人97超碰com| 中文字幕欧美激情一区| 一个色综合av| 免费成人你懂的| kk眼镜猥琐国模调教系列一区二区| 不卡视频免费播放| 欧美亚洲国产一卡| 久久综合色天天久久综合图片| 亚洲国产成人午夜在线一区| 亚洲午夜在线电影| 久久99国产精品久久99果冻传媒| 国产成都精品91一区二区三| 91福利区一区二区三区| 欧美成人艳星乳罩| 亚洲欧洲一区二区三区| 日韩av午夜在线观看| 福利电影一区二区三区| 欧美日韩国产一级片| 中文字幕欧美三区| 日韩二区在线观看| 91免费国产视频网站| 日韩欧美国产麻豆| 国产精品美女久久久久av爽李琼| 亚洲成人福利片| 国产精品夜夜爽| 欧美日本一区二区在线观看| 国产精品伦理一区二区| 奇米亚洲午夜久久精品| jvid福利写真一区二区三区| 欧美v国产在线一区二区三区| 亚洲欧洲精品一区二区三区不卡| 日韩av在线播放中文字幕| 97久久人人超碰| 亚洲精品在线观| 亚洲成av人片一区二区三区| 成人高清视频免费观看| 欧美一区国产二区| 亚洲在线成人精品| 91在线丨porny丨国产| 久久人人97超碰com| 美女视频黄频大全不卡视频在线播放| 色综合天天性综合| 中文字幕 久热精品 视频在线 | 91一区二区三区在线观看| 日韩精品一区二区三区中文不卡| 亚洲一区二区三区不卡国产欧美| 国产91丝袜在线18| 精品国产一区二区国模嫣然| 日韩成人一级大片| 欧美色网一区二区| 亚洲最快最全在线视频| 91首页免费视频| 中文字幕一区二区三区在线观看| 国产精品资源网| 亚洲卡通动漫在线| 国产美女精品一区二区三区| 精品国偷自产国产一区| 麻豆91小视频| 精品国产百合女同互慰| 精品一区二区三区不卡| 精品对白一区国产伦| 韩国三级中文字幕hd久久精品| 日韩女优毛片在线| 久久99精品国产麻豆婷婷 | 蜜桃av噜噜一区二区三区小说| 欧美亚洲一区二区在线观看| 亚洲大片在线观看| 欧美日韩在线三级| 日本美女视频一区二区| 日韩美女主播在线视频一区二区三区| 日本不卡一区二区| 精品国产免费人成电影在线观看四季| 精品一区二区三区久久| 国产欧美日韩在线观看| 99久久国产综合精品女不卡| 一区二区在线电影| 欧美人伦禁忌dvd放荡欲情| 毛片一区二区三区| 国产精品美女久久久久久 | 五月天精品一区二区三区| 3d成人动漫网站| 韩国成人精品a∨在线观看| 国产精品剧情在线亚洲| 欧美日本乱大交xxxxx| 捆绑调教美女网站视频一区| 日本一区二区视频在线观看| 色综合久久综合网97色综合| 性感美女久久精品| 久久久三级国产网站| 一本大道综合伊人精品热热| 免费成人在线播放| 综合分类小说区另类春色亚洲小说欧美| 在线观看免费亚洲| 国产一区二区免费视频| 亚洲天堂久久久久久久| 日韩欧美激情一区| 一本大道久久a久久精二百| 精品系列免费在线观看| 亚洲精品成人a在线观看| 日韩精品一区二区三区四区视频 | 一区二区三区欧美久久| 久久综合九色综合97婷婷女人| 99国产精品99久久久久久| 美女视频网站久久| 亚洲免费在线观看| 国产人成亚洲第一网站在线播放 | 日韩影院免费视频| 欧美国产精品一区二区三区| 欧美精品18+| 日本精品视频一区二区三区| 国产露脸91国语对白| 婷婷国产v国产偷v亚洲高清| 亚洲人被黑人高潮完整版| 久久久久久久久久电影| 日韩一区二区三| 欧美性猛片xxxx免费看久爱| 成人av影视在线观看| 国产一区二区三区美女| 免费欧美在线视频| 亚洲成人av一区| 洋洋成人永久网站入口| 亚洲欧美日韩久久| 中文字幕av不卡| 国产日产欧美一区| 国产日韩三级在线| 国产日韩综合av| 久久久高清一区二区三区| 精品久久久久久久久久久久久久久 | 久久这里只有精品首页| 欧美男生操女生| 欧美中文字幕亚洲一区二区va在线| 国产不卡一区视频| 国产福利精品一区| 成人黄页毛片网站| 91在线丨porny丨国产| 99久久99久久免费精品蜜臀| www.综合网.com| 99久久综合狠狠综合久久| 成人免费高清在线| 91在线播放网址| 欧美亚洲尤物久久| 欧美日本韩国一区二区三区视频| 欧美三级视频在线观看| 91精品免费观看| 日韩一区二区三区av| 久久综合色鬼综合色| 国产欧美精品在线观看| 中文字幕亚洲区| 亚洲免费在线视频| 午夜久久久久久| 韩国在线一区二区| 成人黄色软件下载| 欧美亚洲国产一区二区三区va| 欧美日韩亚洲综合在线 | 亚洲地区一二三色| 日本在线播放一区二区三区| 六月丁香婷婷色狠狠久久| 精品一区二区三区视频在线观看 | 成人国产精品免费网站| 99视频超级精品| 欧美伦理视频网站| 久久久久国产免费免费 | 在线免费av一区| 91精品国产色综合久久不卡蜜臀 | 亚洲图片一区二区| 麻豆成人免费电影| av电影天堂一区二区在线| 欧美日韩成人综合在线一区二区| 日韩精品中午字幕| 国产精品毛片a∨一区二区三区| 亚洲国产一区二区视频| 韩国欧美国产1区| 色香色香欲天天天影视综合网| 日韩一区二区三区在线观看| 国产精品麻豆久久久| 奇米一区二区三区| 91网页版在线| 一区二区三区四区视频精品免费| 麻豆国产一区二区| 在线一区二区三区四区| 国产日韩欧美精品一区|