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

📄 main.cpp

📁 MTK 最新的flashtool工具的源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//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_NODE.m_dl_handle);
        if( NULL != g_DL_HANDLE_NODE.m_param.m_sec_ro.m_data){
            free(g_DL_HANDLE_NODE.m_param.m_sec_ro.m_data);
        }
        if( NULL != g_DL_HANDLE_NODE.m_param.m_cust_para.m_data){
            free(g_DL_HANDLE_NODE.m_param.m_cust_para.m_data);
        }
        if( NULL != g_DL_HANDLE_NODE.m_param.m_otp.m_data ){
            free(g_DL_HANDLE_NODE.m_param.m_otp.m_data);
        }

    DA_Destroy(&g_DA_HANDLE);
    RB_Destroy(&g_RB_HANDLE);
	AUTH_Destroy(&g_AUTH_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;
	TListView *plv = dynamic_cast<TListView *>(Sender);

	if ( plv->Selected == NULL )
		return;
	
	if( NULL == g_pCurNode ) {
		return;
	}

	DL_HANDLE_T &dl_handle=g_pCurNode->m_dl_handle;

	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 = "";
		}
	}

	// open file 
	if(OpenSingleRomFile->Execute()) {
		goto load_file;
	}

	return;

load_file:
	
	ListViewItemType_E	type=*((ListViewItemType_E *)plv->Selected->Data);
	if( LV_BOOTLOADER == type ) {
		// load boot loader 
		if( ret=DL_BL_Load(dl_handle, OpenSingleRomFile->FileName.c_str()) ) {
			if( S_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;
			}
		}
	}
	else {
		// load ROM list 
		if( ret=DL_Rom_Load(dl_handle, (LV_NFB_DL_ROM==type)?(plv->ItemIndex-1):plv->ItemIndex, OpenSingleRomFile->FileName.c_str()) ) {
			if( S_FTHND_HANDLE_BUSY_NOW == ret ) {
				ShowMessage("Program is busy! Can not update setting right now.");
				return;
			}
			else if( S_DL_LOAD_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 );
        }

		// auto load download bin files 
		{
			unsigned short	count=0;
			DL_GetCount(dl_handle, &count);
			if( g_bAutoLoadResByScat && !strcmp("ROM", plv->Selected->Caption.c_str()) && 1<count ) {
				DL_AutoLoadByScatRegionName(dl_handle, OpenSingleRomFile->FileName.c_str(), NORMAL_ROM|RESOURCE_BIN|JUMPTABLE_BIN);
			}
		}
	}

redraw:
	RedrawReadbackList();
	RedrawDownloadList(g_pCurNode, false);
}
//---------------------------------------------------------------------------


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 ( asBin.IsEmpty() )
       if (! FileOpenDownloadAgentExecute() )
       {
          ShowMessage(" You must open download agent file before downloading. ");
          return;
       }

     if ( lv_ReadBack->Items->Count ==0 )
     {
          ShowMessage(" Please add read back file.");
          return;
     }

   // clean Flash device info
	HWStatusBarClear();

	if(UpdateDA()) {
		return;
	}

   if( MT6205 != g_BBCHIP_TYPE )
	   start_DL(true);
   else
	   Form_RB_GO->ShowModal();
}
//------------------------------------------------------------------------------

 void TMainForm::start_RB( bool b_start_RB )
{
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::tb_AddReadBackFileClick(TObject *Sender)
{
	int ret;
	AnsiString s;
	TListItem *pListItem;

    unsigned long default_readback_addr = 0x00000000;
    unsigned long default_readback_len = 0x00000800;

	s = "ROM_" + IntToStr(lv_ReadBack->Items->Count);
	if(ret=RB_Append(g_RB_HANDLE, s.c_str(), default_readback_addr, default_readback_len)) {
		if( S_FTHND_HANDLE_BUSY_NOW == ret ) {
			ShowMessage("Program is busy! Can not update setting right now.");
		}
		else {
			ShowMessage(" Add Readback file error ");
		}
		return;
	}

	RedrawReadbackList();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::tb_DeleteReadBackFileClick(TObject *Sender)
{
	int ret;

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

	if(ret=RB_Delete(g_RB_HANDLE, lv_ReadBack->ItemIndex)) {
		if( S_FTHND_HANDLE_BUSY_NOW == ret ) {
			ShowMessage("Program is busy! Can not delete readback entry right now.");
		}
		else {
			ShowMessage("Delete readback entry fail!");
		}
		return;
	}
	else {
		lv_ReadBack->Selected->Delete();
	}
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::lv_ReadBackKeyPress(TObject *Sender, char &Key)
{


   //

    if ( Key =='\b')
    {

       tb_DeleteReadBackFileClick(Sender);


    }

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

void __fastcall TMainForm::lv_ReadBackKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{


    if ( Key == 46 || Key == 109 )
    {

       tb_DeleteReadBackFileClick(Sender);


    }
    else if ( Key == 107 || Key == 13 )
    {

         tb_AddReadBackFileClick( Sender);


    }



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

void __fastcall TMainForm::lv_ReadBack_oldDblClick(TObject *Sender)
{
	int ret;
	TListView *plv = dynamic_cast<TListView *>(Sender);

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

	sd_ReadBack->FileName =  plv->Selected->SubItems->Strings[2];

	RB_INFO	rb_info;
	if(ret=RB_GetInfo(g_RB_HANDLE, plv->ItemIndex, &rb_info)) {
		if( S_FTHND_HANDLE_BUSY_NOW == ret ) {
			ShowMessage("Program is busy! Can not update setting right now.");
		}
		else {
			ShowMessage("Update readback setting fail!");
		}
		return;
	}

	if ( sd_ReadBack->Execute() )
	{
		if(ret=RB_SetFilepath(g_RB_HANDLE, plv->ItemIndex, sd_ReadBack->FileName.c_str())) {
			if( S_FTHND_HANDLE_BUSY_NOW == ret ) {
				ShowMessage("Program is busy! Can not update setting right now.");
			}
			else {
				ShowMessage("Update readback setting fail!");
			}
			return;
		}
		else {
			plv->Selected->SubItems->Strings[2] = sd_ReadBack->FileName ;
		}
	}
	else {
		return;
	}

	Form_RB_Option->rb_ReadbackHex->Checked = true;
	Form_RB_Option->ed_RB_StartAddr->Text = "0x" + IntToHex((int)rb_info.readback_addr, 8);
	Form_RB_Option->ed_RB_Length->Text = "0x" + IntToHex((int)rb_info.readback_len, 8);
	switch(rb_info.m_read_flag) {
	case NUTL_READ_PAGE_ONLY:
    	Form_RB_Option->m_Radio_ReadPageOnly->Checked = true;
		break;
	case NUTL_READ_SPARE_ONLY:
    	Form_RB_Option->m_Radio_ReadSpareOnly->Checked = true;
		break;
	case NUTL_READ_PAGE_WITH_ECC:
    	Form_RB_Option->m_Radio_ReadPageWithECC->Checked = true;
		break;
	case NUTL_READ_PAGE_SPARE:
	default:
    	Form_RB_Option->m_Radio_ReadPageSpare->Checked = true;
		break;
	}

	Form_RB_Option->Visible= true;
	
	Form_RB_Option->bb_ReadBack_OK->Visible = true;
}
//---------------------------------------------------------------------------

void TMainForm::ReadBack_Finish()
{
}
void __fastcall TMainForm::TestDownloadNot258byteClick(TObject *Sender)
{
//

#ifdef _DEBUG

   if ( bDownloadNot258Byte )
   {
      bDownloadNot258Byte = false;
      ShowMessage(" Download Normal Mode");
   }
   else
   {
      bDownloadNot258Byte = true;
      ShowMessage(" Download Abnormal Mode \n NOT 258 bytes per page.");
   }

#endif
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::br_230400Execute(TObject *Sender)
{
//
   BAUD_RATE  = UART_BAUD_230400;
   uncheckAllBaudRate();
   mi_230400->Checked = true;
   updateStatusBar();
   PL_2Click(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::br_460800Execute(TObject *Sender)
{
   BAUD_RATE  = UART_BAUD_460800;
   uncheckAllBaudRate();
   mi_460800->Checked = true;
   updateStatusBar();
   PL_3Click(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::Timer_DownloadTimer(TObject *Sender)
{
	u

⌨️ 快捷键说明

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