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

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

?? main.cpp

?? MTK平臺的下載程序源代碼,極具參考價值,可修改支持其它芯片的FLASH
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
OptionMethod_E	g_OperationMethod;
NUTL_EraseFlag_E	g_EraseFlag;
bool	g_bNFI_SelectCS1 = false;
unsigned short g_PacketLength=256;
unsigned int g_MaxBromStartCmdRetryCount=DEFAULT_BROM_START_CMD_RETRY_COUNT;
DL_HANDLE_T	 g_DL_HANDLE = NULL;
DL_HANDLE_LIST_T g_DL_HANDLE_LIST = NULL;
std::vector<DL_HANDLE_T> g_DL_HANDLE_LIST_nodes;
DA_HANDLE_T	 g_DA_HANDLE = NULL;
RB_HANDLE_T	 g_RB_HANDLE = NULL;
BL_HANDLE_T	 g_BL_HANDLE = NULL;
unsigned int g_CostTimeSec;
unsigned int g_ProgressTimeSec;
unsigned int g_DisplayFinishedBytes;
int g_stopflag;
EMI_Config_S		g_EMI_Config[8];
DRAM_NFI_Setting	g_EMI_NFI_Setting={ 0, false, 0, 0, 0, 0, 0, 0 };	// apply BootLoader's DRAM setting by default

AnsiString	g_asNormalModeDAPath;
AnsiString	g_asTestModeDAPath;

//int iDownloadDataNACK_Count =0;

TargetDownloadErrorCount TDEC;

 int iGlobal_Progress;
 AnsiString asGlobal_StatusBar0Text;

TTreeNode * g_rootLoad;


static bool OpenReadDA_File( AnsiString asFileName)
{
	int ret;
	if(ret=DA_LoadByFilepathEx(g_DA_HANDLE, asFileName.c_str(), g_bDebugDA?_FALSE:_TRUE)) {
		if( FTHND_HANDLE_BUSY_NOW == ret ) {
			ShowMessage("Program is busy! Can not reload DA right now.");
		}
		else if( FTHND_DA_INVALID == ret ) {
			ShowMessage(" \"" + asFileName + "\" is not a valid DA format!");
		}
		else {
			ShowMessage(" Load DA \"" + asFileName + "\" fail!");
		}
		return false;
	}

	MainForm->ed_DA_File->Text = asFileName;

	return true;
}


//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
static unsigned char change_DA_BaudRate_to_BROM_BaudRate( unsigned char uc_baud_rate )
{
   switch ( uc_baud_rate )
   {
      case UART_BAUD_460800 :
      case UART_BAUD_230400 :
           return UART_BAUD_4800; // High speed
      case UART_BAUD_115200 :
      case UART_BAUD_57600 :
      case UART_BAUD_38400 :
      case UART_BAUD_19200 :
      default:
           return UART_BAUD_19200;  // Normal speed
   } // switch;
}


//----------------------------------------------------------------------
void __fastcall TMainForm::Download1Click(TObject *Sender)
{
        int i;
        int RealReadLen =0;

	g_flashtool_function = FLASHTOOL_DOWNLOAD;

        if ( MT6208!=g_BBCHIP_TYPE && asBin.IsEmpty() )
                if (! FileOpenDownloadAgentExecute() )
                {
                        ShowMessage(" You must open download agent file before downloading. ");
                        return;
                }


        if ( !g_bDebugDA && asMap.IsEmpty() )
                if ( ! FileOpenLinkMapExecute() )
                {
                        ShowMessage(" You must open link map file before downloading. ");
                        return;
                }

        if ( !g_bDebugDA && mi_MultiLoad->Checked){

                int handleNumber = 0;

                DL_GetHandleNumber(g_DL_HANDLE_LIST,&handleNumber);

                if( 0 == handleNumber){
                        ShowMessage(" You must add at least 1 load in Multi-Load mode. ");
                        return ;
                }
        }

        // clean Flash device info
        HWStatusBarClear();

	if(UpdateDA()) {
		return;
	}

	// check BootLoader
	if( NFB_OPERATION == g_OperationMethod ) {
		BL_INFO	bl_info;
		if( FTHND_FILE_IS_UPDATED == DL_BL_IsReady(g_DL_HANDLE, &bl_info, _TRUE) ) {
			DL_BL_LoadByFilepath(g_DL_HANDLE, bl_info.m_filepath);
		}
	}

	int ret;
	AnsiString s1, s2;
	ROM_INFO	rom_info;
	while(ret=DL_IsReady(g_DL_HANDLE, &rom_info, _TRUE)) {
		if( FTHND_FILE_IS_UPDATED == ret ) {
			if(DL_Rom_LoadByFilepath(g_DL_HANDLE, rom_info.index, rom_info.filepath)) {
                                s1 = rom_info.name;
				s2 = rom_info.filepath;
				if( FTHND_SCAT_REGION_IS_OVERLAP == ret ) {
#if 0
/*					// reload all multibin files
					ret = DL_AutoLoadByScatRegionName(g_DL_HANDLE, rom_info.filepath, NORMAL_ROM|RESOURCE_BIN|JUMPTABLE_BIN);
					if( FTHND_OK == ret ) {
						break;
					}
			        else {
						ShowMessage( "\"" + s2 + "\" is too large and causes region overlap!\nTry to reload all multi-bin files but it's failed!");
						return;
			    	}
				}*/
#else
					ShowMessage( "\"" + s2 + "\" is too large and causes region overlap!");
					return;
				}
#endif
				else {
					ShowMessage(" Load " + s1 + " from file \"" + s2 + "\" fail!");
					return;
				}
			}
		}
		else {
			break;
		}
	}

	if(g_bDebugDA) {
                DebugDAWindow->Text = "";
	}
	else {
	    // auto select DA and baseband chip type
	    AutoSelectDAandBBChip(g_DL_HANDLE);
	}

	if(!g_bDebugDA) {
		
		// construct current download set 
		DownloadSet		dl_set;
		{
			// get scatter file path 
			dl_set.m_Scatter = asMap;
			// get bin file info 
			unsigned short	count=0;
			if( (FTHND_OK==DL_GetCount(g_DL_HANDLE, &count)) && (0<count) ) {
				ROM_INFO	rom[MAX_LOAD_SECTIONS];
				if( FTHND_OK == DL_Rom_GetInfoAll(g_DL_HANDLE, rom, MAX_LOAD_SECTIONS) ) {
					for(i=0; i<count; i++) {
						DownloadBinFile		dl_bin;
						dl_bin.m_Filepath = rom[i].filepath;
						dl_bin.m_Enable = rom[i].enable?true:false;
						dl_set.m_BinFiles.push_back(dl_bin);
					}
				}
			}
		    // check if NFB enabled
		    _BOOL	bIsNFB=_FALSE;
		    if( FTHND_OK == DL_IsNFB(g_DL_HANDLE, &bIsNFB) ) {
		        if(bIsNFB) {
					// get BootLoader info
					BL_INFO			bl_info;
					if( FTHND_OK == DL_BL_GetInfo(g_DL_HANDLE, &bl_info) ) {
						dl_set.m_BootLoader = bl_info.m_filepath;
						dl_set.m_BootLoader_Enable = bl_info.m_enable?true:false;
					}
		        }
		    }
		}
		
		// update download history 
        DownloadHistoryList::iterator	iter;
		for(iter=g_DownloadHistory.begin(); iter!=g_DownloadHistory.end(); iter++) {
			if( dl_set == (*iter) ) {
				if( iter != g_DownloadHistory.begin() ) {
					// if download set already exist, move it to the top of history
					g_DownloadHistory.erase(iter);
					g_DownloadHistory.push_front(dl_set);
				}
				goto download;
			}
		}
		// delete the oldest history 
		if( MAX_DOWNLOAD_HISTORY == g_DownloadHistory.size() ) {
			g_DownloadHistory.pop_back();
		}

		// insert new download set to the top of history 
		g_DownloadHistory.push_front(dl_set);
	}

download:
   if( MT6205 != g_BBCHIP_TYPE )
	   start_DL(true);
   else
	   Form_DL_GO->ShowModal();
}
//------------------------------------------------------------------------------
void TMainForm::start_DL( bool b_start_DL )
{
	g_CostTimeSec = 0;  // reset download time
	g_ProgressTimeSec = 0;

	sb_Main->Panels->Items[4]->Text = " 0:00 sec ";

	p1 = new tboot_1( true );
	p1->FreeOnTerminate  = true;
	p1->Resume();
}
//---------------------------------------------------------------------------


bool TMainForm::FileOpenDownloadAgentExecute()
{
//    index = 0; // ??
    static AnsiString asDA_Path;
    int iLastDel=0;

    if (asDA_Path.Length()>0)
    {
       OpenDownloadAgentDialog->InitialDir = asDA_Path;
    }
    else if( 0 < ed_DA_File->Text.Length() ) {
        iLastDel = ed_DA_File->Text.LastDelimiter("\\:");
        if ( iLastDel > 0)
        {
	        OpenDownloadAgentDialog->InitialDir = ed_DA_File->Text.SubString(1, iLastDel-1 );
        }
	}

    if ( OpenDownloadAgentDialog->Execute() )    // *.bin file
    {
         if ( OpenReadDA_File( OpenDownloadAgentDialog->FileName ))
         {
            asBin = OpenDownloadAgentDialog->FileName;
			if(g_bDebugDA) {
				// save TestMode DA path 
				g_asTestModeDAPath = asBin;
			}
			else {
				// save NormalMode DA path 
				g_asNormalModeDAPath = asBin;
			}
            iLastDel = asBin.LastDelimiter("\\:");

            if ( iLastDel > 0)
            {
               asDA_Path = asBin.SubString(1, iLastDel-1 );

            }

            return true;
         }
         else
           return false;
    }
    else
        return false;
}


void __fastcall TMainForm::FileOpenDownloadAgentExecute(TObject *Sender)
{
    FileOpenDownloadAgentExecute();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::OptionsSetupExecute(TObject *Sender)
{
//     OptiForm->Visible = true;
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::test_tray_iconClick(TObject *Sender)
{
//   TrayIcon1->Animate = true;
}
//---------------------------------------------------------------------------

bool TMainForm::Parse(DL_HANDLE_T dl_handle,AnsiString asMapFileName, bool bAutoLoad)
{
	int ret;
	unsigned short count;

	// load scatter
	if(ret=DL_LoadScatter(dl_handle, asMapFileName.c_str())) {
		if( FTHND_HANDLE_BUSY_NOW == ret ) {
			ShowMessage("Program is busy! Can not reload scat file right now.");
		}
		else if( FTHND_SCAT_OFFSET_IS_NOT_WORD_ALIGN == ret ) {
			ShowMessage("Failed to load scatter file \"" + asMapFileName + "\"!\n\nThe offset value of one load region is not WORD alignment!");
		}
		else if( FTHND_SCAT_ADDR_IS_NOT_WORD_ALIGN == ret ) {
			ShowMessage("Failed to load scatter file \"" + asMapFileName + "\"!\n\nThe region begin address of one load region is not WORD alignment!");
		}
		else if( FTHND_SCAT_ADDR_IS_NOT_ASCENDING_ORDER == ret ) {
			ShowMessage("Failed to load scatter file \"" + asMapFileName + "\"!\n\nThe region begin address of one load region is not ascending sorting sequence!");
		}
		else {
			ShowMessage("Incorrect scatter file format!");
		}
		return false;
	}

        if( dl_handle == g_DL_HANDLE){
	        asMap = asMapFileName;
        }

	if(bAutoLoad) {

		// auto load download bin files 
		DL_AutoLoadByScatRegionName(dl_handle, asMapFileName.c_str(), NORMAL_ROM|RESOURCE_BIN|JUMPTABLE_BIN);

		ROM_INFO	rom_info;
		if( FTHND_OK == (ret=DL_IsReady(dl_handle, &rom_info, _TRUE)) ) {
			// check if NFB enabled 
			_BOOL	bIsNFB=_FALSE;
			if( FTHND_OK == DL_IsNFB(dl_handle, &bIsNFB) ) {
				// update operation method 
				if( bIsNFB && (NFB_OPERATION!=g_OperationMethod) ) {
					m_Menu_OPM_NFBClick(NULL);
				}
				else if( !bIsNFB && (NFB_OPERATION==g_OperationMethod) ) {
					m_Menu_OPM_NORClick(NULL);
				}
			}

			// auto select DA and baseband chip type
			AutoSelectDAandBBChip(dl_handle);
		}
		else {
			// reset to NOR operation
			m_Menu_OPM_NORClick(NULL);
		}
	}

	RedrawDownloadList(dl_handle);

	return true;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情中文字幕一区二区| 色综合婷婷久久| 欧美成人在线直播| 国产91精品入口| 亚洲综合色丁香婷婷六月图片| 欧美精品视频www在线观看| 一区二区三区成人在线视频| 精品sm捆绑视频| 一本到不卡精品视频在线观看 | ...xxx性欧美| 成人一区二区三区视频在线观看 | 成人免费看视频| 亚洲444eee在线观看| 欧美—级在线免费片| 欧美色网站导航| 91麻豆国产自产在线观看| 美女视频黄久久| 亚洲精品国产无套在线观| 2020国产精品自拍| 日韩三级电影网址| 欧美性色黄大片| 国产成人aaa| 美女网站色91| 性久久久久久久久久久久| 国产清纯白嫩初高生在线观看91| 欧美日本一区二区| 972aa.com艺术欧美| 精品在线免费观看| 久久国产人妖系列| 午夜免费久久看| 亚洲欧美日韩成人高清在线一区| 精品91自产拍在线观看一区| 91在线视频18| 丁香六月综合激情| 国产一区二区精品久久| 亚洲成人高清在线| 一区二区不卡在线播放 | 国产欧美日韩综合| 欧美精品在线一区二区| 91成人免费在线视频| 成人av电影在线| 99精品在线免费| 波波电影院一区二区三区| 国产麻豆精品在线观看| 日韩av午夜在线观看| 五月激情综合婷婷| 免播放器亚洲一区| 亚洲国产精品影院| 亚洲国产精品一区二区尤物区| 国产日韩欧美激情| 国产精品二区一区二区aⅴ污介绍| 精品国产sm最大网站免费看| 在线不卡免费欧美| 777午夜精品视频在线播放| 日本高清不卡视频| 91久久精品国产91性色tv| 色综合天天综合网国产成人综合天| 国产不卡高清在线观看视频| 五月婷婷久久综合| 午夜久久久久久| 亚洲国产中文字幕| 不卡视频一二三四| 色综合中文字幕| 在线观看免费一区| 制服丝袜日韩国产| 日韩欧美美女一区二区三区| 久久久久久久久久久99999| 国产午夜精品在线观看| 国产日韩欧美精品在线| 中文字幕在线视频一区| 亚洲欧美日韩中文播放 | 欧美人牲a欧美精品| 在线播放中文字幕一区| 91成人免费在线视频| 日本免费在线视频不卡一不卡二| 久久久综合激的五月天| 国产日韩欧美综合一区| ●精品国产综合乱码久久久久| 亚洲欧洲精品一区二区精品久久久 | 日韩欧美国产系列| 久久久久久久久久久黄色| 国产精品视频线看| 亚洲一区免费在线观看| 韩国av一区二区| 99国产精品国产精品毛片| 欧美亚洲国产bt| 国产亚洲综合性久久久影院| 亚洲福利一区二区| 国产寡妇亲子伦一区二区| 欧美在线三级电影| 国产拍揄自揄精品视频麻豆| 性久久久久久久久| 成av人片一区二区| 亚洲精品在线免费观看视频| 一区二区成人在线| 成人午夜短视频| 国产精品夫妻自拍| 国产呦萝稀缺另类资源| 欧美三级视频在线| 亚洲国产精品ⅴa在线观看| 丝袜a∨在线一区二区三区不卡| 国产91精品在线观看| 日韩欧美国产综合一区| 香蕉加勒比综合久久| 91啪亚洲精品| 国产精品美女久久久久aⅴ| 麻豆91在线观看| 欧美日韩中字一区| 亚洲精品国产一区二区三区四区在线| 国产成人99久久亚洲综合精品| 欧美一区二区三区免费在线看 | 亚洲欧洲精品一区二区三区 | 91国产成人在线| 久久久91精品国产一区二区三区| 午夜精品久久久久久久99水蜜桃| 91麻豆蜜桃一区二区三区| 久久精子c满五个校花| 麻豆视频一区二区| 欧美一级日韩一级| 日日欢夜夜爽一区| 欧美夫妻性生活| 亚洲国产日日夜夜| 欧美性videosxxxxx| 亚洲综合小说图片| 欧美色区777第一页| 一区二区在线电影| 欧美影视一区二区三区| 亚洲精品欧美专区| 在线亚洲欧美专区二区| 亚洲综合久久av| 91黄色免费看| 亚洲亚洲人成综合网络| 欧美日韩高清不卡| 日韩黄色免费电影| 欧美一级二级三级蜜桃| 美脚の诱脚舐め脚责91| 精品免费一区二区三区| 久久er99精品| 欧美激情中文字幕| 99视频超级精品| 亚洲欧美日韩国产一区二区三区| 97精品视频在线观看自产线路二| 亚洲欧洲精品成人久久奇米网| 色综合视频一区二区三区高清| 亚洲精品第1页| 欧美久久久久久蜜桃| 看片网站欧美日韩| 久久久五月婷婷| 97精品电影院| 亚洲国产美女搞黄色| 欧美伦理影视网| 国产综合色精品一区二区三区| 国产亚洲短视频| jlzzjlzz欧美大全| 亚洲亚洲人成综合网络| 欧美成va人片在线观看| 丁香激情综合五月| 亚洲一区二区视频在线| 6080yy午夜一二三区久久| 久久成人免费网| 国产精品理论在线观看| 在线观看91精品国产入口| 日韩av网站免费在线| 2022国产精品视频| 91日韩在线专区| 日韩激情av在线| 国产精品污www在线观看| 日本精品视频一区二区三区| 日韩电影在线一区二区三区| 久久女同性恋中文字幕| 91视频91自| 国产一区二区中文字幕| 一区二区三区欧美日韩| 日韩欧美国产一区在线观看| 成人av在线影院| 强制捆绑调教一区二区| 亚洲欧美一区二区视频| 日韩午夜中文字幕| 成人久久18免费网站麻豆 | 国产自产v一区二区三区c| 91在线视频18| 免费人成网站在线观看欧美高清| 日韩你懂的在线观看| 99久久99久久免费精品蜜臀| 日韩国产精品久久久久久亚洲| 中文字幕欧美区| 欧美日本在线视频| 日韩电影在线免费| 国产欧美日韩在线视频| 欧美mv和日韩mv国产网站| 欧美高清视频一二三区| 欧美亚洲综合色| 欧美亚一区二区| 欧美性猛交xxxx黑人交| 一本到高清视频免费精品| 国产suv精品一区二区三区| 韩国v欧美v日本v亚洲v| 精品在线免费视频| 精品一区二区三区视频| 久久99九九99精品|