📄 flashdownload.cpp_bak
字号:
asMsg.printf("[DL_HANDLE] %s file overlap the next file %s !", ft_dl_arg.rom_info.name, rom_info.name);
Synchronize(ShowMsg);
}
break;
case FTHND_RES_IS_NOT_DOWNLOAD_WITH_JUMPTABLE:
asMsg = "[DL_HANDLE] Resources and jump table are not selected to download together!";
Synchronize(ShowMsg);
break;
case FTHND_RES_DOWNLOAD_SELECT_INCOMPLETE:
// enable unselect files
for(int i=0; i<ft_dl_arg.required_resource_count; i++)
{
DL_Rom_SetEnableAttr(g_DL_HANDLE, ft_dl_arg.required_resource[i], _TRUE);
}
Synchronize( MainForm->RedrawLVCheckBox );
asMsg = "[DL_HANDLE] The resources you selected to download are incomplete, please download again!";
Synchronize(ShowMsg);
break;
case FTHND_JUMPTABLE_INCONSISTENT_WITH_SCAT:
asMsg = "[DL_HANDLE] jump table is different from scatter!";
Synchronize(ShowMsg);
break;
case FTHND_JUMPTABLE_INCORRECT_FORMAT:
asMsg = "[DL_HANDLE] jump table is not loaded yet! \nBecause its content is not a correct jump table format.";
Synchronize(ShowMsg);
break;
default:
asMsg = "[DL_HANDLE] Error: ret=0x" + IntToHex(ret, 6);
Synchronize(ShowMsg);
break;
}
break;
case FT_RB_HANDLE_ERROR:
switch(FTHND_RET(ret))
{
case FTHND_LIST_IS_EMPTY:
asMsg = "[RB_HANDLE] Readback list is empty!\n\nPlease add at least one readback entry.";
Synchronize(ShowMsg);
break;
default:
asMsg = "[RB_HANDLE] Error: ret=0x" + IntToHex(ret, 6);
Synchronize(ShowMsg);
break;
}
break;
case FT_BROM_ERROR:
switch(BROM_RET(ret))
{
case BROM_CMD_START_FAIL:
// asMsg = "[BROM] Can not pass bootrom start command! Possibly target power up too early.";
// Synchronize(ShowMsg);
break;
case BROM_DOWNLOAD_DA_FAIL:
asMsg = "[BROM] Fail to download DA to internal SRAM of target.";
Synchronize(ShowMsg);
break;
case BROM_BBCHIP_HW_VER_INCORRECT:
asMsg.printf("[BROM] Target baseband chip is inconsistent with %s!!!", ft_arg.p_bbchip_name);
Synchronize(ShowMsg);
break;
case BROM_BBCHIP_DSP_VER_INCORRECT:
asMsg.printf("[BROM] Target baseband chip DSP version is inconsistent with %s !!!", ft_arg.p_bbchip_name);
Synchronize(ShowMsg);
break;
case BROM_FAIL_TO_GET_BBCHIP_HW_VER:
asMsg = "[BROM] Fail to get target baseband chip H/W and DSP version!";
Synchronize(ShowMsg);
break;
case BROM_UNKNOWN_TGT_BBCHIP:
asMsg = "[BROM] Unknown target baseband chip type!";
Synchronize(ShowMsg);
break;
case BROM_UNKNOWN_BBCHIP:
{
char *p_filename=NULL;
char path[512];
AnsiString filename;
MTK_Resource res_info;
ROM_INFO rom_info;
DL_Rom_GetInfo(g_DL_HANDLE, 0, &rom_info);
GetFullPathName(rom_info.filepath, sizeof(path), path, &p_filename);
if( NULL!=p_filename && (strlen(rom_info.filepath)>(strlen(p_filename)+12)) )
{
filename.printf("%.12s...\\%s", path, p_filename);
}
else
{
filename = rom_info.filepath;
}
asMsg.printf("[BROM] Unknown baseband chip type in file %s(\"%s\")!", rom_info.name, filename.c_str());
Synchronize(ShowMsg);
}
break;
default:
asMsg = "[BROM] Error: ret=0x" + IntToHex(ret, 6);
Synchronize(ShowMsg);
break;
}
break;
case FT_DA_NO_RESPONSE:
asMsg = "DA didn't send response data which FlashTool requested.";
Synchronize(ShowMsg);
break;
case FT_DA_HW_ERROR:
asMsg = "DA sync fail! DA can not detect internal and externsl SRAM size correctly.";
Synchronize(ShowMsg);
break;
case FT_DA_SYNC_INCORRECT:
asMsg = "DA sync fail! Possibly download a illegal DA.";
Synchronize(ShowMsg);
break;
case FT_DA_VERSION_INCORRECT:
asMsg.printf("DA version is incorrect! DA_v%d.%d was expired, expected DA_v%d.%d.", da_report.da_major_ver, da_report.da_minor_ver, da_report.expected_da_major_ver, da_report.expected_da_minor_ver);
Synchronize(ShowMsg);
break;
case FT_DA_UNKNOWN_FLASH_DEVICE:
asMsg = "Unknown flash device!";
Synchronize(ShowMsg);
break;
case FT_DA_SET_EXT_CLOCK_FAIL:
asMsg = "DA_EXT_CLOCK_CMD command fail!";
Synchronize(ShowMsg);
break;
case FT_DA_SET_BBCHIP_TYPE_FAIL:
asMsg = "DA_BBCHIP_TYPE_CMD command fail!";
Synchronize(ShowMsg);
break;
case FT_DA_CHANGE_BAUDRATE_FAIL:
{
unsigned int baudrate_tbl[] = { 0, 921600, 460800, 230400, 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200, 300, 110 };
asMsg = "Fail to change baudrate to " + IntToStr(baudrate_tbl[com.baudrate]) + ".";
}
Synchronize(ShowMsg);
break;
case FT_DA_SET_DOWNLOAD_BLOCK_FAIL:
asMsg = "DA_MEM_CMD command fail! Possibly the following reason.\n\n 1. Download block exceeds target flash size.\n 2. Download block start address is not WORD alignment.\n 3. Download block length is not multiple of WORD.";
Synchronize(ShowMsg);
break;
case FT_DA_DOWNLOAD_FAIL:
asMsg = "Download to flash fail! C:\\BROM_DLL.log is created and record more detail information.";
Synchronize(ShowMsg);
break;
case FT_DA_READBACK_FAIL:
asMsg = "Readback from flash fail! C:\\BROM_DLL.log is created and record more detail information.";
Synchronize(ShowMsg);
break;
case FT_DA_FORMAT_FAIL:
asMsg = "Format flash error! Possibly given a wrong format range, please check your format setting.";
Synchronize(ShowMsg);
break;
case FT_DA_FINISH_CMD_FAIL:
asMsg = "DA_FINISH_CMD command fail!";
Synchronize(ShowMsg);
break;
case FT_DA_SOC_CHECK_FAIL:
asMsg = "SOC verification fail!";
Synchronize(ShowMsg);
break;
case FT_DA_BBCHIP_DSP_VER_INCORRECT:
asMsg.printf("Target baseband chip DSP version is inconsistent with %s !!!", ft_arg.p_bbchip_name);
Synchronize(ShowMsg);
break;
default:
asMsg = "Error: ret=0x" + IntToHex(ret, 6);
Synchronize(ShowMsg);
break;
}
#if 0
if( (ret&0x000000FF) == FT_SKIP_AUTO_FORMAT_FAT )
{
if( isShowNoFormatInfo == false )
{
isShowNoFormatInfo = true;
AnsiString as_msg;
as_msg = " No format FAT information in *.bin file, please choose manual format FAT range";
ShowMessage(as_msg);
}
}
else if( (ret&0x000000FF) == FT_DL_HANDLE_ERROR )
{
if( (ret&0x0000FF00) == FTHND_FILE_IS_NOT_LOADED )
{
if( isShowFileNotLoaded == false )
{
isShowFileNotLoaded = true;
AnsiString as_msg;
as_msg = " Download type and scatter are not match";;
ShowMessage(as_msg);
PostMessage(
hPostMsgDestHandle,
WM_MD_SELECT_DOWNLOAD_TYPE_FAIL,
0,
0
);
}
}
}
#endif
}
//---------------------------------------------------------------------------
void _fastcall TBOOT1::SyncUpdateResultError()
{
Synchronize(UpdateResultError);
}
//---------------------------------------------------------------------------
void _fastcall TBOOT1::UpdateResultOk()
{
AnsiString s_ok;
int i;
s_ok = prefix + "OK";
i = m_com_port.number - m_TheFirstComNo;
// access
if( MainForm->Get_EnableFactoryDatabaseLog() )
{
TDateTime datetime;
TDateTime time = datetime.CurrentTime();
sTime stime;
time.DecodeTime( &stime.hour, &stime.min, &stime.sec, &stime.msec);
MainForm->SetPassFail( i, TEST_RESULT_PASS);
MainForm->SetFailReason( i, 0 );
MainForm->SetDnEndsTime( i, stime );
MainForm->SetDnTime( i );
MainForm->SetThroughput( i );
WaitForSingleObject( hSemaphore, 5000 );
MainForm->AddDnResultToAccess( i );
}
MainForm->COMPercentageArray[i]->Caption = s_ok;
MainForm->Set_COMPercentageCaption( i, s_ok );
MainForm->TimerCOMArray[i]->Enabled = false;
MainForm->btnCOMStartArray[i]->Enabled = true;
MainForm->cbCOMArray[i]->Enabled = true;
MainForm->cbAutoPollingArray[i]->Enabled = true;
MainForm->Set_shpCOMColor( i, clGreen );
MainForm->DownloadStatus[i] = DOWNLOAD_STATUS_NOTRUNNING;
PostMessage(
hPostMsgDestHandle,
WM_MD_DOWNLOAD_SUCCESSFUL,
i,
0
);
}
//---------------------------------------------------------------------------
void _fastcall TBOOT1::SyncUpdateResultOk()
{
Synchronize(UpdateResultOk);
}
//==============================================================================
void __fastcall TBOOT1::Execute()
{
int i;
// COM_PORT_SETTING com;
//FLASHTOOL_ARG ft_arg;
i = m_com_port.number - m_TheFirstComNo;
com.com.number = m_com_port.number;
com.baudrate = UART_baud_rate;
com.ms_read_timeout = COM_DEFAULT_TIMEOUT;
com.ms_write_timeout = COM_DEFAULT_TIMEOUT;
// FLASHTOOL_ARG setting
ft_arg.bbchip = Baseband_chip_type;
ft_arg.ext_clock = External_clock_type;
ft_arg.p_bank0_mem_cfg = NULL;
ft_arg.p_bank1_mem_cfg = NULL;
ft_arg.da_handle = g_DA_HANDLE;
ft_arg.cb_download_da_init = cb_download_da_init;
ft_arg.cb_download_da_init_arg = this;
ft_arg.cb_download_da = cb_download_da;
ft_arg.cb_download_da_arg = this;
ft_arg.cb_before_process = cb_before_process;
ft_arg.cb_before_process_arg = this;
ft_arg.cb_set_high_speed_baudrate = NULL;
ft_arg.cb_set_high_speed_baudrate_arg = NULL;
ft_arg.ms_boot_timeout = BOOT_INFINITE;
ft_arg.max_start_cmd_retry_count = 2;
ft_arg.cb_in_brom_stage = cb_in_brom_stage;
ft_arg.cb_in_brom_stage_arg = NULL;
ft_arg.m_baudrate_full_sync_count = 0;
if( MainForm->Get_FlashToolFunction() == FLASHTOOL_DOWNLOAD )
{
//FLASHTOOL_DOWNLOAD_ARG settings
//
ft_dl_arg.dl_handle = g_DL_HANDLE;
ft_dl_arg.download_accuracy = ACCURACY_AUTO;
ft_dl_arg.cb_download_flash_init = cb_download_flash_init;
ft_dl_arg.cb_download_flash_init_arg = this;
ft_dl_arg.cb_download_flash = cb_download_flash;
ft_dl_arg.cb_download_flash_arg = this;
ft_dl_arg.enable_tgt_res_layout_check = MainForm->Get_CheckTgtResLayout()?_TRUE:_FALSE;
ft_dl_arg.enable_bbchip_eco_check = bCheckECOVersion?_TRUE:_FALSE;
if( bFormatNeeded )
{
ft_dl_arg.enable_fat_format = _TRUE;
if( MainForm->rbAuto->Checked )
{
ft_dl_arg.fmt_fat.option = FORMAT_FAT_AUTO;
}
else
{
ft_dl_arg.fmt_fat.option = FORMAT_FAT_MANUAL;
ft_dl_arg.fmt_fat.fat_begin_addr = MainForm->Get_Format_FAT_begin_address();
ft_dl_arg.fmt_fat.fat_length = MainForm->Get_Format_FAT_length();
}
ft_dl_arg.cb_format_report_init = cb_format_report_init;
ft_dl_arg.cb_format_report_init_arg = this;
ft_dl_arg.cb_format_report = cb_format_report;
ft_dl_arg.cb_format_report_arg = this;
}
else
{
ft_dl_arg.enable_fat_format = _FALSE;
ft_dl_arg.cb_format_report_init = NULL;
ft_dl_arg.cb_format_report_init_arg = NULL;
ft_dl_arg.cb_format_report = NULL;
ft_dl_arg.cb_format_report_arg = NULL;
}
SyncStartDownLoad();
if ( this->Terminated )
{
return;
}
if( Baseband_chip_type != UNKNOWN_BBCHIP_TYPE )
{
ret = FlashDownload( &com, &ft_arg, &ft_dl_arg, &stopflag[i], &da_report);
}
else
{
ret = AutoBoot_FlashDownload(&com, &ft_arg, &ft_dl_arg, &stopflag[i], &da_report);
}
}
else if( MainForm->Get_FlashToolFunction() == FLASHTOOL_FORMAT )// format
{
FLASHTOOL_FORMAT_ARG ft_fmt_arg;
ft_fmt_arg.format_addr = MainForm->Get_Format_FAT_begin_address();
ft_fmt_arg.format_length = MainForm->Get_Format_FAT_length();
ft_fmt_arg.cb_format_report_init = cb_format_report_init;
ft_fmt_arg.cb_format_report_init_arg = this;
ft_fmt_arg.cb_format_report = cb_format_report;
ft_fmt_arg.cb_format_report_arg = this;
if( Baseband_chip_type != UNKNOWN_BBCHIP_TYPE )
{
ret = FlashFormat(&com, &ft_arg, &ft_fmt_arg, &stopflag[i], &da_report);
}
else
{
ret = AutoBoot_FlashFormat(&com, &ft_arg, &ft_fmt_arg, &stopflag[i], &da_report);
}
}
SetEvent(Flash_Download_Event[i]);
if (ret != 0)
{
// UpdateResultError();
SyncUpdateResultError();
if ( this->Terminated )
{
//this->OnTerminate = neByUser;
return;
}
}
else
{
//UpdateResultOk();
SyncUpdateResultOk();
if ( this->Terminated )
{
//this->OnTerminate = neByUser;
return;
}
}
return;
}
//==============================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -