如题,只看到有定义的地方:PBOOT_CFG g_pBootCfg;
没找到在哪里初始化的,请知道的大侠指点一下吧!
千万不要因为我的问题过于幼稚而将之过滤...
如果代码里找不到的话,注意一下是不是在bib文件里作为FIXUPVAR初始化的。
不过我看你这个参数似乎是一个config data,是什么芯片上面的初始化程序?
引用: 引用 2 楼 codewarrior 的回复:
不过我看你这个参数似乎是一个config data,是什么芯片上面的初始化程序?
就是WinCE5.0下三星2440的EBOOT里面的,有对这个参数的使用,我找不到在哪里初始化的,所以一头雾水啊
在EBOOT目录下的nand.cpp文件中的BootConfigInit()函数有对该变量的定义,楼主不妨看看你的EBOOT下有没有。
// Set default boot configuration values
static void BootConfigInit(DWORD dwIndex)
{
EdbgOutputDebugString("+BootConfigInit\r\n");
g_pBootCfg = &g_pTOC->BootCfg;
memset(g_pBootCfg, 0, sizeof(BOOT_CFG));
g_pBootCfg->ImageIndex = dwIndex;
g_pBootCfg->ConfigFlags = BOOT_TYPE_MULTISTAGE; //CONFIG_FLAGS_DEBUGGER
g_pBootCfg->BootDelay = CONFIG_BOOTDELAY_DEFAULT;
g_pBootCfg->EdbgAddr.wMAC[0] = 0x0000;
g_pBootCfg->EdbgAddr.wMAC[1] = 0x1232;
g_pBootCfg->EdbgAddr.wMAC[2] = 0x1233;
g_pBootCfg->SubnetMask = inet_addr("255.255.255.0");
EdbgOutputDebugString("-BootConfigInit\r\n");
return;
}
应该是由FLASH存储,EBOOT启动后调用上楼的函数赋初值的,改变后就需要更新FLASH,下次启动就是读入新的数据并更新。
我的EBOOT就有这个函数(传入的参数就是楼主关心的全局变量的指针):
static BOOL LoadEBootCFG(EBOOT_CFG *EBootCFG)
{
if (!FlashRead(EBOOT_FLASH_CFG_START, (PUCHAR)EBootCFG, sizeof(EBOOT_CFG)))
{
EdbgOutputDebugString("ERROR: LoadEBootCFG: failed to load configuration.\r\n");
return(FALSE);
}
// Is the CFG data valid? Check for the magic number that was written the last time
// the CFG block was updated. If Eboot has never been run, there will be no configuration
// information, so the magic number will likely not be found. In this case, setup the
// factory defaults and store them into Flash.
//
if (EBootCFG->ConfigMagicNumber != EBOOT_CFG_MAGIC_NUMBER)
{
ResetDefaultEBootCFG(EBootCFG);
}
// Make sure a valid debug serial port address (physical) was found.
//
if (g_EbootCFG.dwDbgSerPhysAddr == 0)
{
g_EbootCFG.dwDbgSerPhysAddr = BULVERDE_BASE_REG_PA_FFUART;
}
return(TRUE);
}