📄 main.cpp
字号:
//EMI Setting
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_gen_c", "0x"+IntToHex((int)(g_EMI_NFI_Setting.m_emi_gen_c), 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_NODE.m_dl_handle);
if( NULL != g_DL_HANDLE_NODE.m_param.m_sec_ro.m_data){
free(g_DL_HANDLE_NODE.m_param.m_sec_ro.m_data);
}
if( NULL != g_DL_HANDLE_NODE.m_param.m_cust_para.m_data){
free(g_DL_HANDLE_NODE.m_param.m_cust_para.m_data);
}
if( NULL != g_DL_HANDLE_NODE.m_param.m_otp.m_data ){
free(g_DL_HANDLE_NODE.m_param.m_otp.m_data);
}
DA_Destroy(&g_DA_HANDLE);
RB_Destroy(&g_RB_HANDLE);
AUTH_Destroy(&g_AUTH_HANDLE);
DL_DestroyList(&g_DL_HANDLE_LIST);
// 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;
TListView *plv = dynamic_cast<TListView *>(Sender);
if ( plv->Selected == NULL )
return;
if( NULL == g_pCurNode ) {
return;
}
DL_HANDLE_T &dl_handle=g_pCurNode->m_dl_handle;
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 = "";
}
}
// open file
if(OpenSingleRomFile->Execute()) {
goto load_file;
}
return;
load_file:
ListViewItemType_E type=*((ListViewItemType_E *)plv->Selected->Data);
if( LV_BOOTLOADER == type ) {
// load boot loader
if( ret=DL_BL_Load(dl_handle, OpenSingleRomFile->FileName.c_str()) ) {
if( S_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;
}
}
}
else {
// load ROM list
if( ret=DL_Rom_Load(dl_handle, (LV_NFB_DL_ROM==type)?(plv->ItemIndex-1):plv->ItemIndex, OpenSingleRomFile->FileName.c_str()) ) {
if( S_FTHND_HANDLE_BUSY_NOW == ret ) {
ShowMessage("Program is busy! Can not update setting right now.");
return;
}
else if( S_DL_LOAD_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 );
}
// auto load download bin files
{
unsigned short count=0;
DL_GetCount(dl_handle, &count);
if( g_bAutoLoadResByScat && !strcmp("ROM", plv->Selected->Caption.c_str()) && 1<count ) {
DL_AutoLoadByScatRegionName(dl_handle, OpenSingleRomFile->FileName.c_str(), NORMAL_ROM|RESOURCE_BIN|JUMPTABLE_BIN);
}
}
}
redraw:
RedrawReadbackList();
RedrawDownloadList(g_pCurNode, false);
}
//---------------------------------------------------------------------------
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 ( 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( S_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( S_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( S_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( S_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);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Timer_DownloadTimer(TObject *Sender)
{
u
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -