dinfo.c
来自「M-System DOC(Disk on a Chip) Flash芯片的诊断工」· C语言 代码 · 共 272 行
C
272 行
#include "unitinc.h"
const EXCHAR *exUtilCommands[] =
{
"MORE",
"WIN",
"IPL",
"OTP",
"CFG",
"BBT",
"BDK",
"BDTL",
"IPL",
"REG",
"WIN",
"WINL",
"WINH",
"EXB",
"LOG",
"IMG",
"LEVEL",
"EXTRA",
"H",
"yuri",
"SHIFT",
"WIDTH",
"FAST",
"?",
LAST_COMMAND
};
Option_t Option;
Media_t Media, SpareMedia;
ExDevice logFileDev;
dword DOCAddress = 0xFFFFFFFF; /* default val that will show when DOCAddress wasn't set */
dword DOCLowAddress = 0xFFFFFFFF;
dword DOCHighAddress = 0xFFFFFFFF;
EXBYTE bPrintLevel=0;
FLStatus SwitchModules()
{
FLStatus Status = flOK;
EXBYTE i = 0;
if( Option.LogFileName )
{
OpenSerialWriteFileDevice( &logFileDev, Option.LogFileName );
}
Status = DINFO_flInit();
if( STATUS_ERROR )
return Status;
/* if no window specify - Run loop on all Sockets ! */
for( i = 0 ; i < noOfSockets ; i++ )
{
Status = DINFO_INFO(i);
if( STATUS_ERROR )
return Status;
/* WE ALWAYS DISPLAY CONFIG INFORMATION */
/* if( Option.CFGflag) */
Status = DINFO_CONFIG(i);
if( STATUS_ERROR )
{
if( Status == flUnknownMedia )
{
Status = flOK;
/* BBT is allowed to see if the media is unformatted */
if(Option.BBTflag)
{
Status = DINFO_BBT(i);
if( STATUS_ERROR )
return Status;
}
continue;
}
else
return Status;
}
if(Option.BDTLflag)
{
Status = DINFO_BDTL(i);
if( STATUS_ERROR )
return Status;
}
if(Option.BDKflag)
{
Status = DINFO_BDK(i);
if( STATUS_ERROR )
return Status;
}
if(Option.BBTflag)
{
Status = DINFO_BBT(i);
if( STATUS_ERROR )
return Status;
}
if(Option.EXBflag)
{
Status = DINFO_EXB();
if( STATUS_ERROR )
return Status;
}
if(Option.OTPflag)
{
Status = DINFO_OTP(i);
if( STATUS_ERROR )
return Status;
}
if(Option.IPLflag)
{
Status = DINFO_IPL(i);
if( STATUS_ERROR )
return Status;
}
if(Option.REGflag)
{
Status = DINFO_REG(i);
if( STATUS_ERROR )
return Status;
}
}
return Status;
}
/*---------------------------------------------------------------------------------*/
ExStatus EXAPI ExMain()
{
ExStatus err = EX_OK;
err = AnalyzeCmdLine();
if( err == EX_LOW_LIMIT_BIGGER_THAN_HIGH_LIMIT_ERROR)
DinfoPrint( EX_TEXT("\nLow Limit can't be higher that high limit\n") ) ;
if( err != EX_OK )
{
PrintUsage();
END_WITH_ERROR( err );
}
err = SwitchModules();
if( Option.LogFileName )
{
CloseWriteSerialFileDevice( &logFileDev );
}
if( err != EX_OK )
{
END_WITH_ERROR( err );
}
ExPrint("\r\nOK\r\n");
END_WITHOUT_ERROR();
}
FLStatus DINFO_INFO( EXBYTE handle )
{
IOreq ioreq;
FLStatus Status = flOK;
ioreq.irHandle = handle ;
ioreq.irFlags = 0 ;
ioreq.irData = &Media.Info ;
Status = DINFO_flGetPhysicalInfo( &ioreq ) ;
if( STATUS_ERROR )
{
DinfoPrint( EX_TEXT("\nNo DiskOnChip found\n") ) ;
return Status ;
}
if( noOfSockets > 1 )
{
DinfoPrint( EX_TEXT("\n DiskOnChip %d - GENERAL INFO.\n"), handle+1 );
ExPrintLine( 30 );
}
else
{
DinfoPrint( EX_TEXT("\n GENERAL INFO.\n") );
ExPrintLine( 15 );
}
DinfoPrint( EX_TEXT(" Physical Address : 0x%lX\n"), /*GetPhysicalAddressFromPointer*/ ((EXBYTE *)ioreq.irLength) ) ;
DinfoPrint( EX_TEXT(" DiskOnChip Type : %s"), TranslateTffsDocType( Media.Info.mediaType ) );
DinfoPrint( EX_TEXT("\n") ) ;
return Status;
}
EXDWORD GetDocWinLAddress(void)
{
EXDWORD low_range,high_range;
/* if /win was not defined */
if( DOCAddress == 0xFFFFFFFF )
{
/* if /winl was defined, return its address. */
if( DOCLowAddress != 0xFFFFFFFF )
{
return DOCLowAddress;
}
/* No option was defined. Use pfn_Search_Range. */
else
{
ExGet_Search_Range(&low_range,&high_range);
return low_range;
}
}
/* if /win was defined, return its address. */
else
{
return DOCAddress;
}
}
EXDWORD GetDocWinHAddress(void)
{
EXDWORD low_range,high_range;
/* if /win was not defined */
if( DOCAddress == 0xFFFFFFFF )
{
/* if /winh was defined, return its address. */
if( DOCHighAddress != 0xFFFFFFFF )
{
return DOCHighAddress;
}
/* No option was defined. Use pfn_Search_Range. */
else
{
ExGet_Search_Range(&low_range,&high_range);
return high_range;
}
}
/* if /win was defined, return its address. */
else
{
return DOCAddress;
}
}
EXBYTE GetPrintLevel(void)
{
return bPrintLevel;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?