diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/kami_pxi.h b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/kami_pxi.h index 32db296c..d6e01575 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/kami_pxi.h +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/kami_pxi.h @@ -59,6 +59,7 @@ typedef void (*KAMICallback)(KAMIResult result, void *arg); void KamiPxiInit( void ); KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback); +KAMIResult ExeFormat(FormatMode format_mode); KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read); KAMIResult kamiNvramIo(u32 address, void* buffer, u32 size, BOOL is_read); KAMIResult kamiMcuWriteFirm(void* buffer ); diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/kami_pxi.c b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/kami_pxi.c index 08a32565..f73011fd 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/kami_pxi.c +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/kami_pxi.c @@ -131,6 +131,32 @@ KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback) return KAMI_RESULT_SUCCESS; } +KAMIResult ExeFormat(FormatMode format_mode) +{ + OSIntrMode enabled; + + // ロック + enabled = OS_DisableInterrupts(); + if (kamiWork.lock) + { + (void)OS_RestoreInterrupts(enabled); + return KAMI_RESULT_BUSY; + } + kamiWork.lock = TRUE; + (void)OS_RestoreInterrupts(enabled); + + kamiWork.callback = NULL; + kamiWork.arg = 0; + kamiWork.data = 0; + + if (KamiSendPxiCommand(KAMI_EXE_FORMAT, 1, format_mode)) + { + KamiWaitBusy(); + return (KAMIResult)kamiWork.result; + } + return KAMI_RESULT_SEND_ERROR; +} + /*---------------------------------------------------------------------------* Name: NANDアクセス関数 diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/main.c b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/main.c index 09b1073c..15470551 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/main.c +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/main.c @@ -103,9 +103,6 @@ TwlMain() // FS_Initの後の方が良い模様 InitAllocation(); - // NAMライブラリ初期化 - NAM_Init( OS_AllocFromMain, OS_FreeToMain); - NAMUT_Init( OS_AllocFromMain, OS_FreeToMain); // 表示関連初期化 InitGraphics(); @@ -131,6 +128,16 @@ TwlMain() #endif kamiFontPrintfConsole( CONSOLE_ORANGE, "+---------------------------+\n"); +#ifdef AUTO_FORMAT_MODE +// 検査工程ではNANDが初期化されていないがその状態でFATにアクセスすると +// 問題があるため強制的にフォーマットを行う + ExeFormat(FORMAT_MODE_QUICK); +#endif + + // NAMライブラリ初期化 + NAM_Init( OS_AllocFromMain, OS_FreeToMain); + NAMUT_Init( OS_AllocFromMain, OS_FreeToMain); + // HWInfo関連の前準備 switch (HWI_Init( OS_AllocFromMain, OS_FreeToMain )) { @@ -148,6 +155,7 @@ TwlMain() break; } + while (1) { kamiPadRead();