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

    技术2022-05-20  34

    注意:

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


    最新回复(0)