⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 MTK平台的下载程序源代码,极具参考价值,可修改支持其它芯片的FLASH
💻 CPP
📖 第 1 页 / 共 5 页
字号:

void __fastcall TMainForm::br_19200Execute(TObject *Sender)
{

  BAUD_RATE  = UART_BAUD_19200  ;
  uncheckAllBaudRate();
  mi_19200->Checked = true;
  updateStatusBar();
   PL_1Click(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::br_9600Execute(TObject *Sender)
{
     BAUD_RATE  = UART_BAUD_9600;
     uncheckAllBaudRate();
     mi_9600->Checked = true;
     updateStatusBar();
   PL_1Click(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::mi_DEBUGClick(TObject *Sender)
{
   if (DEBUG)
   {
      DEBUG = false;
      ShowMessage(" disable DEBUG ");
   }
   else
   {
      DEBUG = true;
      ShowMessage(" enable DEBUG ");
   }
}
//---------------------------------------------------------------------------

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

void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
	unsigned int	i;
	DownloadHistoryList::iterator	iter;

        TIniFile *ini;

        try {
                ini = new TIniFile(ChangeFileExt(Application->ExeName, ".INI" ));
        }catch(...) {
   	        goto end;
        }

	for(i=0; i<2; i++) {
		ini->WriteBool( "EMI", "bank"+IntToStr(i)+"_auto", g_EMI_Config[i].m_bAuto);
		ini->WriteString("EMI", "bank"+IntToStr(i)+"_cfg", "0x"+IntToHex((int)(g_EMI_Config[i].m_Config), 8));
	}

        ini->WriteInteger("FORM", "com", COM_PORT);

        DA_INFO	da_info;
        DA_GetInfo(g_DA_HANDLE, &da_info);

        switch ( BAUD_RATE )
        {
                case UART_BAUD_921600:
                        ini->WriteInteger("FORM", "baudrate", 921600);
                        break;
                case UART_BAUD_460800:   // 2002.3.28 High Speed.
                        ini->WriteInteger("FORM", "baudrate", 460800);
                        break;
                case UART_BAUD_230400:
                        ini->WriteInteger("FORM", "baudrate", 230400);
                        break;

                case UART_BAUD_115200:
                        ini->WriteInteger("FORM", "baudrate", 115200);
                        break;
                case UART_BAUD_57600:
                        ini->WriteInteger("FORM", "baudrate", 57600);
                        break;
                case UART_BAUD_38400:
                        ini->WriteInteger("FORM", "baudrate", 38400);
                        break;
                case UART_BAUD_19200:
                        ini->WriteInteger("FORM", "baudrate", 19200);
                        break;
                case UART_BAUD_9600:
                        ini->WriteInteger("FORM", "baudrate", 9600);
                        break;
                default :
                        ini->WriteInteger("FORM", "baudrate", 19200);
                        if (DEBUG)
                                ShowMessage(" main.cpp : undefined Baud Rate " + IntToStr( COM_PORT));
                        break;
        }

	// erase existing section first
	for(i=0; i<MAX_DOWNLOAD_HISTORY; i++) {
	        ini->EraseSection("DL_HISTORY_"+IntToStr(i));
        }

	// save download history
	for(i=0, iter=g_DownloadHistory.begin(); i<MAX_DOWNLOAD_HISTORY && iter!=g_DownloadHistory.end(); i++, iter++) {
                // write new section data
                ini->WriteString("DL_HISTORY_"+IntToStr(i), "scatter_file", iter->m_Scatter);
                ini->WriteString("DL_HISTORY_"+IntToStr(i), "bootloader", iter->m_BootLoader);
                ini->WriteBool("DL_HISTORY_"+IntToStr(i), "bootloader_enable", iter->m_BootLoader_Enable);
                ini->WriteInteger("DL_HISTORY_"+IntToStr(i), "file_count", iter->m_BinFiles.size());
                for(int j=0; j<iter->m_BinFiles.size(); j++) {
                        ini->WriteString("DL_HISTORY_"+IntToStr(i), "file"+IntToStr(j), iter->m_BinFiles[j].m_Filepath);
                        ini->WriteBool("DL_HISTORY_"+IntToStr(i), "file"+IntToStr(j)+"_enable", iter->m_BinFiles[j].m_Enable);
                }
        }

        ini->WriteString("FORM", "bin", g_asNormalModeDAPath);
        //   ini->WriteString("FORM", "testmode_da_path", g_asTestModeDAPath);
        ini->WriteString("FORM", "map", asMap);
        //   ini->WriteString("FORM", "rom_history", OpenSingleRomFile->HistoryList->CommaText);

        ini->WriteInteger("FORM", "bb_chip", g_BBCHIP_TYPE);
        ini->WriteInteger("FORM", "ext_clock", g_EXT_CLOCK);
        ini->WriteBool("FORM", "pull_down_gpio17", g_bPullDownGPIO17);

        ini->WriteInteger("FORM", "brom_start_cmd_retry_count", g_MaxBromStartCmdRetryCount);
        ini->WriteInteger("FORM", "OperationMethod", g_OperationMethod);
        ini->WriteInteger("FORM", "erase_validation", g_FormatValidation);

        BL_INFO		bl_info;
        if( FTHND_OK == DL_BL_GetInfo(g_DL_HANDLE, &bl_info) ) {
                ini->WriteString("NFB", "bloader", bl_info.m_filepath);
                ini->WriteBool("NFB", "bloader_enable", _TRUE==bl_info.m_enable?true:false);
        }

/////////////////////////// begin ROM file name
        unsigned short	count;
        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++) {
                                ini->WriteString("DOWNLOAD", "file"+IntToStr(i), rom[i].filepath);  // ROM file name
                                ini->WriteBool("DOWNLOAD", "file"+IntToStr(i)+"_enable", _TRUE==rom[i].enable?true:false); // ROM enable flag
                        }
                }
        }

        ini->WriteBool("DOWNLOAD", "compare_resource_project_id", g_CompareResProjectId);
        ini->WriteInteger("DOWNLOAD", "FormatAfterDownloadOption", g_FormatAfterDownloadOption);
//	ini->WriteBool("DOWNLOAD", "chk_tgt_resource_layout", g_bCheckTgtResourceLayout);
//	ini->WriteBool("DOWNLOAD", "check_bbchip_eco_ver", g_bCheckECOVer );
//	ini->WriteBool("DOWNLOAD", "auto_sel_bbchip", g_bAutoSelectBBChipType);
//  ini->WriteBool("DOWNLOAD", "auto_load_resource_by_scat", g_bAutoLoadResByScat);


/////////////////////////////// end ROM file name
/////////////////////////////// begin readback

        if( (FTHND_OK==RB_GetCount(g_RB_HANDLE, &count)) && (0<count) ) {
                RB_INFO	*rb=new RB_INFO[count];
                if( NULL != rb ) {
                        ini->WriteInteger("READBACK", "readback_count", count);
                        if( FTHND_OK == RB_GetInfoAll(g_RB_HANDLE, rb, count) ) {
                                for(i=0; i<count; i++) {
                                        ini->WriteString("READBACK", "file"+IntToStr(i), rb[i].filepath);	// read back file name
                                        ini->WriteInteger("READBACK", "file"+IntToStr(i)+"_enable", rb[i].enable);  // RB_FILE enable flag
                                        ini->WriteInteger("READBACK", "file"+IntToStr(i)+"_read_flag", rb[i].m_read_flag);
                                        ini->WriteString("READBACK", "startaddr"+IntToStr(i), "0x"+IntToHex((int)rb[i].readback_addr, 8));  // read back addr
                                        ini->WriteString("READBACK", "length"+IntToStr(i), "0x"+IntToHex((int)rb[i].readback_len, 8));  // read back length
                                }
                        }
                        delete [] rb;
                }
        }

        ini->WriteInteger( "FORM", "flashitemindex", iFlashItemIndex );

        ini->WriteString("FORM", "FormatStartAddr", "0x" + IntToHex((int)g_ulFormatStartAddr, 8));
        ini->WriteString("FORM", "FormatLength", "0x" + IntToHex((int)g_ulFormatLength, 8));
        ini->WriteString("FORM", "NandFormatStartAddr", "0x" + IntToHex((int)g_ulNandFormatStartAddr, 8));
        ini->WriteString("FORM", "NandFormatLength", "0x" + IntToHex((int)g_ulNandFormatLength, 8));
        ini->WriteInteger("FORM", "FormatOption", g_FormatOption);

        ini->WriteInteger( "TRANS_OPTION", "packet_length", g_PacketLength );
        ini->WriteInteger( "TRANS_OPTION", "baudrate_full_sync_count", g_Baudrate_FullSync_Count );
        ini->WriteBool( "TRANS_OPTION", "speedup_brom_baudrate", g_SpeedUpBootROMBaudrate);

//EMI Setting
        ini->WriteString("EMI", "nand_acccon", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_nand_acccon), 8));
        ini->WriteString("EMI", "emi_gen_a", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_gen_a), 8));
        ini->WriteString("EMI", "emi_gen_b", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_gen_b), 8));
        ini->WriteString("EMI", "emi_gen_c", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_gen_c), 8));
        ini->WriteString("EMI", "emi_dram_con_i_mode", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_i_mode), 8));
        ini->WriteString("EMI", "emi_dram_con_i_ext_mode", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_i_ext_mode), 8));
        ini->WriteString("EMI", "emi_dram_con_k", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_k), 8));
        ini->WriteString("EMI", "emi_dram_con_l", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_l), 8));

        delete ini;

end:
        DL_Destroy(&g_DL_HANDLE);
        DA_Destroy(&g_DA_HANDLE);
        RB_Destroy(&g_RB_HANDLE);
        DL_DestroyList(&g_DL_HANDLE_LIST);

	// destroy META_DLL
	META_Deinit();
}
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------

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





void __fastcall TMainForm::ListView1_oldClick(TObject *Sender)
{
        int iLastDel=0;
	int ret;
	int index;
	TListView *plv = dynamic_cast<TListView *>(Sender);
        DL_HANDLE_T     dl_handle;

        if ( plv->Selected == NULL )
                return;

        if(ROMBaseDir.Length()>0)
        {
                OpenSingleRomFile->InitialDir = ROMBaseDir;
                OpenSingleRomFile->FileName = "";
        }
        else if( 4 <= plv->Selected->SubItems->Count ) {
                iLastDel = plv->Selected->SubItems->Strings[3].LastDelimiter("\\:");
                if ( iLastDel > 0)
                {
	                OpenSingleRomFile->InitialDir = plv->Selected->SubItems->Strings[3].SubString(1, iLastDel-1 );
			OpenSingleRomFile->FileName = "";
                }
	}


        if( mi_MultiLoad->Checked){
                dl_handle = g_DL_HANDLE_LIST_nodes[TreeView1->Selected->Index];
        }
        else{
                dl_handle = g_DL_HANDLE;
        }

	if(OpenSingleRomFile->Execute()) {
//        OpenSingleRomFile->HistoryList->Append(OpenSingleRomFile->FileName.c_str());

		if( NFB_OPERATION == g_OperationMethod ) {
			if( 0 == plv->ItemIndex ) {
				if( ret=DL_BL_LoadByFilepath(dl_handle, OpenSingleRomFile->FileName.c_str()) ) {
					if( FTHND_HANDLE_BUSY_NOW == ret ) {
						ShowMessage("Program is busy! Can not update setting right now.");
						return;
					}
					else {
						ShowMessage(" Load boot-loader \"" + OpenSingleRomFile->FileName + "\" fail!");
						return;
					}
				}
				goto end;
			}
			else {
				index = plv->ItemIndex-1;
			}
		}
		else {
			index = plv->ItemIndex;
		}


		if( ret=DL_Rom_LoadByFilepath(dl_handle, index, OpenSingleRomFile->FileName.c_str()) ) {
			if( FTHND_HANDLE_BUSY_NOW == ret ) {
				ShowMessage("Program is busy! Can not update setting right now.");
				return;
			}
			else if( FTHND_SCAT_REGION_IS_OVERLAP == ret ) {
				ShowMessage( "\"" + OpenSingleRomFile->FileName + "\" is too large and causes region overlap!");
				return;
			}
			else {
				ShowMessage(" Load file \"" + OpenSingleRomFile->FileName + "\" fail!");
				return;
			}
		}

                iLastDel = OpenSingleRomFile->FileName.LastDelimiter("\\:");
                if ( iLastDel > 0)
                {
                        ROMBaseDir = OpenSingleRomFile->FileName.SubString(1, iLastDel-1 );
                }

                // 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(Sender);
	                }
        	        else if( !bIsNFB && (NFB_OPERATION==g_OperationMethod) ) {
	                    m_Menu_OPM_NORClick(Sender);
	                }
                }

                // auto load download bin files
                if(g_bAutoLoadResByScat) {
	                if(bIsNFB) {
                                DL_AutoLoadByScatRegionName(dl_handle, OpenSingleRomFile->FileName.c_str(), NORMAL_ROM|RESOURCE_BIN|JUMPTABLE_BIN);
        	        }
	                else {
                                DL_AutoLoadByScatRegionName(dl_handle, OpenSingleRomFile->FileName.c_str(), RESOURCE_BIN|JUMPTABLE_BIN);
                        }
                }

                // auto select DA and baseband chip type
                AutoSelectDAandBBChip(dl_handle);
	}

end:
        RedrawDownloadList(dl_handle);
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::mi_Phase2Click(TObject *Sender)
{

   if (PHASE2)
   {
      PHASE2 = false;
      ShowMessage(" go PHASE 1 +  PHASE 2 ");
   }
   else
   {
      PHASE2 = true;
      ShowMessage(" go PHASE 2 ");
   }

}
//---------------------------------------------------------------------------


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


void __fastcall TMainForm::MB0SetupExecute(TObject *Sender)
{
   ext_mem1Form->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ReadbackExecute(TObject *Sender)
{
//////////////////
     g_flashtool_function = FLASHTOOL_READBACK;

     if ( MT6208!=g_BB

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -