?? fcdfile.cpp
字號(hào):
#include "StdAfx.h"
#include "FluteD.h"
#include "FCDFile.h"
int CFCDFile::Setup(char * fname)
{
int i;
AddLog("\n[Setup FCD File]\n");
GetPrivateProfileString(FCD_CHAIN, FCD_DEV, "", bsdl_file, 1024, fname);
if(bsdl_file[0] == 0)
{
AddLog("No BSDL in FCD !\n");
return ERR_TRUE;
}
nAddrWidth = GetPrivateProfileInt(FCD_FLASH, FCD_ADDRWIDTH, 0, fname);
nDataWidth = GetPrivateProfileInt(FCD_FLASH, FCD_DATAWIDTH, 0, fname);
if(!nAddrWidth || !nDataWidth)
{
AddLog("Flash Map ERROR\n");
return ERR_TRUE;
}
for(i=0; i<MAX_FCMD; i++)
{
WriteCmd.cmd[i] = 0;
EraseCmd.cmd[i] = 0;
}
WriteCmd.length = 0;
EraseCmd.length = 0;
char cmdstr[1024];
GetPrivateProfileString(FCD_FLASH, FCD_WRITECMD, NULL, cmdstr, 1024, fname);
if(cmdstr[0]==0)
{
AddLog("NO Flash Write Command\n");
return ERR_TRUE;
}
sscanf(cmdstr, "%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx",
&WriteCmd.addr[0],
&WriteCmd.cmd[0],
&WriteCmd.addr[1],
&WriteCmd.cmd[1],
&WriteCmd.addr[2],
&WriteCmd.cmd[2],
&WriteCmd.addr[3],
&WriteCmd.cmd[3],
&WriteCmd.addr[4],
&WriteCmd.cmd[4],
&WriteCmd.addr[5],
&WriteCmd.cmd[5],
&WriteCmd.addr[6],
&WriteCmd.cmd[6],
&WriteCmd.addr[7],
&WriteCmd.cmd[7]
);
GetPrivateProfileString(FCD_FLASH, FCD_ERASECMD, NULL, cmdstr, 1024, fname);
if(cmdstr[0]==0)
{
AddLog("NO Flash Erase Command");
return ERR_TRUE;
}
sscanf(cmdstr, "%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx",
&EraseCmd.addr[0],
&EraseCmd.cmd[0],
&EraseCmd.addr[1],
&EraseCmd.cmd[1],
&EraseCmd.addr[2],
&EraseCmd.cmd[2],
&EraseCmd.addr[3],
&EraseCmd.cmd[3],
&EraseCmd.addr[4],
&EraseCmd.cmd[4],
&EraseCmd.addr[5],
&EraseCmd.cmd[5],
&EraseCmd.addr[6],
&EraseCmd.cmd[6],
&EraseCmd.addr[7],
&EraseCmd.cmd[7]
);
for(i=0; i<MAX_FCMD; i++)
{
if( WriteCmd.cmd[i] == 0 && WriteCmd.addr[i] == 0)
break;
}
WriteCmd.length = i;
for(i=0; i<MAX_FCMD; i++)
{
if( EraseCmd.cmd[i] == 0 && EraseCmd.addr[i] == 0)
break;
}
EraseCmd.length = i;
nEraseDelay = 0;
GetPrivateProfileString(FCD_FLASH, FCD_ERASEDLY, NULL, cmdstr, 1024, fname);
if(cmdstr[0]!=0)
{
sscanf(cmdstr, "%d", &nEraseDelay);
}
for(i=0; i<MAX_FBLK; i++) Block[i].num = 0;
GetPrivateProfileString(FCD_FLASH, FCD_BLOCKG, NULL, cmdstr, 1024, fname);
if(cmdstr[0]==0)
{
AddLog("NO Flash Block");
return ERR_TRUE;
}
sscanf(cmdstr, "%lx,%d,%lx,%d,%lx,%d,%lx,%d,%lx,%d,%lx,%d,%lx,%d,%lx,%d",
&Block[0].size, &Block[0].num,
&Block[1].size, &Block[1].num,
&Block[2].size, &Block[2].num,
&Block[3].size, &Block[3].num,
&Block[4].size, &Block[4].num,
&Block[5].size, &Block[5].num,
&Block[6].size, &Block[6].num,
&Block[7].size, &Block[7].num
);
char sz_aux[8];
// Setup Address Map
for(i=0; i<nAddrWidth; i++)
{
sprintf(sz_aux, "A%d\0", i);
GetPrivateProfileString(FCD_FLASH, sz_aux, NULL, cmdstr, 1024, fname);
if(cmdstr[0]==0)
{
AddLog("Miss Flash Address Map");
return ERR_TRUE;
}
sscanf(cmdstr, "%s", AddrPin[i]);
}
// Setup Data Map
for(i=0; i< (nDataWidth * 8); i++)
{
sprintf(sz_aux, "D%d\0", i);
GetPrivateProfileString(FCD_FLASH, sz_aux, NULL, cmdstr, 1024, fname);
if(cmdstr[0]==0)
{
AddLog("Miss Flash Data Map");
return ERR_TRUE;
}
sscanf(cmdstr, "%s", DataPin[i]);
}
// Setup RD Map
GetPrivateProfileString(FCD_FLASH, FCD_RDPIN, NULL, RDPin,
MAX_PNAMELEN, fname);
if(RDPin[0]==0)
{
AddLog("NO Flash RD Map");
return ERR_TRUE;
}
// Setup WR Map
GetPrivateProfileString(FCD_FLASH, FCD_WRPIN, NULL, WRPin,
MAX_PNAMELEN, fname);
if(WRPin[0]==0)
{
AddLog("NO Flash WR Map");
return ERR_TRUE;
}
// Setup CS Map
GetPrivateProfileString(FCD_FLASH, FCD_CSPIN, NULL, CSPin,
1024, fname);
if(CSPin[0]==0)
{
AddLog("NO Flash CS Map");
return ERR_TRUE;
}
// Reset Pin
nResetCtrl = GetPrivateProfileInt(FCD_FLASH, FCD_RSTCTRL, 0, fname);
return ERR_FALSE;
}
int CFCDFile::Dump()
{
return 0;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -