📄 main.cpp
字号:
ini->WriteString("EMI", "nand_acccon", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_nand_acccon), 8));
ini->WriteString("EMI", "emi_gen_a", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_gen_a), 8));
ini->WriteString("EMI", "emi_gen_b", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_gen_b), 8));
ini->WriteString("EMI", "emi_dram_con_i_mode", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_i_mode), 8));
ini->WriteString("EMI", "emi_dram_con_i_ext_mode", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_i_ext_mode), 8));
ini->WriteString("EMI", "emi_dram_con_k", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_k), 8));
ini->WriteString("EMI", "emi_dram_con_l", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_dram_con_l), 8));
delete ini;
end:
DL_Destroy(&g_DL_HANDLE);
DA_Destroy(&g_DA_HANDLE);
RB_Destroy(&g_RB_HANDLE);
// destroy META_DLL
META_Deinit();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TMainForm::mi_ViewClick(TObject *Sender)
{
updateMenuItem();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ListView1_oldClick(TObject *Sender)
{
int iLastDel=0;
int ret;
int index;
TListView *plv = dynamic_cast<TListView *>(Sender);
if ( plv->Selected == NULL )
return;
if(ROMBaseDir.Length()>0)
{
OpenSingleRomFile->InitialDir = ROMBaseDir;
OpenSingleRomFile->FileName = "";
}
else if( 4 <= plv->Selected->SubItems->Count ) {
iLastDel = plv->Selected->SubItems->Strings[3].LastDelimiter("\\:");
if ( iLastDel > 0)
{
OpenSingleRomFile->InitialDir = plv->Selected->SubItems->Strings[3].SubString(1, iLastDel-1 );
OpenSingleRomFile->FileName = "";
}
}
if(OpenSingleRomFile->Execute()) {
// OpenSingleRomFile->HistoryList->Append(OpenSingleRomFile->FileName.c_str());
if( NFB_OPERATION == g_OperationMethod ) {
if( 0 == plv->ItemIndex ) {
if(ret=BL_LoadByFilepath(g_BL_HANDLE, OpenSingleRomFile->FileName.c_str())) {
if( FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
return;
}
else {
ShowMessage(" Load boot-loader \"" + OpenSingleRomFile->FileName + "\" fail!");
return;
}
}
goto end;
}
else {
index = plv->ItemIndex-1;
}
}
else {
index = plv->ItemIndex;
}
if(ret=DL_Rom_LoadByFilepath(g_DL_HANDLE, index, OpenSingleRomFile->FileName.c_str())) {
if( FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
return;
}
else if( FTHND_SCAT_REGION_IS_OVERLAP == ret ) {
ShowMessage( "\"" + OpenSingleRomFile->FileName + "\" is too large and causes region overlap!");
return;
}
else {
ShowMessage(" Load file \"" + OpenSingleRomFile->FileName + "\" fail!");
return;
}
}
iLastDel = OpenSingleRomFile->FileName.LastDelimiter("\\:");
if ( iLastDel > 0)
{
ROMBaseDir = OpenSingleRomFile->FileName.SubString(1, iLastDel-1 );
}
// check if NFB enabled
_BOOL bIsNFB=_FALSE;
if( FTHND_OK == DL_IsNFB(g_DL_HANDLE, &bIsNFB) ) {
// update operation method
if( bIsNFB && (NFB_OPERATION!=g_OperationMethod) ) {
m_Menu_OPM_NFBClick(Sender);
}
else if( !bIsNFB && (NFB_OPERATION==g_OperationMethod) ) {
m_Menu_OPM_NORClick(Sender);
}
}
// auto load boot loader
if(bIsNFB) {
BL_AutoLoad(g_BL_HANDLE, OpenSingleRomFile->FileName.c_str(), "*_BOOTLOADER_*.bin");
}
// auto load download bin files
if(g_bAutoLoadResByScat) {
if(bIsNFB) {
DL_AutoLoadByScatRegionName(g_DL_HANDLE, OpenSingleRomFile->FileName.c_str(), NORMAL_ROM|RESOURCE_BIN|JUMPTABLE_BIN);
}
else {
DL_AutoLoadByScatRegionName(g_DL_HANDLE, OpenSingleRomFile->FileName.c_str(), RESOURCE_BIN|JUMPTABLE_BIN);
}
}
// auto select DA and baseband chip type
AutoSelectDAandBBChip();
}
end:
RedrawDownloadList();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::mi_Phase2Click(TObject *Sender)
{
if (PHASE2)
{
PHASE2 = false;
ShowMessage(" go PHASE 1 + PHASE 2 ");
}
else
{
PHASE2 = true;
ShowMessage(" go PHASE 2 ");
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::StartAddrExecute(TObject *Sender)
{
Form_DA_Option->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::MB0SetupExecute(TObject *Sender)
{
ext_mem1Form->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ReadbackExecute(TObject *Sender)
{
//////////////////
g_flashtool_function = FLASHTOOL_READBACK;
if ( MT6208!=g_BBCHIP_TYPE && asBin.IsEmpty() )
if (! FileOpenDownloadAgentExecute() )
{
ShowMessage(" You must open download agent file before downloading. ");
return;
}
if ( lv_ReadBack->Items->Count ==0 )
{
ShowMessage(" Please add read back file.");
return;
}
// clean Flash device info
HWStatusBarClear();
if(UpdateDA()) {
return;
}
if( MT6205 != g_BBCHIP_TYPE )
start_DL(true);
else
Form_RB_GO->ShowModal();
}
//------------------------------------------------------------------------------
void TMainForm::start_RB( bool b_start_RB )
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::tb_AddReadBackFileClick(TObject *Sender)
{
int ret;
AnsiString s;
TListItem *pListItem;
unsigned long default_readback_addr = 0x00000000;
unsigned long default_readback_len = 0x00000800;
s = "ROM_" + IntToStr(lv_ReadBack->Items->Count);
if(ret=RB_Append(g_RB_HANDLE, s.c_str(), default_readback_addr, default_readback_len)) {
if( FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
}
else {
ShowMessage(" Add Readback file error ");
}
return;
}
RedrawReadbackList();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::tb_DeleteReadBackFileClick(TObject *Sender)
{
int ret;
if ( lv_ReadBack->Selected == NULL )
return;
if(ret=RB_Delete(g_RB_HANDLE, lv_ReadBack->ItemIndex)) {
if( FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not delete readback entry right now.");
}
else {
ShowMessage("Delete readback entry fail!");
}
return;
}
else {
lv_ReadBack->Selected->Delete();
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::lv_ReadBackKeyPress(TObject *Sender, char &Key)
{
//
if ( Key =='\b')
{
tb_DeleteReadBackFileClick(Sender);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::lv_ReadBackKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if ( Key == 46 || Key == 109 )
{
tb_DeleteReadBackFileClick(Sender);
}
else if ( Key == 107 || Key == 13 )
{
tb_AddReadBackFileClick( Sender);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::lv_ReadBack_oldDblClick(TObject *Sender)
{
int ret;
TListView *plv = dynamic_cast<TListView *>(Sender);
if ( plv->Selected == NULL )
return;
sd_ReadBack->FileName = plv->Selected->SubItems->Strings[2];
RB_INFO rb_info;
if(ret=RB_GetInfo(g_RB_HANDLE, plv->ItemIndex, &rb_info)) {
if( FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
}
else {
ShowMessage("Update readback setting fail!");
}
return;
}
if ( sd_ReadBack->Execute() )
{
if(ret=RB_SetFilepath(g_RB_HANDLE, plv->ItemIndex, sd_ReadBack->FileName.c_str())) {
if( FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
}
else {
ShowMessage("Update readback setting fail!");
}
return;
}
else {
plv->Selected->SubItems->Strings[2] = sd_ReadBack->FileName ;
}
}
else {
return;
}
Form_RB_Option->rb_ReadbackHex->Checked = true;
Form_RB_Option->ed_RB_StartAddr->Text = "0x" + IntToHex((int)rb_info.readback_addr, 8);
Form_RB_Option->ed_RB_Length->Text = "0x" + IntToHex((int)rb_info.readback_len, 8);
switch(rb_info.m_read_flag) {
case NUTL_READ_PAGE_ONLY:
Form_RB_Option->m_Radio_ReadPageOnly->Checked = true;
break;
case NUTL_READ_SPARE_ONLY:
Form_RB_Option->m_Radio_ReadSpareOnly->Checked = true;
break;
case NUTL_READ_PAGE_WITH_ECC:
Form_RB_Option->m_Radio_ReadPageWithECC->Checked = true;
break;
case NUTL_READ_PAGE_SPARE:
default:
Form_RB_Option->m_Radio_ReadPageSpare->Checked = true;
break;
}
Form_RB_Option->Visible= true;
Form_RB_Option->bb_ReadBack_OK->Visible = true;
}
//---------------------------------------------------------------------------
void TMainForm::ReadBack_Finish()
{
}
void __fastcall TMainForm::TestDownloadNot258byteClick(TObject *Sender)
{
//
#ifdef _DEBUG
if ( bDownloadNot258Byte )
{
bDownloadNot258Byte = false;
ShowMessage(" Download Normal Mode");
}
else
{
bDownloadNot258Byte = true;
ShowMessage(" Download Abnormal Mode \n NOT 258 bytes per page.");
}
#endif
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::br_230400Execute(TObject *Sender)
{
//
BAUD_RATE = UART_BAUD_230400;
uncheckAllBaudRate();
mi_230400->Checked = true;
updateStatusBar();
PL_2Click(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::br_460800Execute(TObject *Sender)
{
BAUD_RATE = UART_BAUD_460800;
uncheckAllBaudRate();
mi_460800->Checked = true;
updateStatusBar();
PL_3Click(Sender);
}
//---------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -