mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
書き込むマイコンファームをSDカードのルートから選択できるようにしました。
その他コード整理。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1633 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
633e5602b3
commit
df75b3245b
@ -31,7 +31,7 @@ MACRO_FLAGS += -DUSE_WIRELESS_FORCE_DISABLE_SETTING
|
||||
#============================================================================
|
||||
#============================================================================
|
||||
# フォントデータを書き込み可能にする場合定義します。(要:Make Clean)
|
||||
#MACRO_FLAGS += -DUSE_WRITE_FONT_DATA
|
||||
MACRO_FLAGS += -DUSE_WRITE_FONT_DATA
|
||||
#============================================================================
|
||||
#============================================================================
|
||||
# マリクラデバッグ用に製品本体での起動を抑制する場合定義します。(要:Make Clean)
|
||||
|
||||
@ -30,14 +30,32 @@ extern "C" {
|
||||
型定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
//typedef void* (*TpProcess)(void);
|
||||
enum {
|
||||
AUTO_PROCESS_MENU_FORMAT = 0,
|
||||
AUTO_PROCESS_MENU_HARDWARE_INFO,
|
||||
#ifdef USE_WRITE_FONT_DATA
|
||||
AUTO_PROCESS_MENU_FONT_DATA,
|
||||
#endif // USE_WRITE_FONT_DATA
|
||||
AUTO_PROCESS_MENU_IMPORT_TAD,
|
||||
AUTO_PROCESS_MENU_IMPORT_NANDFIRM,
|
||||
AUTO_PROCESS_MENU_MCU,
|
||||
AUTO_PROCESS_MENU_NUM
|
||||
};
|
||||
|
||||
typedef enum _AutoProcessResult
|
||||
{
|
||||
AUTO_PROCESS_RESULT_SUCCESS,
|
||||
AUTO_PROCESS_RESULT_FAILURE,
|
||||
AUTO_PROCESS_RESULT_SKIP
|
||||
}
|
||||
AutoProcessResult;
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
グローバル変数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
extern BOOL gAutoFlag;
|
||||
|
||||
extern AutoProcessResult gAutoProcessResult[AUTO_PROCESS_MENU_NUM];
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
関数定義
|
||||
|
||||
@ -29,7 +29,6 @@ extern "C" {
|
||||
/*---------------------------------------------------------------------------*
|
||||
’иђ”’и‹`
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define MCU_DATA_FILE_PATH_IN_ROM "rom:/data/mcu_twl.hex"
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
ЉЦђ”’и‹`
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
#include "process_norfirm.h"
|
||||
#include "process_auto.h"
|
||||
#include "process_fade.h"
|
||||
#include "process_mcu.h"
|
||||
#include "cursor.h"
|
||||
#include "keypad.h"
|
||||
|
||||
@ -33,19 +34,6 @@
|
||||
型定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
enum {
|
||||
MENU_FORMAT = 0,
|
||||
MENU_HARDWARE_INFO,
|
||||
#ifdef USE_WRITE_FONT_DATA
|
||||
MENU_FONT_DATA,
|
||||
#endif // USE_WRITE_FONT_DATA
|
||||
MENU_IMPORT_TAD,
|
||||
#ifndef MARIOCLUB_VERSION
|
||||
MENU_IMPORT_NANDFIRM,
|
||||
#endif // MARIOCLUB_VERSION
|
||||
MENU_END
|
||||
};
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
定数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
@ -55,6 +43,7 @@ enum {
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
BOOL gAutoFlag = FALSE;
|
||||
AutoProcessResult gAutoProcessResult[AUTO_PROCESS_MENU_NUM];
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
内部変数定義
|
||||
@ -82,9 +71,17 @@ static s8 sMenuSelectNo;
|
||||
|
||||
void* AutoProcess0(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
// オートフラグセット
|
||||
gAutoFlag = TRUE;
|
||||
|
||||
// 処理結果初期化
|
||||
for (i=0;i<AUTO_PROCESS_MENU_NUM; i++)
|
||||
{
|
||||
gAutoProcessResult[i] = AUTO_PROCESS_RESULT_SKIP;
|
||||
}
|
||||
|
||||
// メニュー初期化
|
||||
sMenuSelectNo = 0;
|
||||
|
||||
@ -108,25 +105,26 @@ void* AutoProcess1(void)
|
||||
{
|
||||
switch ( sMenuSelectNo++ )
|
||||
{
|
||||
case MENU_FORMAT:
|
||||
case AUTO_PROCESS_MENU_FORMAT:
|
||||
return FormatProcess0;
|
||||
case MENU_HARDWARE_INFO:
|
||||
case AUTO_PROCESS_MENU_HARDWARE_INFO:
|
||||
return HWInfoProcess0;
|
||||
|
||||
#ifdef USE_WRITE_FONT_DATA
|
||||
case MENU_FONT_DATA:
|
||||
case AUTO_PROCESS_MENU_FONT_DATA:
|
||||
return fontProcess0;
|
||||
#endif // USE_WRITE_FONT_DATA
|
||||
|
||||
case MENU_IMPORT_TAD:
|
||||
case AUTO_PROCESS_MENU_IMPORT_TAD:
|
||||
return ImportProcess0;
|
||||
|
||||
#ifndef MARIOCLUB_VERSION
|
||||
case MENU_IMPORT_NANDFIRM:
|
||||
case AUTO_PROCESS_MENU_IMPORT_NANDFIRM:
|
||||
return NandfirmProcess0;
|
||||
#endif // MARIOCLUB_VERSION
|
||||
|
||||
case MENU_END:
|
||||
case AUTO_PROCESS_MENU_MCU:
|
||||
return mcuProcess0;
|
||||
|
||||
case AUTO_PROCESS_MENU_NUM:
|
||||
return AutoProcess2;
|
||||
}
|
||||
|
||||
@ -149,6 +147,7 @@ void* AutoProcess2(void)
|
||||
int i;
|
||||
s8 line = 5;
|
||||
u8 bg_color;
|
||||
BOOL totalResult = TRUE;
|
||||
|
||||
// 文字列全クリア
|
||||
kamiFontClear();
|
||||
@ -170,31 +169,55 @@ void* AutoProcess2(void)
|
||||
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " WRITE FONT DATA ");
|
||||
#endif // USE_WRITE_FONT_DATA
|
||||
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " INPORT TAD FROM SD ");
|
||||
#ifndef MARIOCLUB_VERSION
|
||||
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " INPORT NANDFIRM FROM SD");
|
||||
#endif //MARIOCLUB_VERSION
|
||||
kamiFontPrintf(3, line += 2, FONT_COLOR_BLACK, " WRITE MCU FIRM ");
|
||||
#ifndef AUTO_FORMAT_MODE
|
||||
kamiFontPrintf(3, 22, FONT_COLOR_BLACK, " Button B : return to menu");
|
||||
if (gAutoProcessResult[AUTO_PROCESS_MENU_MCU] == AUTO_PROCESS_RESULT_SKIP)
|
||||
{
|
||||
kamiFontPrintf(3, 22, FONT_COLOR_BLACK, " Button B : return to menu");
|
||||
}
|
||||
else
|
||||
{
|
||||
kamiFontPrintf(3, 22, FONT_COLOR_BLACK, " Please Shut Down");
|
||||
}
|
||||
#endif //AUTO_FORMAT_MODE
|
||||
|
||||
/*
|
||||
for (i=0;i<sMenuSelectNo-1;i++)
|
||||
{
|
||||
kamiFontPrintf(3, (s16)(7+2*i), FONT_COLOR_GREEN, "OK");
|
||||
}
|
||||
*/
|
||||
|
||||
// ޏ”s‚ ‚è
|
||||
if (i<MENU_END)
|
||||
for (i=0;i<AUTO_PROCESS_MENU_NUM;i++)
|
||||
{
|
||||
kamiFontPrintf(3, (s16)(7+2*i), FONT_COLOR_RED, "NG");
|
||||
kamiFontPrintf(3, 19, FONT_COLOR_BLACK, " Error Occured!");
|
||||
bg_color = BG_COLOR_RED;
|
||||
switch (gAutoProcessResult[i])
|
||||
{
|
||||
case AUTO_PROCESS_RESULT_SUCCESS:
|
||||
kamiFontPrintf(3, (s16)(7+2*i), FONT_COLOR_GREEN, "OK");
|
||||
break;
|
||||
case AUTO_PROCESS_RESULT_FAILURE:
|
||||
totalResult = FALSE;
|
||||
kamiFontPrintf(3, (s16)(7+2*i), FONT_COLOR_RED, "NG");
|
||||
break;
|
||||
case AUTO_PROCESS_RESULT_SKIP:
|
||||
kamiFontPrintf(2, (s16)(7+2*i), FONT_COLOR_PURPLE, "SKIP");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 失敗なし
|
||||
else
|
||||
if (totalResult)
|
||||
{
|
||||
kamiFontPrintf(3, 19, FONT_COLOR_BLACK, " Finished Successfully!");
|
||||
bg_color = BG_COLOR_GREEN;
|
||||
}
|
||||
// 失敗あり
|
||||
else
|
||||
{
|
||||
kamiFontPrintf(3, 19, FONT_COLOR_BLACK, " Error Occured!");
|
||||
bg_color = BG_COLOR_RED;
|
||||
}
|
||||
|
||||
// 背景上部
|
||||
kamiFontFillChar( 0, bg_color, bg_color );
|
||||
@ -229,16 +252,18 @@ void* AutoProcess3(void)
|
||||
{
|
||||
// NandInitializerProdectはオート処理が完了した段階で終了です。
|
||||
#ifndef AUTO_FORMAT_MODE
|
||||
if (kamiPadIsTrigger(PAD_BUTTON_B))
|
||||
if (gAutoProcessResult[AUTO_PROCESS_MENU_MCU] == AUTO_PROCESS_RESULT_SKIP)
|
||||
{
|
||||
FADE_OUT_RETURN( TopmenuProcess0 );
|
||||
if (kamiPadIsTrigger(PAD_BUTTON_B))
|
||||
{
|
||||
FADE_OUT_RETURN( TopmenuProcess0 );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return AutoProcess3;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
処理関数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
@ -15,6 +15,8 @@
|
||||
$Author$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifdef USE_WRITE_FONT_DATA
|
||||
|
||||
#include <twl.h>
|
||||
#include <nitro/snd.h>
|
||||
#include <twl/fatfs.h>
|
||||
@ -188,8 +190,16 @@ void* fontProcess2(void)
|
||||
// Auto—p
|
||||
if (gAutoFlag)
|
||||
{
|
||||
if (result) { FADE_OUT_RETURN( AutoProcess1 ); }
|
||||
else { FADE_OUT_RETURN( AutoProcess2); }
|
||||
if (result)
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_FONT_DATA] = AUTO_PROCESS_RESULT_SUCCESS;
|
||||
FADE_OUT_RETURN( AutoProcess1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_FONT_DATA] = AUTO_PROCESS_RESULT_FAILURE;
|
||||
FADE_OUT_RETURN( AutoProcess2);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -270,3 +280,4 @@ static BOOL WriteFontData(void)
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif // USE_WRITE_FONT_DATA
|
||||
|
||||
@ -355,8 +355,16 @@ void* FormatProcess3(void)
|
||||
// Auto—p
|
||||
if (gAutoFlag)
|
||||
{
|
||||
if (sFormatResult) { FADE_OUT_RETURN( AutoProcess1 ); }
|
||||
else { FADE_OUT_RETURN( AutoProcess2 ); }
|
||||
if (sFormatResult)
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_FORMAT] = AUTO_PROCESS_RESULT_SUCCESS;
|
||||
FADE_OUT_RETURN( AutoProcess1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_FORMAT] = AUTO_PROCESS_RESULT_FAILURE;
|
||||
FADE_OUT_RETURN( AutoProcess2 );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@ -260,8 +260,16 @@ void* HWInfoProcess2(void)
|
||||
// Auto—p
|
||||
if (gAutoFlag)
|
||||
{
|
||||
if (result) { FADE_OUT_RETURN( AutoProcess1 ); }
|
||||
else { FADE_OUT_RETURN( AutoProcess2 ); }
|
||||
if (result)
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_HARDWARE_INFO] = AUTO_PROCESS_RESULT_SUCCESS;
|
||||
FADE_OUT_RETURN( AutoProcess1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_HARDWARE_INFO] = AUTO_PROCESS_RESULT_FAILURE;
|
||||
FADE_OUT_RETURN( AutoProcess2 );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@ -370,8 +370,16 @@ static void* ImportAllOverwriteProcess0(void)
|
||||
// Auto—p
|
||||
if (gAutoFlag)
|
||||
{
|
||||
if (result && sFileNum > 0) { FADE_OUT_RETURN( AutoProcess1 ); }
|
||||
else { FADE_OUT_RETURN( AutoProcess2 ); }
|
||||
if (result && sFileNum > 0)
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_IMPORT_TAD] = AUTO_PROCESS_RESULT_SUCCESS;
|
||||
FADE_OUT_RETURN( AutoProcess1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_IMPORT_TAD] = AUTO_PROCESS_RESULT_FAILURE;
|
||||
FADE_OUT_RETURN( AutoProcess2 );
|
||||
}
|
||||
}
|
||||
|
||||
return ImportProcess1;
|
||||
|
||||
@ -28,33 +28,39 @@
|
||||
#include "cursor.h"
|
||||
#include "keypad.h"
|
||||
|
||||
extern void MakeFullPathForSD(char* file_name, char* full_path);
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Œ^’è‹`
|
||||
マクロ定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#define ROUND_UP(value, alignment) \
|
||||
(((u32)(value) + (alignment-1)) & ~(alignment-1))
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
定数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#define NUM_OF_MENU_SELECT 2
|
||||
#define DOT_OF_MENU_SPACE 16
|
||||
#define CURSOR_ORIGIN_X 32
|
||||
#define CURSOR_ORIGIN_Y 56
|
||||
#define DOT_OF_MENU_SPACE 8
|
||||
#define CHAR_OF_MENU_SPACE 1
|
||||
#define CURSOR_ORIGIN_X 32
|
||||
#define CURSOR_ORIGIN_Y 40
|
||||
|
||||
#define ROUND_UP(value, alignment) \
|
||||
(((u32)(value) + (alignment-1)) & ~(alignment-1))
|
||||
#define FILE_NUM_MAX 16
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
内部変数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
static s8 sMenuSelectNo;
|
||||
static char sFilePath[FILE_NUM_MAX][FS_ENTRY_LONGNAME_MAX];
|
||||
static u8 sFileNum;
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
内部関数宣言
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
static BOOL WriteMcuData(void);
|
||||
static BOOL WriteMcuData(char* full_path);
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
プロセス関数定義
|
||||
@ -72,6 +78,7 @@ static BOOL WriteMcuData(void);
|
||||
|
||||
void* mcuProcess0(void)
|
||||
{
|
||||
FSFile dir;
|
||||
int i;
|
||||
|
||||
// 文字列全クリア
|
||||
@ -81,12 +88,11 @@ void* mcuProcess0(void)
|
||||
kamiFontPrintf(2, 1, FONT_COLOR_BLACK, "Write MCU Data");
|
||||
kamiFontPrintf(0, 2, FONT_COLOR_BLACK, "--------------------------------");
|
||||
|
||||
// ƒ<>ƒjƒ…<C692>[ˆê——
|
||||
kamiFontPrintf(3, 6, FONT_COLOR_BLACK, "+-------------------+-----+");
|
||||
kamiFontPrintf(3, 7, FONT_COLOR_BLACK, "l WRITE MCU DATA l l");
|
||||
kamiFontPrintf(3, 8, FONT_COLOR_BLACK, "+-------------------+-----+");
|
||||
kamiFontPrintf(3, 9, FONT_COLOR_BLACK, "l RETURN l l");
|
||||
kamiFontPrintf(3, 10, FONT_COLOR_BLACK, "+-------------------+-----+");
|
||||
// 配列クリア
|
||||
MI_CpuClear8( sFilePath, sizeof(sFilePath) );
|
||||
|
||||
// ファイル数初期化
|
||||
sFileNum = 0;
|
||||
|
||||
// 背景全クリア
|
||||
for (i=0;i<24;i++)
|
||||
@ -99,6 +105,69 @@ void* mcuProcess0(void)
|
||||
kamiFontFillChar( 1, BG_COLOR_GRAY, BG_COLOR_GRAY );
|
||||
kamiFontFillChar( 2, BG_COLOR_GRAY, BG_COLOR_TRANS );
|
||||
|
||||
// SDカードのルートディレクトリを検索
|
||||
if ( !FS_OpenDirectory(&dir, "sdmc:/", FS_FILEMODE_R | FS_FILEMODE_W) )
|
||||
{
|
||||
OS_Printf("Error FS_OpenDirectory(sdmc:/)\n");
|
||||
kamiFontPrintf(3, 13, FONT_COLOR_BLACK, "Error FS_OpenDirectory(sdmc:/)");
|
||||
}
|
||||
else
|
||||
{
|
||||
FSDirectoryEntryInfo info[1];
|
||||
OS_Printf("[%s]:\n", "sdmc:/");
|
||||
|
||||
kamiFontPrintfConsole(CONSOLE_ORANGE, "------ hex file list -----\n");
|
||||
|
||||
// .hex を探してファイル名を保存しておく
|
||||
while (FS_ReadDirectory(&dir, info))
|
||||
{
|
||||
OS_Printf(" %s", info->longname);
|
||||
if ((info->attributes & (FS_ATTRIBUTE_DOS_DIRECTORY | FS_ATTRIBUTE_IS_DIRECTORY)) != 0)
|
||||
{
|
||||
OS_Printf("/\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
char* pExtension;
|
||||
OS_Printf(" (%d BYTEs)\n", info->filesize);
|
||||
|
||||
// 拡張子のチェック
|
||||
pExtension = STD_SearchCharReverse( info->longname, '.');
|
||||
if (pExtension)
|
||||
{
|
||||
if (!STD_CompareString( pExtension, ".hex") || !STD_CompareString( pExtension, ".HEX"))
|
||||
{
|
||||
STD_CopyString( sFilePath[sFileNum], info->longname );
|
||||
kamiFontPrintfConsole(CONSOLE_ORANGE, "%d:%s\n", sFileNum, info->longname);
|
||||
|
||||
// 最大16個で終了
|
||||
if (++sFileNum >= FILE_NUM_MAX)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
(void)FS_CloseDirectory(&dir);
|
||||
|
||||
kamiFontPrintfConsole(CONSOLE_ORANGE, "--------------------------\n");
|
||||
}
|
||||
|
||||
// メニュー一覧
|
||||
kamiFontPrintf((s16)3, (s16)4, FONT_COLOR_BLACK, "+--------------------+----+");
|
||||
kamiFontPrintf((s16)3, (s16)(5+sFileNum+1), FONT_COLOR_BLACK, "+--------------------+----+");
|
||||
|
||||
// tad ファイルリストを表示
|
||||
for (i=0;i<sFileNum; i++)
|
||||
{
|
||||
// ファイル名追加
|
||||
kamiFontPrintf((s16)3, (s16)(5+CHAR_OF_MENU_SPACE*i), FONT_COLOR_BLACK, "l %-16.16s l l", sFilePath[i]);
|
||||
}
|
||||
|
||||
// 最後にリターンを追加
|
||||
kamiFontPrintf((s16)3, (s16)(5+CHAR_OF_MENU_SPACE*sFileNum), FONT_COLOR_BLACK, "l RETURN l l");
|
||||
|
||||
// カーソル消去
|
||||
SetCursorPos((u16)200, (u16)200);
|
||||
|
||||
@ -117,7 +186,6 @@ void* mcuProcess0(void)
|
||||
|
||||
void* mcuProcess1(void)
|
||||
{
|
||||
/*
|
||||
#ifndef NAND_INITIALIZER_LIMITED_MODE
|
||||
// オート実行用
|
||||
if (gAutoFlag)
|
||||
@ -126,16 +194,15 @@ void* mcuProcess1(void)
|
||||
return mcuProcess2;
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
|
||||
// 選択メニューの変更
|
||||
if ( kamiPadIsRepeatTrigger(PAD_KEY_UP) )
|
||||
{
|
||||
if (--sMenuSelectNo < 0) sMenuSelectNo = NUM_OF_MENU_SELECT -1;
|
||||
if (--sMenuSelectNo < 0) sMenuSelectNo = (s8)sFileNum;
|
||||
}
|
||||
else if ( kamiPadIsRepeatTrigger(PAD_KEY_DOWN) )
|
||||
{
|
||||
if (++sMenuSelectNo >= NUM_OF_MENU_SELECT) sMenuSelectNo = 0;
|
||||
if (++sMenuSelectNo > sFileNum) sMenuSelectNo = 0;
|
||||
}
|
||||
|
||||
// カーソル配置
|
||||
@ -168,33 +235,50 @@ void* mcuProcess1(void)
|
||||
void* mcuProcess2(void)
|
||||
{
|
||||
BOOL result;
|
||||
char full_path[FS_ENTRY_LONGNAME_MAX+6];
|
||||
|
||||
switch( sMenuSelectNo )
|
||||
if (STD_GetStringLength(sFilePath[sMenuSelectNo]))
|
||||
{
|
||||
case 0:
|
||||
result = WriteMcuData();
|
||||
if (result)
|
||||
{
|
||||
kamiFontPrintf(25, 7, FONT_COLOR_GREEN, "OK");
|
||||
}
|
||||
else
|
||||
{
|
||||
kamiFontPrintf(25, 7, FONT_COLOR_RED, "NG");
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
FADE_OUT_RETURN( TopmenuProcess0 );
|
||||
kamiFontPrintf((s16)26, (s16)(5+sMenuSelectNo*CHAR_OF_MENU_SPACE), FONT_COLOR_BLACK, "WAIT");
|
||||
kamiFontLoadScreenData();
|
||||
|
||||
// .hexのフルパスを作成
|
||||
MakeFullPathForSD(sFilePath[sMenuSelectNo], full_path);
|
||||
result = WriteMcuData(full_path);
|
||||
}
|
||||
/*
|
||||
else
|
||||
{
|
||||
if (gAutoFlag) { FADE_OUT_RETURN( AutoProcess2 ); }
|
||||
else { FADE_OUT_RETURN( TopmenuProcess0 ); }
|
||||
}
|
||||
|
||||
// 今回の結果を表示
|
||||
if ( result == TRUE )
|
||||
{
|
||||
kamiFontPrintf((s16)26, (s16)(5+sMenuSelectNo*CHAR_OF_MENU_SPACE), FONT_COLOR_GREEN, "OK");
|
||||
}
|
||||
else
|
||||
{
|
||||
kamiFontPrintf((s16)26, (s16)(5+sMenuSelectNo*CHAR_OF_MENU_SPACE), FONT_COLOR_RED, "NG");
|
||||
}
|
||||
|
||||
#ifndef NAND_INITIALIZER_LIMITED_MODE
|
||||
// Auto用
|
||||
if (gAutoFlag)
|
||||
{
|
||||
if (result) { FADE_OUT_RETURN( AutoProcess1 ); }
|
||||
else { FADE_OUT_RETURN( AutoProcess2); }
|
||||
if (result)
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_MCU] = AUTO_PROCESS_RESULT_SUCCESS;
|
||||
FADE_OUT_RETURN( AutoProcess1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_MCU] = AUTO_PROCESS_RESULT_FAILURE;
|
||||
FADE_OUT_RETURN( AutoProcess2);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
|
||||
return mcuProcess1;
|
||||
}
|
||||
|
||||
@ -202,7 +286,7 @@ void* mcuProcess2(void)
|
||||
処理関数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
static BOOL WriteMcuData(void)
|
||||
static BOOL WriteMcuData(char* full_path)
|
||||
{
|
||||
FSFile file;
|
||||
BOOL open_is_ok;
|
||||
@ -214,10 +298,10 @@ static BOOL WriteMcuData(void)
|
||||
|
||||
// ROMファイルオープン
|
||||
FS_InitFile(&file);
|
||||
open_is_ok = FS_OpenFile(&file, MCU_DATA_FILE_PATH_IN_ROM);
|
||||
open_is_ok = FS_OpenFile(&file, full_path);
|
||||
if (!open_is_ok)
|
||||
{
|
||||
OS_Printf("FS_OpenFile(\"%s\") ... ERROR!\n", MCU_DATA_FILE_PATH_IN_ROM);
|
||||
OS_Printf("FS_OpenFile(\"%s\") ... ERROR!\n", full_path);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -230,7 +314,7 @@ static BOOL WriteMcuData(void)
|
||||
read_is_ok = FS_ReadFile( &file, pTempBuf, (s32)file_size );
|
||||
if (!read_is_ok)
|
||||
{
|
||||
kamiFontPrintfConsoleEx(CONSOLE_RED, "FS_ReadFile(\"%s\") ... ERROR!\n", MCU_DATA_FILE_PATH_IN_ROM);
|
||||
kamiFontPrintfConsoleEx(CONSOLE_RED, "FS_ReadFile(\"%s\") ... ERROR!\n", full_path);
|
||||
FS_CloseFile(&file);
|
||||
OS_Free(pTempBuf);
|
||||
return FALSE;
|
||||
|
||||
@ -39,9 +39,6 @@
|
||||
マクロ定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
// NANDファーム書き込みの際にNVRAMの未割り当て領域+予約領域を0クリアする場合は定義します(開発用)
|
||||
//#define CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL
|
||||
|
||||
#define ROUND_UP(value, alignment) \
|
||||
(((u32)(value) + (alignment-1)) & ~(alignment-1))
|
||||
|
||||
@ -56,16 +53,6 @@
|
||||
|
||||
#define FILE_NUM_MAX 16
|
||||
|
||||
#define NAND_BLOCK_BYTE 0x200
|
||||
#define NAND_FIRM_START_OFFSET 0x200
|
||||
|
||||
#define NVRAM_PAGE_SIZE 0x100
|
||||
#define NVRAM_NORFIRM_RESERVED_ADDRESS 0x200
|
||||
#define NVRAM_NORFIRM_NANDBOOT_FLAG_OFFSET 0xff
|
||||
#define NVRAM_NORFIRM_NANDBOOT_FLAG 0x80
|
||||
|
||||
#define NVRAM_NON_ASIGNED_AREA_ADDRESS 0x300
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
内部変数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
@ -73,14 +60,12 @@
|
||||
static s32 sMenuSelectNo;
|
||||
static char sFilePath[FILE_NUM_MAX][FS_ENTRY_LONGNAME_MAX];
|
||||
static u8 sFileNum;
|
||||
static u8 sNvramPageSizeBuffer[NVRAM_PAGE_SIZE] ATTRIBUTE_ALIGN(32); // ARM7からアクセスするためスタックでは駄目
|
||||
static u32 sReservedAreaEndAddress;
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
内部関数宣言
|
||||
ŠÖ<EFBFBD>”<EFBFBD>錾
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
static void MakeFullPathForSD(char* file_name, char* full_path);
|
||||
void MakeFullPathForSD(char* file_name, char* full_path);
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
プロセス関数定義
|
||||
@ -280,8 +265,16 @@ void* NandfirmProcess2(void)
|
||||
// Auto用
|
||||
if (gAutoFlag)
|
||||
{
|
||||
if (ret) { FADE_OUT_RETURN( AutoProcess1 ); }
|
||||
else { FADE_OUT_RETURN( AutoProcess2 ); }
|
||||
if (ret)
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_IMPORT_NANDFIRM] = AUTO_PROCESS_RESULT_SUCCESS;
|
||||
FADE_OUT_RETURN( AutoProcess1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
gAutoProcessResult[AUTO_PROCESS_MENU_IMPORT_NANDFIRM] = AUTO_PROCESS_RESULT_FAILURE;
|
||||
FADE_OUT_RETURN( AutoProcess2 );
|
||||
}
|
||||
}
|
||||
|
||||
return NandfirmProcess1;
|
||||
@ -300,7 +293,7 @@ void* NandfirmProcess2(void)
|
||||
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void MakeFullPathForSD(char* file_name, char* full_path)
|
||||
void MakeFullPathForSD(char* file_name, char* full_path)
|
||||
{
|
||||
// フルパスを作成
|
||||
STD_CopyString( full_path, "sdmc:/" );
|
||||
|
||||
Loading…
Reference in New Issue
Block a user