📄 main.cpp
字号:
dl_bin.m_Filepath = ini->ReadString("DL_HISTORY_"+IntToStr(i), "file"+IntToStr(j), "");
dl_bin.m_Enable = ini->ReadBool("DL_HISTORY_"+IntToStr(i), "file"+IntToStr(j)+"_enable", true);
dl_set.m_BinFiles.push_back(dl_bin);
}
g_DownloadHistory.push_back(dl_set);
}
g_CompareResProjectId = ini->ReadBool("DOWNLOAD", "compare_resource_project_id", true);
DL_ResourceProjectIdComparisonSetting(g_DL_HANDLE, g_CompareResProjectId?_TRUE:_FALSE);
g_BBCHIP_TYPE = ini->ReadInteger("FORM", "bb_chip", MT6218B);
g_EXT_CLOCK = ini->ReadInteger("FORM", "ext_clock", EXT_26M);
g_bPullDownGPIO17 = ini->ReadBool("FORM", "pull_down_gpio17", true);
for(i=0; i<2; i++) {
g_EMI_Config[i].m_bAuto = ini->ReadBool( "EMI", "bank"+IntToStr(i)+"_auto", true);
g_EMI_Config[i].m_Config = strtoul(ini->ReadString( "EMI", "bank"+IntToStr(i)+"_cfg", "0x00004102" ).c_str(), NULL, 16);
}
COM_PORT = ini->ReadInteger( "FORM", "com", 1 );
int iBaudRate = ini->ReadInteger( "FORM", "baudrate", 921600 );
g_MaxBromStartCmdRetryCount = ini->ReadInteger( "FORM", "brom_start_cmd_retry_count", DEFAULT_BROM_START_CMD_RETRY_COUNT );
m_BRomStartCmdRetryCount->Caption.printf("BootROM start cmd retry (%d) ...", g_MaxBromStartCmdRetryCount);
switch ( iBaudRate )
{
case 921600:
BAUD_RATE = UART_BAUD_921600;
break;
case 460800: // 2002.3.28 High Speed
BAUD_RATE = UART_BAUD_460800;
break;
case 230400: // 2002.3.28 High Speed
BAUD_RATE = UART_BAUD_230400;
break;
case 115200:
BAUD_RATE = UART_BAUD_115200;
break;
case 57600:
BAUD_RATE = UART_BAUD_57600;
break;
case 38400:
BAUD_RATE = UART_BAUD_38400;
break;
case 19200:
BAUD_RATE = UART_BAUD_19200;
break;
case 9600:
BAUD_RATE = UART_BAUD_9600;
break;
default:
BAUD_RATE = UART_BAUD_19200;
break;
}
AnsiString asNull;
g_asNormalModeDAPath = asBin = ini->ReadString("FORM", "bin", asNull );
g_asTestModeDAPath = ini->ReadString("FORM", "testmode_da_path", g_asNormalModeDAPath);
if ( access( asBin.c_str(), 0 ) != 0 ) {
asBin.SetLength(0);
}
else {
// load DA
OpenReadDA_File(asBin);
}
asMap = ini->ReadString("FORM", "map", asNull );
if ( access( asMap.c_str(), 0 ) != 0 ) {
asMap.SetLength(0);
}
else {
// load scatter
Parse(asMap, false);
}
g_OperationMethod = ini->ReadInteger("FORM", "OperationMethod", NOR_OPERATION);
g_FormatValidation = ini->ReadInteger("FORM", "erase_validation", false);
RedrawDownloadList();
// OpenSingleRomFile->HistoryList->CommaText = ini->ReadString("FORM", "rom_history", asNull);
/////////////////////////////
AnsiString as_bloader_file;
as_bloader_file = ini->ReadString("NFB", "bloader", asNull );
if( 0 < as_bloader_file.Length() ) {
if( FTHND_OK != (ret=BL_LoadByFilepath(g_BL_HANDLE, as_bloader_file.c_str())) ) {
if( FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
}
else {
ShowMessage(" Load boot-loader \"" + as_bloader_file + "\" fail!");
}
}
}
BL_SetEnableAttr(g_BL_HANDLE, ini->ReadBool("NFB", "bloader_enable", true)?_TRUE:_FALSE);
g_bCheckTgtResourceLayout = ini->ReadBool("DOWNLOAD", "chk_tgt_resource_layout", true);
g_bCheckECOVer = ini->ReadBool( "DOWNLOAD", "check_bbchip_eco_ver", true );
g_bAutoSelectBBChipType = ini->ReadBool("DOWNLOAD", "auto_sel_bbchip", true);
g_bAutoLoadResByScat = ini->ReadBool("DOWNLOAD", "auto_load_resource_by_scat", true);
g_FormatAfterDownloadOption = ini->ReadInteger("DOWNLOAD", "FormatAfterDownloadOption", DISABLE_FORMAT);
int item_count;
if( NFB_OPERATION == g_OperationMethod ) {
item_count = ListView1->Items->Count-1;
}
else {
item_count = ListView1->Items->Count;
}
if( 0 < item_count )
{
for(int i=0; i<item_count; i++)
{
AnsiString s;
AnsiString name;
int enable;
ROM_INFO rom;
// ROM file name
s = ini->ReadString("DOWNLOAD", "file"+IntToStr(i), asNull );
if( NFB_OPERATION == g_OperationMethod ) {
name = ListView1->Items->Item[i+1]->Caption;
}
else {
name = ListView1->Items->Item[i]->Caption;
}
if( 0<s.Length() && (ret=DL_Rom_LoadByFilepath(g_DL_HANDLE, i, s.c_str()))) {
if( FTHND_SCAT_REGION_IS_OVERLAP == ret ) {
ShowMessage("Failed to load \"" + name + "\" from file \"" + s + "\"!\n\nBecause it is too large and causes region overlap!");
}
else {
ShowMessage("Failed to load \"" + name + "\" from file \"" + s + "\"!");
}
}
BBCHIP_TYPE bbchip_type;
if( g_bAutoSelectBBChipType && !DL_GetBBChipType(g_DL_HANDLE, &bbchip_type) && UNKNOWN_BBCHIP_TYPE!=bbchip_type ) {
g_BBCHIP_TYPE = bbchip_type;
updateMenuItem();
}
enable = ini->ReadInteger("DOWNLOAD", "file"+IntToStr(i)+"_enable", 1);
DL_Rom_SetEnableAttr(g_DL_HANDLE, i, 0!=enable?_TRUE:_FALSE);
}
// check if NFB enabled
_BOOL bIsNFB;
if( FTHND_OK == DL_IsNFB(g_DL_HANDLE, &bIsNFB) ) {
if( _TRUE == bIsNFB ) {
g_OperationMethod = NFB_OPERATION;
}
else {
g_OperationMethod = NOR_OPERATION;
}
}
RedrawDownloadList();
}
////////////////////////////// begin read back
int iReadBackCount = ini->ReadInteger("READBACK", "readback_count", 0 );
if ( iReadBackCount > 0)
{
for ( int i=0; i< iReadBackCount; i++)
{
AnsiString as_rb_file;
AnsiString as_readback_addr;
AnsiString as_readback_len;
unsigned long readback_addr;
unsigned long readback_len;
bool enable;
NUTL_ReadFlag_E read_flag;
as_rb_file = ini->ReadString("READBACK", "file"+IntToStr(i), "ROM_"+ IntToStr( i ));
enable = ini->ReadBool("READBACK", "file"+IntToStr(i)+"_enable", true);
read_flag = ini->ReadInteger("READBACK", "file"+IntToStr(i)+"_read_flag", NUTL_READ_PAGE_SPARE);
as_readback_addr = ini->ReadString("READBACK", "startaddr"+IntToStr(i), "0x00000000" );
as_readback_len = ini->ReadString("READBACK", "length"+IntToStr(i), "0x00000100" );
readback_addr = strtoul(as_readback_addr.c_str(), NULL, 16);
readback_len = strtoul(as_readback_len.c_str(), NULL, 16);
if(!RB_Append(g_RB_HANDLE, as_rb_file.c_str(), readback_addr, readback_len)) {
RB_SetEnableAttr(g_RB_HANDLE, i, enable?_TRUE:_FALSE);
RB_SetReadbackFlag(g_RB_HANDLE, i, read_flag);
}
} // for
RedrawReadbackList();
} // if
////////////////////////////// end read back
iFlashItemIndex = ini->ReadInteger( "FORM", "flashitemindex", 2);
g_ulFormatStartAddr = strtoul(ini->ReadString("FORM", "FormatStartAddr", "0x00E00000").c_str(), NULL, 16);
g_ulFormatLength = strtoul(ini->ReadString("FORM", "FormatLength", "0x00200000").c_str(), NULL, 16);
g_ulNandFormatStartAddr = strtoul(ini->ReadString("FORM", "NandFormatStartAddr", "0x00000000").c_str(), NULL, 16);
g_ulNandFormatLength = strtoul(ini->ReadString("FORM", "NandFormatLength", "0x08000000").c_str(), NULL, 16);
g_FormatOption = ini->ReadInteger("FORM", "FormatOption", RESET_TO_FACTORY);
g_PacketLength = ini->ReadInteger( "TRANS_OPTION", "packet_length", 1024 );
g_Baudrate_FullSync_Count = ini->ReadInteger( "TRANS_OPTION", "baudrate_full_sync_count", 1 );
g_SpeedUpBootROMBaudrate = ini->ReadBool( "TRANS_OPTION", "speedup_brom_baudrate", true);
// NFI Setting
g_EMI_NFI_Setting.m_nand_acccon = strtoul(ini->ReadString( "EMI", "nand_acccon", "0x000007FF" ).c_str(), NULL, 16);
// manual DRAM setting
g_EMI_NFI_Setting.m_emi_gen_a = strtoul(ini->ReadString( "EMI", "emi_gen_a", "0x568996a2" ).c_str(), NULL, 16);
g_EMI_NFI_Setting.m_emi_gen_b = strtoul(ini->ReadString( "EMI", "emi_gen_b", "0x5b8a69da" ).c_str(), NULL, 16);
g_EMI_NFI_Setting.m_emi_dram_con_i_mode = strtoul(ini->ReadString( "EMI", "emi_dram_con_i_mode", "0x03a90223" ).c_str(), NULL, 16);
g_EMI_NFI_Setting.m_emi_dram_con_i_ext_mode = strtoul(ini->ReadString( "EMI", "emi_dram_con_i_ext_mode", "0x03a94000" ).c_str(), NULL, 16);
g_EMI_NFI_Setting.m_emi_dram_con_k = strtoul(ini->ReadString( "EMI", "emi_dram_con_k", "0x50004564" ).c_str(), NULL, 16);
g_EMI_NFI_Setting.m_emi_dram_con_l = strtoul(ini->ReadString( "EMI", "emi_dram_con_l", "0x04107777" ).c_str(), NULL, 16);
// update packet length
UpdatePacketLength(g_PacketLength);
delete ini;
updateMenuItem();
updateStatusBar();
// show ts_Download tabsheet in first page
ts_Download->Show();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::View_toolbarExecute(TObject *Sender)
{
/*
if ( tb_Main->Visible )
{
tb_Main->Visible = false;
mi_ToolBar->Checked = false;
}
else
{
tb_Main->Visible = true;
mi_ToolBar->Checked = true;
}
*/
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::View_StatusBarExecute(TObject *Sender)
{
/*
if ( sb_Main->Visible )
{
sb_Main->Visible = false;
mi_StatusBar->Checked = false;
}
else
{
sb_Main->Visible = true;
mi_StatusBar->Checked = true;
}
*/
}
//---------------------------------------------------------------------------
void TMainForm::updateStatusBar()
{
sb_Main->Panels->Items[2]->Text = "COM"+IntToStr(COM_PORT);
switch ( BAUD_RATE )
{
case UART_BAUD_921600:
sb_Main->Panels->Items[3]->Text = "921600 bps";
break;
case UART_BAUD_460800:
sb_Main->Panels->Items[3]->Text = "460800 bps";
break;
case UART_BAUD_230400:
sb_Main->Panels->Items[3]->Text = "230400 bps";
break;
case UART_BAUD_115200:
sb_Main->Panels->Items[3]->Text = "115200 bps";
break;
case UART_BAUD_57600:
sb_Main->Panels->Items[3]->Text = "57600 bps";
break;
case UART_BAUD_38400:
sb_Main->Panels->Items[3]->Text = "38400 bps";
break;
case UART_BAUD_19200:
sb_Main->Panels->Items[3]->Text = "19200 bps";
break;
case UART_BAUD_9600:
sb_Main->Panels->Items[3]->Text = "9600 bps";
break;
default :
if (DEBUG)
ShowMessage(" main.cpp : undefined Baud Rate " + IntToStr( COM_PORT));
break;
}
switch(g_OperationMethod) {
case NOR_OPERATION:
sb_Main->Panels->Items[1]->Text = "NOR";
break;
case NAND_OPERATION:
sb_Main->Panels->Items[1]->Text = "NAND";
break;
case NFB_OPERATION:
sb_Main->Panels->Items[1]->Text = "NFB";
break;
default:
sb_Main->Panels->Items[1]->Text = "??";
break;
}
}
//--------------------------------------------------
void TMainForm::updateMenuItem()
{
if( MT6208 == g_BBCHIP_TYPE ) {
mi_921600->Enabled = false;
mi_460800->Enabled = false;
mi_230400->Enabled = false;
mi_57600->Enabled = false;
mi_38400->Enabled = false;
mi_19200->Enabled = false;
mi_9600->Enabled = false;
MCU_52MHz->Enabled = false;
MCU_26MHz->Enabled = false;
}
else {
mi_921600->Enabled = true;
mi_460800->Enabled = true;
mi_230400->Enabled = true;
mi_57600->Enabled = true;
mi_38400->Enabled = true;
mi_19200->Enabled = true;
mi_9600->Enabled = true;
MCU_52MHz->Enabled = true;
MCU_26MHz->Enabled = true;
}
// MCU TYPE
BBCHIP_MT6205->Checked = false;
BBCHIP_MT6205B->Checked = false;
BBCHIP_MT6218->Checked = false;
BBCHIP_MT6208->Checked = false;
BBCHIP_MT6218B->Checked = false;
BBCHIP_MT6219->Checked = false;
BBCHIP_MT6217->Checked = false;
BBCHIP_MT6228->Checked = false;
BBCHIP_MT6227->Checked = false;
BBCHIP_MT6229->Checked = false;
BBCHIP_MT6226->Checked = false;
BBCHIP_MT6226M->Checked = false;
switch(g_BBCHIP_TYPE) {
case MT6205:
BBCHIP_MT6205->Checked = true;
break;
case MT6218:
BBCHIP_MT6218->Checked = true;
break;
case MT6208:
BBCHIP_MT6208->Checked = true;
g_EXT_CLOCK = EXT_13M;
BAUD_RATE = UART_BAUD_115200;
break;
case MT6219:
BBCHIP_MT6219->Checked = true;
break;
case MT6205B:
BBCHIP_MT6205B->Checked = true;
break;
case MT6217:
BBCHIP_MT6217->Checked = true;
break;
case MT6228:
BBCHIP_MT6228->Checked = true;
break;
case MT6227:
BBCHIP_MT6227->Checked = true;
break;
case MT6229:
BBCHIP_MT6229->Checked = true;
break;
case MT6226:
BBCHIP_MT6226->Checked = true;
break;
case MT6226M:
BBCHIP_MT6226M->Checked = true;
break;
case MT6218B:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -