mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
fix nand formatter
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@146 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
parent
9c374f0f4a
commit
128efed75e
@ -142,6 +142,10 @@ void TwlSpMain(void)
|
|||||||
u16 nand_fat_partition_num; //FATパーティション数
|
u16 nand_fat_partition_num; //FATパーティション数
|
||||||
u16 partition_MB_size[5]; //パーティション毎の容量
|
u16 partition_MB_size[5]; //パーティション毎の容量
|
||||||
/**/
|
/**/
|
||||||
|
u32 block_buf[512/4];
|
||||||
|
u32 arm9_ofs, arm9_size, arm7_ofs, arm7_size;
|
||||||
|
u32 nand_firm_size = 0;
|
||||||
|
/**/
|
||||||
PCFD fd;
|
PCFD fd;
|
||||||
CHKDISK_STATS dstat;
|
CHKDISK_STATS dstat;
|
||||||
DEV_GEOMETRY geometry;
|
DEV_GEOMETRY geometry;
|
||||||
@ -245,11 +249,82 @@ void TwlSpMain(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
DBG_PRINTF( "%d FAT Partitions.\n", nand_fat_partition_num);
|
DBG_PRINTF( "%d FAT Partitions.\n", nand_fat_partition_num);
|
||||||
|
|
||||||
|
|
||||||
|
/*----- nandfirmƒ`ƒFƒbƒN -----*/
|
||||||
|
// pc_raw_read( 5, (byte*)block_buf, 1, 1, TRUE);
|
||||||
|
nandRtfsIo( 5, 1, (byte*)block_buf, 1, TRUE);
|
||||||
|
arm9_ofs = *(u32*)(((u8*)block_buf)+0x20);
|
||||||
|
arm9_size = *(u32*)(((u8*)block_buf)+0x2C);
|
||||||
|
arm7_ofs = *(u32*)(((u8*)block_buf)+0x30);
|
||||||
|
arm7_size = *(u32*)(((u8*)block_buf)+0x3C);
|
||||||
|
// DBG_PRINTF( "arm9: 0x%x, 0x%x\n", arm9_ofs, arm9_size);
|
||||||
|
// DBG_PRINTF( "arm7: 0x%x, 0x%x\n", arm7_ofs, arm7_size);
|
||||||
|
|
||||||
|
if( (arm9_ofs + arm9_size) == arm7_ofs) {
|
||||||
|
nand_firm_size = arm7_ofs + arm7_size;
|
||||||
|
DBG_PRINTF( "nandfirm found. (size:0x%x bytes)\n", nand_firm_size);
|
||||||
|
nand_firm_size = (nand_firm_size / 1024 / 1024) +
|
||||||
|
(((nand_firm_size % (1024*1024)) != 0)? 1:0);
|
||||||
|
// DBG_PRINTF( "firm %dMB, raw %dMB\n", nand_firm_size, partition_MB_size[INDEX_RAW_PARTITION]);
|
||||||
|
|
||||||
|
if( nand_firm_size >= partition_MB_size[INDEX_RAW_PARTITION]) {
|
||||||
|
|
||||||
|
DBG_PRINTF( "YOUR SETTING WILL ERASE NAND FIRM, OK?(y/n) -> ");
|
||||||
|
if( FALSE == getchar_yes_no_prompt()) {
|
||||||
|
PRINTDEBUG( "o\n");
|
||||||
|
DBG_CHAR( '\n');
|
||||||
|
DBG_PRINTF( "RAW PARTITION SETTING CHANGED (%dMB->%dMB)\n",
|
||||||
|
partition_MB_size[INDEX_RAW_PARTITION], nand_firm_size);
|
||||||
|
partition_MB_size[INDEX_RAW_PARTITION] = nand_firm_size;
|
||||||
|
goto NAND_FLASH_FORMAT_START;
|
||||||
|
}
|
||||||
|
DBG_PRINTF( "es\n");
|
||||||
|
DBG_CHAR( '\n');
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
DBG_PRINTF( "nandfirm is not found.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
NAND_FLASH_FORMAT_START:
|
||||||
|
/*------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
/*----- <20>Å<EFBFBD>IŠm”F -----*/
|
||||||
|
DBG_PRINTF( "\nFAT PARTITIONS : %d\n", nand_fat_partition_num);
|
||||||
|
DBG_PRINTF( "DETAIL ... (RAW:%dMB)", partition_MB_size[INDEX_RAW_PARTITION]);
|
||||||
|
for( i=0; i<nand_fat_partition_num-1; i++) {
|
||||||
|
switch( i) {
|
||||||
|
case 0:
|
||||||
|
DBG_PRINTF( ", (FAT0:%dMB)", partition_MB_size[INDEX_FAT0_PARTITION]);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
DBG_PRINTF( ", (FAT1:%dMB)", partition_MB_size[INDEX_FAT1_PARTITION]);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
DBG_PRINTF( ", (FAT2:%dMB)", partition_MB_size[INDEX_FAT2_PARTITION]);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
DBG_PRINTF( ", (FAT3:%dMB)", partition_MB_size[INDEX_FAT3_PARTITION]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DBG_PRINTF( ", (FAT%d:rest)", i);
|
||||||
|
DBG_PRINTF( "\n");
|
||||||
|
DBG_PRINTF( "ABOVE SETTING OK?(y/n) -> ");
|
||||||
|
if( FALSE == getchar_yes_no_prompt()) {
|
||||||
|
PRINTDEBUG( "o\n");
|
||||||
|
DBG_CHAR( '\n');
|
||||||
|
goto NAND_FLASH_FORMAT_END;
|
||||||
|
}
|
||||||
|
DBG_PRINTF( "es\n");
|
||||||
|
DBG_CHAR( '\n');
|
||||||
|
/*--------------------*/
|
||||||
|
|
||||||
|
|
||||||
/*パーティション構成をライブラリに要求*/
|
/*パーティション構成をライブラリに要求*/
|
||||||
nandSetFormatRequest( nand_fat_partition_num, partition_MB_size);
|
nandSetFormatRequest( nand_fat_partition_num, partition_MB_size);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*マウント*/
|
/*マウント*/
|
||||||
if( nandRtfsAttach( 5, 0) == FALSE) { //nandパーティション0をFドライブにする
|
if( nandRtfsAttach( 5, 0) == FALSE) { //nandパーティション0をFドライブにする
|
||||||
PRINTDEBUG( "nandRtfsAttach failed.\n");
|
PRINTDEBUG( "nandRtfsAttach failed.\n");
|
||||||
@ -329,7 +404,7 @@ void TwlSpMain(void)
|
|||||||
}
|
}
|
||||||
/*----------------------*/
|
/*----------------------*/
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
for( i=0; i<nand_fat_partition_num; i++) {
|
for( i=0; i<nand_fat_partition_num; i++) {
|
||||||
VOLUME_LABEL[0] = (byte)(((int)'F') + i);
|
VOLUME_LABEL[0] = (byte)(((int)'F') + i);
|
||||||
/*---------- テストファイル作成 ----------*/
|
/*---------- テストファイル作成 ----------*/
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user