[转]在wince50里创建多个文件分区的方法

[转]在wince50里创建多个文件分区的方法

注意:

创建多个文件分区与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);

你可能感兴趣的:(c,File,dos,Flash,存储,WinCE)