📄 flashdownload.cpp
字号:
Synchronize(InitProgress);
}
//---------------------------------------------------------------------------
void _fastcall TBOOT1::UpdateProgress()
{
AnsiString s;
int i;
// s = prefix + IntToStr(progress_percentage) + "%";
s = prefix;
i = m_com_port.number - m_TheFirstComNo;
// MainForm->COMPercentageArray[i]->Caption = s;
MainForm->Set_COMPercentageCaption( i, s );
MainForm->pbCOMArray[i]->Progress = progress_percentage;
}
//---------------------------------------------------------------------------
void _fastcall TBOOT1::SyncUpdateProgress()
{
Synchronize(UpdateProgress);
}
//---------------------------------------------------------------------------
void _fastcall TBOOT1::UpdateResultError()
{
AnsiString s1, s2;
AnsiString s_error;
int i;
s_error = prefix + "ERROR";
i = m_com_port.number - m_TheFirstComNo;
if( isStopTrigger[i] )
{ s_error = prefix + "STOP"; };
MainForm->COMPercentageArray[i]->Caption = s_error;
MainForm->Set_COMPercentageCaption( i, s_error );
MainForm->TimerCOMArray[i]->Enabled = false;
MainForm->btnCOMStartArray[i]->Enabled = true;
MainForm->cbCOMArray[i]->Enabled = true;
MainForm->cbAutoPollingArray[i]->Enabled = true;
MainForm->Set_shpCOMColor( i, clRed );
MainForm->DownloadStatus[i] = DOWNLOAD_STATUS_NOTRUNNING;
// access
if( MainForm->Get_EnableFactoryDatabaseLog() )
{
MainForm->SetPassFail( i, TEST_RESULT_FAIL);
MainForm->SetFailReason( i, ret );
WaitForSingleObject( hSemaphore, 5000 );
MainForm->AddDnResultToAccess( i );
}
switch( FT_RET(ret) )
{
case FT_SKIP_AUTO_FORMAT_FAT:
ROM_INFO rom_info;
DL_Rom_GetInfo(g_DL_HANDLE, 0, &rom_info);
asMsg.printf("[Warning] Skip FAT auto format because of one of the following reasons.\n\n"
" 1. \"%s\" might not contain FAT range information! \n"
" 2. Target's flash id doesn't correspond to \"%s\" 's flash id!", rom_info.name, rom_info.name);
Synchronize(ShowMsg);
break;
#if 0
case FT_OK:
if( (FLASHTOOL_DOWNLOAD==g_flashtool_function && RESET_TO_FACTORY==g_FormatOption) ||
(FLASHTOOL_FORMAT==g_flashtool_function && RESET_TO_FACTORY==g_TempFormatOption)
) {
if(!EnterMETA()) {
// stop timer
Synchronize(StopTimer);
return;
}
}
// show ok form and stop timer
Synchronize(ShowOK_Form);
break;
#endif
case FT_COM_PORT_OPEN_ERR:
// asMsg.printf("[COM] Open COM%d error!", m_com_port.number);
// Synchronize(ShowMsg);
break;
case FT_COM_PORT_SET_TIMEOUT_ERR:
// asMsg.printf("[COM] Fail to set COM%d timeout!", m_com_port.number);
// Synchronize(ShowMsg);
break;
case FT_DA_HANDLE_ERROR:
switch( FTHND_RET(ret) )
{
case FTHND_FILE_IS_NOT_LOADED:
s1 = ft_arg.da_info.filepath;
asMsg = "[DA_HANDLE] DA(\"" + s1 + "\") is not loaded yet!\n\nPlease load it before download.";
Synchronize(ShowMsg);
break;
default:
asMsg = "[DA_HANDLE] Error: ret=0x" + IntToHex(ret, 6);
Synchronize(ShowMsg);
break;
}
break;
case FT_DL_HANDLE_ERROR:
switch( FTHND_RET(ret) )
{
case FTHND_LIST_IS_EMPTY:
asMsg = "[DL_HANDLE] Download list is empty or all disabled!\n\nPlease select at least one entry.";
Synchronize(ShowMsg);
break;
case FTHND_FILE_IS_NOT_LOADED:
s1 = ft_dl_arg.rom_info.name;
asMsg = "[DL_HANDLE] " + s1 + " is not loaded yet!\n\nPlease load it before download.";
Synchronize(ShowMsg);
break;
case FTHND_RES_NO_MATCH_IN_JUMPTABLE:
{
char *p_filename=NULL;
char path[512];
AnsiString filename;
GetFullPathName(ft_dl_arg.rom_info.filepath, sizeof(path), path, &p_filename);
if( NULL!=p_filename && (strlen(ft_dl_arg.rom_info.filepath)>(strlen(p_filename)+12)) )
{
filename.printf("%.12s...\\%s", path, p_filename);
}
else
{
filename = ft_dl_arg.rom_info.filepath;
}
asMsg.printf("[DL_HANDLE] %s (\"%s\") doesn't match any entry in jump table!", ft_dl_arg.rom_info.name, filename.c_str());
Synchronize(ShowMsg);
}
break;
case FTHND_RES_BASE_ADDR_NOT_MATCH:
{
char *p_filename=NULL;
char path[512];
AnsiString filename;
MTK_Resource res_info;
GetFullPathName(ft_dl_arg.rom_info.filepath, sizeof(path), path, &p_filename);
if( NULL!=p_filename && (strlen(ft_dl_arg.rom_info.filepath)>(strlen(p_filename)+12)) )
{
filename.printf("%.12s...\\%s", path, p_filename);
}
else
{
filename = ft_dl_arg.rom_info.filepath;
}
DL_Rom_GetResInfo(g_DL_HANDLE, ft_dl_arg.rom_info.index, &res_info);
asMsg.printf("[DL_HANDLE] %s (\"%s\"): The begin_addr(0x%08X) doesn't match resource base_addr(0x%08X)!", ft_dl_arg.rom_info.name, filename.c_str(), ft_dl_arg.rom_info.begin_addr, res_info.m_base_addr);
Synchronize(ShowMsg);
}
break;
case FTHND_SCAT_REGION_IS_OVERLAP:
{
ROM_INFO rom_info;
DL_Rom_GetInfo(g_DL_HANDLE, ft_dl_arg.rom_info.index+1, &rom_info);
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:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -