From 2c2df79b504b0d50f3bd61d8fe98fe6441ce430d Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Wed, 28 Nov 2007 08:40:13 +0000 Subject: [PATCH] =?UTF-8?q?=E6=A4=9C=E8=A8=BC=E7=94=A81st?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/branches/20071128_hardware_reset@280 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/components/hyena.TWL/src/main.c | 8 +++- build/systemMenu_RED/Launcher/ARM9/src/main.c | 37 +++++++++++++++++++ .../MachineSettings/ARM9/src/MachineSetting.c | 10 ++++- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/build/components/hyena.TWL/src/main.c b/build/components/hyena.TWL/src/main.c index f1987024..182be191 100644 --- a/build/components/hyena.TWL/src/main.c +++ b/build/components/hyena.TWL/src/main.c @@ -93,6 +93,12 @@ void TwlSpMain(void) { OSHeapHandle heapHandle; + + { + SCFG_SetJtagControl(TRUE,TRUE,FALSE);//JTAG Enable + //*((u32 *)0x04000300) = 2; + while(1){} + } // SYSMワークのクリア MI_CpuClear32( SYSMi_GetWork(), sizeof(SYSM_work) ); @@ -231,7 +237,7 @@ static void ReadResetParameter( void ) } } // メインメモリのリセットパラメータをクリアしておく - MI_CpuClear32( SYSMi_GetResetParamAddr(), 0x100 ); + // MI_CpuClear32( SYSMi_GetResetParamAddr(), 0x100 ); } diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index ac5b9bed..02093a62 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -34,6 +34,17 @@ static TitleProperty s_titleList[ LAUNCHER_TITLE_LIST_NUM ]; // const data------------------------------------------------------------------ +#include +#include +static void ResetHardware( void ) +{ + // リセット命令発行 + PM_ForceToResetHardware(); + OS_Terminate(); +} +#include +#include + // メイン void TwlMain( void ) { @@ -53,6 +64,19 @@ void TwlMain( void ) OSTick start, end = 0; BOOL direct_boot = FALSE; + // デバグ用 + ResetParam debugresetparam; + ResetParam debugresetparam2; + MI_CpuCopy32 ( SYSMi_GetResetParamAddr(), &debugresetparam, sizeof(ResetParam) ); + + /* + SYSMi_GetResetParamAddr()->body.v1.bootTitleID = 0x000100015445534d; + MI_CpuCopyFast( SYSM_RESET_PARAM_MAGIC_CODE, (char *)&SYSMi_GetResetParamAddr()->header.magicCode, SYSM_RESET_PARAM_MAGIC_CODE_LEN); + DC_FlushAll(); + DC_WaitWriteBufferEmpty( ); + MI_CpuCopy32 ( SYSMi_GetResetParamAddr(), &debugresetparam2, sizeof(ResetParam) ); + */ + // システムメニュー初期化---------- SYSM_Init( Alloc, Free ); // OS_Initの前でコール。 @@ -137,8 +161,21 @@ void TwlMain( void ) if( pBootTitle ) { state = LOAD_START; } + PrintfSJIS( 30, 122, TXT_COLOR_RED, "magicCode:%c%c%c%c", ((char *)(&debugresetparam.header.magicCode))[0], + ((char *)(&debugresetparam.header.magicCode))[1], + ((char *)(&debugresetparam.header.magicCode))[2], + ((char *)(&debugresetparam.header.magicCode))[3] ); + PrintfSJIS( 30, 134, TXT_COLOR_RED, "bootTitleID:0x%llx", debugresetparam.body.v1.bootTitleID ); break; case LOAD_START: + + SYSMi_GetResetParamAddr()->body.v1.bootTitleID = 0x000100015445534d; + MI_CpuCopyFast( SYSM_RESET_PARAM_MAGIC_CODE, (char *)&SYSMi_GetResetParamAddr()->header.magicCode, SYSM_RESET_PARAM_MAGIC_CODE_LEN); + DC_FlushAll(); + DC_WaitWriteBufferEmpty(); + // デバグ用 never return. + ResetHardware(); + SYSM_StartLoadTitle( pBootTitle ); state = LOADING; diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c b/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c index 9e8d7a7d..633a132e 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c @@ -182,19 +182,27 @@ void MachineSettingInit( void ) g_pNowProcess = MachineSettingMain; } +#include +#include static void ResetHardware( NAMTitleId id, BootFlags *flag) { + /* // リセットパラメータの設定 - SYSMi_GetResetParamAddr()->body.v1.bootTitleID = id; + SYSMi_GetResetParamAddr()->body.v1.bootTitleID = 0x1234567887654321; //SYSMi_GetResetParamAddr()->body.v1.flags = *flag; SYSMi_GetResetParamAddr()->body.v1.flags = (BootFlags){TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0}; MI_CpuCopyFast( SYSM_RESET_PARAM_MAGIC_CODE, (char *)&SYSMi_GetResetParamAddr()->header.magicCode, SYSM_RESET_PARAM_MAGIC_CODE_LEN); SYSMi_GetResetParamAddr()->header.bodyLength = sizeof(ResetParamBody); SYSMi_GetResetParamAddr()->header.crc16 = SVC_GetCRC16( 65535, &SYSMi_GetResetParamAddr()->body, SYSMi_GetResetParamAddr()->header.bodyLength ); + DC_FlushAll(); + */ // リセット命令発行 PM_ForceToResetHardware(); + OS_Terminate(); } +#include +#include // メインメニュー int MachineSettingMain( void )