mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・MachineSetting.cにリセット処理を暫定的に追加(動作正常化後に別途ライブラリ化予定)
・bootAPI.cを最新版rebootライブラリに対応(古いrebootライブラリではビルド通りません) ・hyenaのHot/Coldスタート判定の最初でマイコンフリーレジスタの値を取得しにいくように変更 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@278 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
143a61fbd7
commit
7b7a3f0265
@ -193,6 +193,19 @@ TwlSpMain(void)
|
||||
// Hot/Coldスタート判定およびリセットパラメータのリード
|
||||
static void ReadResetParameter( void )
|
||||
{
|
||||
MCU_GetFreeRegisters( 0, (u8 *)HW_RESET_PARAMETER_BUF, 1 );
|
||||
|
||||
/*
|
||||
// ダイレクトブート用設定のテストコード
|
||||
u8 data = 1;
|
||||
SYSMi_GetMCUFreeRegisterValue() = data; // マイコンフリーレジスタ取得場所にホットスタートフラグをセット
|
||||
SYSMi_GetResetParamAddr()->body.v1.bootTitleID = 0x000100015445534d;
|
||||
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 );
|
||||
*/
|
||||
|
||||
// Hot/Coldスタート判定
|
||||
#ifdef SDK_FINALROM
|
||||
if( SYSMi_GetMCUFreeRegisterValue() == 0 ) // マイコンフリーレジスタ値が"0"ならColdスタート
|
||||
@ -201,7 +214,7 @@ static void ReadResetParameter( void )
|
||||
#endif
|
||||
{
|
||||
u8 data = 1;
|
||||
MCU_SetFreeRegisters( 0, &data, 1 ); // マイコンフリーレジスタにホットスタートフラグをセット
|
||||
MCU_SetFreeRegisters( 0, &data, 1 );
|
||||
SYSMi_GetWork()->isHotStart = FALSE;
|
||||
}else {
|
||||
SYSMi_GetWork()->isHotStart = TRUE;
|
||||
@ -210,7 +223,7 @@ static void ReadResetParameter( void )
|
||||
SYSM_RESET_PARAM_MAGIC_CODE,
|
||||
SYSM_RESET_PARAM_MAGIC_CODE_LEN ) == 0 ) &&
|
||||
( SYSMi_GetResetParamAddr()->header.bodyLength > 0 ) &&
|
||||
( SVC_GetCRC16( 65535, &SYSMi_GetResetParamAddr()->body, SYSMi_GetResetParamAddr()->header.bodyLength ) )
|
||||
( SYSMi_GetResetParamAddr()->header.crc16 == SVC_GetCRC16( 65535, &SYSMi_GetResetParamAddr()->body, SYSMi_GetResetParamAddr()->header.bodyLength ) )
|
||||
) {
|
||||
// リセットパラメータが有効なら、ワークに退避
|
||||
MI_CpuCopy32 ( SYSMi_GetResetParamAddr(), &SYSMi_GetWork()->resetParam, sizeof(ResetParam) );
|
||||
|
||||
@ -77,7 +77,8 @@ BOOL BOOT_WaitStart( void )
|
||||
HW_PXI_SIGNAL_PARAM_ARM9, HW_MAIN_MEM_SYSTEM_END - HW_PXI_SIGNAL_PARAM_ARM9,
|
||||
NULL
|
||||
};
|
||||
OS_Boot( (void *)*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x34), clr_list );
|
||||
// [TODO]起動するターゲットの種類を指定する必要あり
|
||||
OS_Boot( (void *)*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x34), clr_list, REBOOT_TARGET_NAND_APP);
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
@ -102,7 +102,8 @@ void BOOT_Ready( void )
|
||||
//HW_DTCM, HW_DTCM_SIZE,
|
||||
NULL
|
||||
};
|
||||
OS_Boot( (void *)*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x24), clr_list );
|
||||
// [TODO]起動するターゲットの種類を指定する必要あり
|
||||
OS_Boot( (void *)*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x24), clr_list, REBOOT_TARGET_NAND_APP );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -182,6 +182,19 @@ void MachineSettingInit( void )
|
||||
g_pNowProcess = MachineSettingMain;
|
||||
}
|
||||
|
||||
static void ResetHardware( NAMTitleId id, BootFlags *flag)
|
||||
{
|
||||
// リセットパラメータの設定
|
||||
SYSMi_GetResetParamAddr()->body.v1.bootTitleID = id;
|
||||
//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 );
|
||||
|
||||
// リセット命令発行
|
||||
PM_ForceToResetHardware();
|
||||
}
|
||||
|
||||
// メインメニュー
|
||||
int MachineSettingMain( void )
|
||||
@ -206,11 +219,10 @@ int MachineSettingMain( void )
|
||||
tp_select = SelectMenuByTP( &s_csr, &s_settingParam );
|
||||
DrawMenu( s_csr, &s_settingParam );
|
||||
|
||||
#if 0
|
||||
if( pad.trg & PAD_BUTTON_START ) {
|
||||
PM_ForceToResetHardware();
|
||||
BootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0};
|
||||
ResetHardware(NULL, &tempflag);
|
||||
}
|
||||
#endif
|
||||
|
||||
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐
|
||||
if( s_settingPos[ s_csr ].enable ) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user