|
typedef struct {
unsigned char Os_Auto_Flag;
char boot_params[256];
}EnvParams;
//-------------------------------------------
void memcpy(char *s1, const char *s2, int n)
{
int i;
for (i = 0; i < n; i++)
((s1)) = ((s2));
}
//--------------------------------------------------------
U32 NFSearchParams(char *pEnv)
{
char dat[512];
U32 addr;
InitNandFlash(); //读取Nflash的ID,判断是否支持该Nflash,若支持support=1;
if(support)
{
for(addr=SIZE_128K>>9; addr<(SIZE_192K>>9); addr++) //读取Nandflash中从256~384Page(128K~192K)的数据,共128个Page(64KB);该段Nflash存放一些启动参数;SIZE_128K=0x20000,SIZE_192K=0x30000
{ ReadPage(addr, (U8 *)dat);
memcpy(pEnv, dat, sizeof(EnvParams));
return 0;
}
}
return -1;
}
问题:上面是S3C2410的启动代码一部分,
(1)sizeof(EnvParams)的大小?
(2)为什么要读64K的数据?
(3)memcpy(pEnv, dat, sizeof(EnvParams));只copy每512字节的第一个字节给pEnv,而且每次都覆盖(要读取64K),什么意思啊?
|
|