📄 main.cpp
字号:
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 + -