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