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

📄 main.cpp

📁 MTK手机平台下载工具FLASHTOOL界面源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    default:
    	BBCHIP_MT6218B->Checked = true;
        break;
	}

    // MCU FREQUENCY
   	MCU_52MHz->Checked = false;
   	MCU_26MHz->Checked = false;
   	MCU_13MHz->Checked = false;
    switch(g_EXT_CLOCK) {
    case EXT_52M:
    	MCU_52MHz->Checked = true;
        break;
    case EXT_26M:
    	MCU_26MHz->Checked = true;
        break;
    case EXT_13M:
    default:
    	MCU_13MHz->Checked = true;
        break;
	}

/*    ShowMessage("g_AutoMemSetup="+IntToStr(g_AutoMemSetup)+
    			", g_BBCHIP_TYPE="+IntToStr(g_BBCHIP_TYPE)+
    			", g_EXT_CLOCK="+IntToStr(g_EXT_CLOCK)
                );*/

    uncheckAllBaudRate();

     //
     switch ( BAUD_RATE )
     {
        case UART_BAUD_921600:
             mi_921600->Checked = true;
             break;
        case UART_BAUD_460800:
             mi_460800->Checked = true;
             break;
        case UART_BAUD_230400:
             mi_230400->Checked = true;
             break;


        case UART_BAUD_115200:
             mi_115200->Checked = true;
             break;
        case UART_BAUD_57600:
             mi_57600->Checked = true;
             break;
        case UART_BAUD_38400:
             mi_38400->Checked = true;
             break;
        case UART_BAUD_19200:
             mi_19200->Checked = true;
             break;
        case UART_BAUD_9600:
             mi_9600->Checked = true;
             break;
        default :
             if (DEBUG)
               ShowMessage(" main.cpp : undefined Baud Rate " + IntToStr( COM_PORT));
             break;
     } // switch

	switch(g_FormatAfterDownloadOption) {
	case RESET_TO_FACTORY:
		mi_FormatFDM->Checked = true;
		mi_FormatFDM->Caption = "Format FAT (RESET FACTORY DEFAULT) ...";
		break;
	case AUTO_FORMAT:
		mi_FormatFDM->Checked = true;
		mi_FormatFDM->Caption = "Format FAT (AUTO) ...";
		break;
	case MANUAL_FORMAT:
		mi_FormatFDM->Checked = true;
		mi_FormatFDM->Caption = "Format FAT (MANUAL) ...";
		break;
	case DISABLE_FORMAT:
	default:
		mi_FormatFDM->Checked = false;
		mi_FormatFDM->Caption = "Format FAT (DISABLED) ...";
		break;
	}

	if(g_bCheckECOVer) {
		m_CheckECOVersion->Checked = true;
	}
    else {
		m_CheckECOVersion->Checked = false;
	}

	if(g_bAutoSelectBBChipType) {
	    m_AutoSelectBBChipType->Checked = true;
   	}
    else {
	    m_AutoSelectBBChipType->Checked = false;
    }

    if(g_bCheckTgtResourceLayout) {
	    m_CheckTgtResourceLayout->Checked = true;
    }
    else {
	    m_CheckTgtResourceLayout->Checked = false;
    }

    if(g_bAutoLoadResByScat) {
	    m_AutoLoadResByScat->Checked = true;
    }
    else {
	    m_AutoLoadResByScat->Checked = false;
    }

    if(g_bPullDownGPIO17) {
    	m_PullDownGPIO17->Checked = true;
    }
    else {
    	m_PullDownGPIO17->Checked = false;
    }

   	if(g_AutoDetectBBCHIP) {
        m_AutoDetectBBChip->Checked = true;
	}
    else {
        m_AutoDetectBBChip->Checked = false;
	}

   	if(g_SpeedUpBootROMBaudrate) {
        m_SpeedUpBootROMBaudrate->Checked = true;
	}
    else {
        m_SpeedUpBootROMBaudrate->Checked = false;
	}

   	if(g_CompareResProjectId) {
        m_CompareProjectId->Checked = true;
	}
    else {
        m_CompareProjectId->Checked = false;
	}

   	if(g_bNFI_SelectCS1) {
        m_EnableNFICS1->Checked = true;
	}
    else {
        m_EnableNFICS1->Checked = false;
	}

	m_Menu_OPM_NOR->Checked = false;
	m_Menu_OPM_NAND->Checked = false;
	m_Menu_OPM_NFB->Checked = false;
	switch(g_OperationMethod) {
	case NOR_OPERATION:
		m_Menu_OPM_NOR->Checked = true;
		break;
	case NAND_OPERATION:
		m_Menu_OPM_NAND->Checked = true;
		break;
	case NFB_OPERATION:
		m_Menu_OPM_NFB->Checked = true;
		break;
	default:
		break;
	}
}

void TMainForm::uncheckAllBaudRate()
{
   mi_921600->Checked = false;    // High Speed
   mi_460800->Checked = false;    // High Speed
   mi_230400->Checked = false;

   mi_115200->Checked = false;
   mi_57600->Checked = false;
   mi_38400->Checked = false;
   mi_19200->Checked = false;
   mi_9600->Checked = false;
}

void TMainForm::uncheckAllComPort()
{
}

void __fastcall TMainForm::br_115200Execute(TObject *Sender)
{
   BAUD_RATE  = UART_BAUD_115200;
   uncheckAllBaudRate();
   mi_115200->Checked = true;

   updateStatusBar();
   PL_2Click(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::br_57600Execute(TObject *Sender)
{
  BAUD_RATE  = UART_BAUD_57600  ;
  uncheckAllBaudRate();
  mi_57600->Checked = true;

  updateStatusBar();
   PL_1Click(Sender);
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::br_38400Execute(TObject *Sender)
{
  BAUD_RATE  = UART_BAUD_38400  ;
  uncheckAllBaudRate();
  mi_38400->Checked = true;

  updateStatusBar();
   PL_1Click(Sender);
}
//---------------------------------------------------------------------------


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 == BL_GetInfo(g_BL_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

⌨️ 快捷键说明

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