📄 main.cpp
字号:
m_ParamListView->Visible = true;
}
else{
m_ParamListView->Visible = false;
}
}
return true;
}
//------------------------------------------------------------------------------
bool TMainForm::FileOpenLinkMapExecute(MultiLoadNode *p_node)
{
int iLastDel=0;
if( NULL == p_node ) {
return false;
}
if (ScatBaseDir.Length()>0)
{
OpenLdMapDialog->InitialDir = ScatBaseDir;
OpenLdMapDialog->FileName = "";
}
else if( 0 < ed_LinkMapFile->Text.Length() ) {
iLastDel = ed_LinkMapFile->Text.LastDelimiter("\\:");
if ( iLastDel > 0)
{
OpenLdMapDialog->InitialDir = ed_LinkMapFile->Text.SubString(1, iLastDel-1 );
OpenLdMapDialog->FileName = "";
}
}
if ( OpenLdMapDialog->Execute() )
{
if(Parse(p_node, OpenLdMapDialog->FileName, true)) {
iLastDel = p_node->m_scat_file.LastDelimiter("\\:");
if ( iLastDel > 0)
{
ScatBaseDir = p_node->m_scat_file.SubString(1, iLastDel-1 );
ROMBaseDir = ScatBaseDir;
}
return true;
}
else {
return false;
}
}
// do not add "else" !
return false;
}
//------------------------------------------------------------------------------
void __fastcall TMainForm::FileOpenLinkMapExecute(TObject *Sender)
{
FileOpenLinkMapExecute(g_pCurNode);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
unsigned int i;
int ret;
m_pUpdateListLock = new TCriticalSection();
// init META_DLL
META_Init(NULL);
g_pCurNode = &g_DL_HANDLE_NODE;
DL_HANDLE_T &dl_handle=g_pCurNode->m_dl_handle;
DL_Create(&dl_handle);
DA_Create(&g_DA_HANDLE);
RB_Create(&g_RB_HANDLE);
AUTH_Create(&g_AUTH_HANDLE);
DL_CreateList(&g_DL_HANDLE_LIST);
Timer_Download->Enabled = false;
br_115200Execute(Sender); // new 2002.3.12
g_rootLoad = TreeView1->Items->AddChild(NULL,"Multi-Load"); //ray: 20060517
g_rootLoad->Data = NULL;
TIniFile *ini;
ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ) );
// load download history
for(i=0; i<MAX_DOWNLOAD_HISTORY; i++) {
DownloadSet dl_set;
int file_count=0;
dl_set.m_Scatter = ini->ReadString("DL_HISTORY_"+IntToStr(i), "scatter_file", "");
if(dl_set.m_Scatter.IsEmpty()) {
break;
}
dl_set.m_BootLoader = ini->ReadString("DL_HISTORY_"+IntToStr(i), "bootloader", "");
dl_set.m_BootLoader_Enable = ini->ReadBool("DL_HISTORY_"+IntToStr(i), "bootloader_enable", true);
file_count = ini->ReadInteger("DL_HISTORY_"+IntToStr(i), "file_count", 1);
for(int j=0; j<file_count; j++) {
DownloadBinFile dl_bin;
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);
}
// load 1st history
if( 0 < g_DownloadHistory.size() ) {
LoadByDownloadSet(*g_DownloadHistory.begin(), g_pCurNode);
}
g_CompareResProjectId = ini->ReadBool("DOWNLOAD", "compare_resource_project_id", true);
DL_ResourceProjectIdComparisonSetting(dl_handle, g_CompareResProjectId?_TRUE:_FALSE);
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);
}
g_OperationMethod = ini->ReadInteger("FORM", "OperationMethod", NOR_OPERATION);
g_FormatValidation = ini->ReadInteger("FORM", "erase_validation", false);
// AUTH file
ed_AUTH_File->Text = ini->ReadString("FORM", "AUTH_File", asNull);
if( 0 < ed_AUTH_File->Text.Length() ) {
if( S_DONE != (ret=AUTH_Load(g_AUTH_HANDLE, ed_AUTH_File->Text.c_str())) ) {
if( S_FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
}
else {
ShowMessage(" Load Authentication File \"" + ed_AUTH_File->Text + "\" fail!");
}
}
}
g_bCheckTgtResourceLayout = ini->ReadBool("DOWNLOAD", "chk_tgt_resource_layout", true);
g_bCheckECOVer = ini->ReadBool( "DOWNLOAD", "check_bbchip_eco_ver", true );
g_bAutoLoadResByScat = ini->ReadBool("DOWNLOAD", "auto_load_resource_by_scat", true);
g_FormatAfterDownloadOption = ini->ReadInteger("DOWNLOAD", "FormatAfterDownloadOption", DISABLE_FORMAT);
////////////////////////////// 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
} // 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_gen_c = strtoul(ini->ReadString( "EMI", "emi_gen_c", "0x0" ).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;
RedrawReadbackList();
RedrawDownloadList(g_pCurNode, false);
// show Parameter List View
DL_INFO dl_info;
if( !DL_GetInfo(dl_handle, &dl_info) ){
if( dl_info.m_config.m_security_supported ){
m_ParamListView->Visible = true;
}
else{
m_ParamListView->Visible = false;
}
}
// 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()
{
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
m_AutoBBCHIP->Checked = false;
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;
BBCHIP_MT6230->Checked = false;
BBCHIP_MT6225->Checked = false;
BBCHIP_MT6223->Checked = false;
BBCHIP_MT6227D->Checked = false;
switch(g_BBCHIP_TYPE) {
case MT6205:
BBCHIP_MT6205->Checked = true;
break;
case MT6218:
BBCHIP_MT6218->Checked = true;
break;
case MT6219:
BBCHIP_MT6219->Checked = true;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -