wince6.0的BSP中的EBOOT中TOC结构体问题
wince6.0的BSP中的EBOOT中,有如下一个结构体:
typedef struct _TOC
{
/* 0000 (+4) */
DWORDdwSignature;
/* 0004 (+4) */
DWORDdwBootVersion;
/* 0008 (+4) */
DWORDdwMaxBadBlocks;
/* 000C (+28) */
BOOT_CFGBootCfg;
/* 0028 (+100*3)*/
IMAGE_DESCRIPTORid [MAX_TOC_DESCRIPTORS];
/* 0154 (+16) */
CHAININFOchainInfo;
/* 0164 (+4) */
DWORDblockNo;
/* 0168 (+2) */
WORDdwMonoImgBlocks;// Only valid for monolithic image
/* 016A (+6) */
BYTEbBTAddr[6];
/* 0170 (+20) */
//NANDXIPINFOnandxipInfo;
/* 0170 (+4) */
NANDCSINFOnandcsinfo;
/* 0174 (+4) */
DWORDdwImageBlocks;//Blocks for the image. Applies both to monolithic and MultiXIP
/* 0178 (+4) */
DWORDbNewNFDrvEnabled;//Set it to non-zero if want to enable new NANDFLASH driver,
//I use DWORD because BOOL is not a consistent type
//between ARMADS and WinCE ARM compiler
/* 017C (+4) */
DWORDdwClockInfo;
/* 0180 (+4) */
DWORDdwClockRatio;
/* 0184 (+4) */
DWORDdwReadOnlyPartPercent;
/* 0188 (+4) */
DWORDbUserReadOnlyPart;// current write-protect status of the Read-Only FAT partition
/* 018C (+4) */
DWORDdwImageDataChecksum;
/* 0190 (+4) */
DWORDdwImageInfoChecksum;
/* 0194 (+12) */
SG_BLOCK secureBlock;
/* 01A0 (+28) */
LOGO_DESCRIPTOR logo;
/* 01BC (+24) */
HIBERNATION_STOREhsStore;
/* 01D4 (+4) */
DWORDdwTOCVersion;
/* 01D8 (+4) */
DWORDdwEBootBlockStart;
/* 01DC (+4) */
DWORDdwDMBlockStart;
/* 01E0 (+4) */
DWORDdwNKBlockStart;
/* 01E4 (+12) */
SG_BLOCK miniGPSCodeBlock;
/* 01F0 (+12) */
SG_BLOCK miniGPSDataBlock;
/* 01FC (+12) */
DWORD dwReserve[1];
/* 0200 */
} TOC, *PTOC;
对此结构体,我有几个问题:
1、此结构体最后的位置是0x1FF,即512个Bytes。原厂给我们的BSP和DEMO板上用的Flash是K9F1208UOC。页大小刚好也是512Bytes的。而我看BSP中的TOC_Write函数中,操作时都是强制指定1个页大小的。我的问题是:这个结
构体是不是和WinCE本身没有关系的?因为我现在想在上面加几个变量,这样长度就会超过512个Bytes了,那么,在对应的TOC读写函数中更改下要读写的页个数是不是就可以了?
2、如果我们将Flash换掉,换成页大小是1K Bytes的,比如K9F1G08U0C,而我要增加的变量所占的字节数没有超过512个字节,是不是意味着TOC的读写相关函数都不用去改,只需要在此结构体后面增加就可以了?
3、上面的TOC结构体,我是不是可以在其中随便增加变量的,只要对应的读写函数做相应修改就可以了?更重要的是,此结构体TOC跟WinCE系统本身没有半毛钱关系,对不对? WinCE6.0 TOC结构体
[解决办法]
toc大小是可以改的,不过好像要注意TOC存放的位置,和程序存放的位置关系,要全做相应修改。 TOC不能说和ce没有关系,这里面存放了一些配置文件,可以用也可以不使用