注意: 创建多个文件分区与C:/WINCE500/PLATFORM/SMDK2443/Src/Bootloader/Eboot/nand.cpp和C:/WINCE500/PUBLIC/COMMON/OAK/DRIVERS/ETHDBG/BOOTPART/bootpart.cpp文件有关。
1 创建多个同种文件系统的分区的时候会调用C:/WINCE500/PLATFORM/SMDK2443/Src/Bootloader/Eboot/nand.cpp里的BP_OpenPartition函数,来实现创建文件分区的功能,如下实例可以创建一个10MB的PART_DOS32的文件分区 hPartEx1 = BP_OpenPartition( NEXT_FREE_LOC, SECTOR_TO_BLOCK_SIZE(FILE_TO_SECTOR_SIZE(10*1024*1024))*PAGES_PER_BLOCK, // align to block PART_DOS32, TRUE, PART_OPEN_ALWAYS);
2 BP_OpenPartition函数会再调用C:/WINCE500/PUBLIC/COMMON/OAK/DRIVERS/ETHDBG/BOOTPART/bootpart.cpp里的GetPartitionTableIndex函数,来识别BP_OpenPartition创建的文件分区是否已经创建过,如果创建过,WINCE50就不会再创建新的同种类型的文件分区
3 因为GetPartitionTableIndex函数的缘故,所以理论上同种类型的文件分区只能创建一个,但是也可以通过修改BP_OpenPartition的参数再创建一个两个同种类型的文件分区,如下实例可以创建一个10MB和一个5MB的PART_DOS32的文件分区 hPartEx1 = BP_OpenPartition( NEXT_FREE_LOC, SECTOR_TO_BLOCK_SIZE(FILE_TO_SECTOR_SIZE(10*1024*1024))*PAGES_PER_BLOCK, // align to block PART_DOS32, TRUE, PART_OPEN_ALWAYS);
OALMSG(TRUE, (TEXT("createpartition_2_ok_eboot_update/n"))); hPartEx2 = BP_OpenPartition( NEXT_FREE_LOC,SECTOR_TO_BLOCK_SIZE(FILE_TO_SECTOR_SIZE(5*1024*1024))*PAGES_PER_BLOCK, // align to block
PART_DOS32, FALSE, PART_OPEN_ALWAYS);
4 如果需要创建3个以上的文件分区,可以创建两个同种类型的文件分区,再创建几个不同种类的文件分区来实现,如下实例可以创建一个10MB和一个5MB的PART_DOS32的文件分区,还有一个用剩余所有NAND flash的存储空间创建的一个PART_DOS3_FAT的文件分区 hPartEx1 = BP_OpenPartition( NEXT_FREE_LOC, SECTOR_TO_BLOCK_SIZE(FILE_TO_SECTOR_SIZE(10*1024*1024))*PAGES_PER_BLOCK, // align to block PART_DOS32, TRUE, PART_OPEN_ALWAYS);
OALMSG(TRUE, (TEXT("createpartition_2_ok_eboot_update/n"))); hPartEx2 = BP_OpenPartition( NEXT_FREE_LOC, SECTOR_TO_BLOCK_SIZE(FILE_TO_SECTOR_SIZE(5*1024*1024))*PAGES_PER_BLOCK, // align to block PART_DOS32, FALSE, PART_OPEN_ALWAYS);
OALMSG(TRUE, (TEXT("createpartition_3_ok_eboot_update/n"))); hPartEx3 = BP_OpenPartition( NEXT_FREE_LOC,USE_REMAINING_SPACE,
PART_DOS3_FAT, TRUE, PART_OPEN_ALWAYS); |