diff --git a/build/libraries/devices/sdmc/ARM7/drnand.c b/build/libraries/devices/sdmc/ARM7/drnand.c index 753274d..a64d652 100644 --- a/build/libraries/devices/sdmc/ARM7/drnand.c +++ b/build/libraries/devices/sdmc/ARM7/drnand.c @@ -63,7 +63,7 @@ static int nand_calculated_fat_params = 0; *---------------------------------------------------------------------------*/ static void sdi_get_CHS_params( void); static u32 sdi_get_ceil( u32 cval, u32 mval); -static void sdi_get_nom( u16 min_nom); +static void sdi_get_nom( u32 min_nom); static void sdi_get_fatparams( void); static void sdi_build_partition_table( void); @@ -77,13 +77,13 @@ u32 NAND_FAT1_SECTORS; u32 NAND_FAT2_SECTORS; u32 NAND_FAT3_SECTORS; -void nandSetFormatRequest( u16 partition_num, u16* partition_mbytes) +void nandSetFormatRequest( u16 partition_num, u32* partition_sectors) { - NAND_RAW_SECTORS = (partition_mbytes[0] * 1024 * 1024) / 512; - NAND_FAT0_SECTORS = ((partition_mbytes[1] * 1024 * 1024) / 512) + NAND_RAW_SECTORS; - NAND_FAT1_SECTORS = (partition_mbytes[2] * 1024 * 1024) / 512; - NAND_FAT2_SECTORS = (partition_mbytes[3] * 1024 * 1024) / 512; - NAND_FAT3_SECTORS = (partition_mbytes[4] * 1024 * 1024) / 512; + NAND_RAW_SECTORS = partition_sectors[0]; + NAND_FAT0_SECTORS = partition_sectors[1] + NAND_RAW_SECTORS; + NAND_FAT1_SECTORS = partition_sectors[2]; + NAND_FAT2_SECTORS = partition_sectors[3]; + NAND_FAT3_SECTORS = partition_sectors[4]; NAND_FAT_PARTITION_COUNT = partition_num; } @@ -527,7 +527,7 @@ static u32 sdi_get_ceil( u32 cval, u32 mval) /*マスターブートセクタのセクタ数を返す*/ -static void sdi_get_nom( u16 MIN_NOM) +static void sdi_get_nom( u32 MIN_NOM) { u32 RSC[4]; u32 TS[4]; diff --git a/build/tests/fatfs/nand_formatter_kmc/ARM7/src/main.c b/build/tests/fatfs/nand_formatter_kmc/ARM7/src/main.c index b3bdb6d..9095fe2 100644 --- a/build/tests/fatfs/nand_formatter_kmc/ARM7/src/main.c +++ b/build/tests/fatfs/nand_formatter_kmc/ARM7/src/main.c @@ -28,7 +28,7 @@ -extern void nandSetFormatRequest( u16 partition_num, u16* partition_mbytes); +extern void nandSetFormatRequest( u16 partition_num, u32* partition_sectors); /*---------------------------------------------------------------------------* @@ -138,7 +138,7 @@ void TwlSpMain(void) byte TEST_FILENAME[] = "\\nand_p0_test.bin"; byte VOLUME_LABEL[] = "F:"; u16 nand_fat_partition_num; //FATパーティション数 - u16 partition_MB_size[5]; //パーティション毎の容量 + u32 partition_MB_size[5]; //パーティション毎の容量 /**/ u32 block_buf[512/4]; u32 arm9_ofs, arm9_size, arm7_ofs, arm7_size; @@ -236,9 +236,9 @@ void TwlSpMain(void) } nand_fat_partition_num++; - DBG_PRINTF( "FAT PARTITION 3 SIZE?(MBytes) -> "); - partition_MB_size[INDEX_FAT3_PARTITION] = get_number_prompt(); - DBG_PRINTF( " (%d MBytes)\n\n", partition_MB_size[INDEX_FAT3_PARTITION]); +// DBG_PRINTF( "FAT PARTITION 3 SIZE?(MBytes) -> "); +// partition_MB_size[INDEX_FAT3_PARTITION] = get_number_prompt(); +// DBG_PRINTF( " (%d MBytes)\n\n", partition_MB_size[INDEX_FAT3_PARTITION]); break; } #endif @@ -304,8 +304,13 @@ NAND_FLASH_FORMAT_START: /*--------------------*/ - /*パーティション構成をライブラリに要求*/ + /*--- パーティション構成をセクタ単位にしてライブラリに要求 ---*/ + for( i=0; i<4; i++) { + partition_MB_size[i] *= ((1024 * 1024) / 512); + PRINTDEBUG( "p%d : %d\n", i, partition_MB_size[i]); + } nandSetFormatRequest( nand_fat_partition_num, partition_MB_size); + /*------------------------------------------------------------*/ /*マウント*/ if( nandRtfsAttach( 5, 0) == FALSE) { //nandパーティション0をFドライブにする