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

📄 flashdownload.cpp

📁 多串口下载手机软件的软件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	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 + -