暫定的にhotswライブラリからランチャー側にISデバッガエミュレーション情報を引き渡して、

デバッガ動作ならダイレクトカードブートするよう実装。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@473 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2008-01-16 08:54:21 +00:00
parent 0a1bc0a0aa
commit 4e8d22691b
4 changed files with 46 additions and 14 deletions

View File

@ -364,6 +364,10 @@ BOOL HOTSW_Boot(void)
OS_ReleaseLockID( s_cbData.lockID ); OS_ReleaseLockID( s_cbData.lockID );
OS_TPrintf( "Load Card Time : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) ); OS_TPrintf( "Load Card Time : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
// [TODO:]暫定処置。ちゃんとした流れでLauncher側に渡すようにする。
MI_CpuCopy8( HOTSW_GetRomEmulationBuffer(), &SYSMi_GetWork()->romEmuInfo, ROM_EMULATION_DATA_SIZE );
SYSMi_GetWork()->isOnDebugger = s_cbData.debuggerFlg;
#ifdef DEBUG_USED_CARD_SLOT_B_ #ifdef DEBUG_USED_CARD_SLOT_B_
SYSMi_GetWork()->is1stCardChecked = TRUE; SYSMi_GetWork()->is1stCardChecked = TRUE;

View File

@ -165,7 +165,7 @@ TitleProperty *SYSM_ReadParameters( void )
SVC_WaitByLoop( 0x1000 ); SVC_WaitByLoop( 0x1000 );
} }
#endif #endif
//----------------------------------------------------- //-----------------------------------------------------
// リセットパラメータの判定リセットパラメータが有効かどうかは、ARM7でやってくれている // リセットパラメータの判定リセットパラメータが有効かどうかは、ARM7でやってくれている
//----------------------------------------------------- //-----------------------------------------------------
@ -232,26 +232,29 @@ TitleProperty *SYSM_ReadParameters( void )
// ショートカット起動のチェック // ショートカット起動のチェック
static TitleProperty *SYSMi_CheckShortcutBoot( void ) static TitleProperty *SYSMi_CheckShortcutBoot( void )
{ {
#if 0 // <20>¦¢ŽÀ
static TitleProperty s_bootTitle; static TitleProperty s_bootTitle;
MI_CpuClear8( &s_bootTitle, sizoef(TitleProperty) ); MI_CpuClear8( &s_bootTitle, sizeof(TitleProperty) );
//----------------------------------------------------- //-----------------------------------------------------
// ISデバッガ起動 or
// 量産工程用ショートカットキー or // 量産工程用ショートカットキー or
// 検査カード起動 // 検査カード起動
//----------------------------------------------------- //-----------------------------------------------------
if( SYSM_IsInspectCard() || if( SYSM_IsExistCard() ) {
( SYSM_IsExistCard() && if( ( SYSMi_GetWork()->isOnDebugger && // ISデバッガが有効かつJTAGがまだ有効でない時
( ( PAD_Read() & PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) == !( *(u8 *)( HW_SYS_CONF_BUF + HWi_WSYS09_OFFSET ) & HWi_WSYS09_JTAG_CPUJE_MASK ) ) ||
PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) ) SYSM_IsInspectCard() ||
) { ( ( PAD_Read() & PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) ==
if( SYSM_GetCardTitleProperty( &s_bootTitle ) ) { // <20>¦¢ŽÀ PAD_PRODUCTION_SHORTCUT_CARD_BOOT )
) {
s_bootTitle.flags.isAppRelocate = TRUE;
s_bootTitle.flags.isAppLoadCompleted = TRUE;
s_bootTitle.flags.isInitialShortcutSkip = TRUE; // 初回起動シーケンスを飛ばす s_bootTitle.flags.isInitialShortcutSkip = TRUE; // 初回起動シーケンスを飛ばす
s_bootTitle.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす s_bootTitle.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす
s_bootTitle.flags.media = TITLE_MEDIA_CARD; s_bootTitle.flags.media = TITLE_MEDIA_CARD;
s_bootTitle.flags.isValid = TRUE; s_bootTitle.flags.isValid = TRUE;
s_bootTitle.titleID = xxxx; s_bootTitle.titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo );
SYSM_SetLogoDemoSkip( TRUE ); SYSM_SetLogoDemoSkip( TRUE );
return &s_bootTitle; return &s_bootTitle;
} }
@ -260,6 +263,7 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void )
//----------------------------------------------------- //-----------------------------------------------------
// TWL設定データ未入力時の初回起動シーケンス起動 // TWL設定データ未入力時の初回起動シーケンス起動
//----------------------------------------------------- //-----------------------------------------------------
#if 0
#ifdef ENABLE_INITIAL_SETTINGS_ #ifdef ENABLE_INITIAL_SETTINGS_
if( !TSD_IsSetTP() || if( !TSD_IsSetTP() ||
!TSD_IsSetLanguage() || !TSD_IsSetLanguage() ||
@ -272,8 +276,8 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void )
return &s_bootTitle; return &s_bootTitle;
} }
#endif // ENABLE_INITIAL_SETTINGS_ #endif // ENABLE_INITIAL_SETTINGS_
#endif
#endif // 0
return NULL; // 「ブート内容未定」でリターン return NULL; // 「ブート内容未定」でリターン
} }

View File

@ -77,8 +77,9 @@ void TwlMain( void )
TP_Init(); TP_Init();
RTC_Init(); RTC_Init();
SND_Init();// sound init SND_Init();// sound init
OS_TPrintf( "SYSM_work size = 0x%x\n", sizeof(SYSM_work) );
// 割り込み許可-------------------- // 割り込み許可--------------------
(void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank);
(void)OS_EnableIrqMask(OS_IE_V_BLANK); (void)OS_EnableIrqMask(OS_IE_V_BLANK);

View File

@ -46,6 +46,29 @@ typedef struct TitleID_HiLo {
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// データ型定義 // データ型定義
//---------------------------------------------------------------------- //----------------------------------------------------------------------
#define ISD_ROM_EMULATION_INFO_SIZE 0x20 // ROMエミュレーションデータサイズ
#define ISD_ROM_EMULATION_INFO_MAGIC_CODE 0x444c5754
// ISデバッガROMエミュレーション情報
typedef struct ISD_RomEmuInfo {
// マジックコードISD_ROM_EMULATION_INFO_MAGIC_CODEの固定値
u32 magic_code;
// フラグ類
u32 isEnableSlot1 : 1;
u32 isEnableSlot2 : 1;
u32 bootSlotNo : 2;
u32 isEnableExMainMemory : 1;
u32 isBootMachineSettings : 1;
u32 isBootSpecifiedNANDApp : 1;
u32 isForceNTRMode : 1;
u32 isForceBannerViewMode : 1;
u32 rsv_flags : 23;
// isBootSpecifiedNANDAppで起動するアプリのTitleID
u64 titleID;
// 予約
u8 rsv[ 0x10 ];
}ISD_RomEmuInfo;
// SYSM共有ワーク構造体 // SYSM共有ワーク構造体
typedef struct SYSM_work { typedef struct SYSM_work {
@ -78,6 +101,7 @@ typedef struct SYSM_work {
u32 nCardID; // カードID u32 nCardID; // カードID
LauncherParam launcherParam; LauncherParam launcherParam;
ISD_RomEmuInfo romEmuInfo;
// NTR-IPL2のレガシー 最終的には消すと思う // NTR-IPL2のレガシー 最終的には消すと思う
BOOL enableCardNormalOnly; BOOL enableCardNormalOnly;
@ -120,7 +144,6 @@ typedef struct SDKBootCheckInfo{
// カードROMヘッダワークの取得 // カードROMヘッダワークの取得
#define SYSM_GetCardRomHeader() ( (ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF ) #define SYSM_GetCardRomHeader() ( (ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF )
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif