mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・SDKリビジョン3243に対応。(多分大丈夫のはず)
esライブラリをeseではなくBroadOnの正式版を使用するようにする。 ・ドキュメント更新。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@396 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
90c67b36a5
commit
2e49f54eb1
@ -91,7 +91,7 @@ MAKETAD ?= $(TWLSDK_ROOT)/tools/bin/makeTad.pl
|
||||
|
||||
### Global Library resettings
|
||||
|
||||
GINCLUDES := $(SYSMENU_INCDIR) $(GINCLUDES) $(ES_ROOT)/include
|
||||
GINCLUDES := $(SYSMENU_INCDIR) $(GINCLUDES) $(ES_ROOT)/twl/include
|
||||
GLIBRARY_DIRS := $(SYSMENU_LIBDIR) $(GLIBRARY_DIRS)
|
||||
GLIBRARIES := $(SYSMENU_LIBS) $(GLIBRARIES)
|
||||
|
||||
|
||||
@ -25,7 +25,7 @@ include $(NITROSYSTEM_ROOT)/build/buildtools/modulerules
|
||||
|
||||
|
||||
%.tad: $(BINDIR)/$(TARGET_BIN)
|
||||
$(MAKETAD) $< $@
|
||||
$(MAKETAD) $< -o $@
|
||||
|
||||
# .rbin
|
||||
$(BINDIR)/$(TARGET_BIN_BASENAME).rbin: $(OBJS)
|
||||
|
||||
@ -68,7 +68,7 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void SetSCFGWork( void );
|
||||
static void ResetRTC( void );
|
||||
static void ReadResetParameter( void );
|
||||
static void ReadLauncherParameter( void );
|
||||
static void PrintDebugInfo(void);
|
||||
static OSHeapHandle InitializeAllocateSystem(void);
|
||||
static void InitializeFatfs(void);
|
||||
@ -111,8 +111,8 @@ TwlSpMain(void)
|
||||
OS_InitTick();
|
||||
PrintDebugInfo();
|
||||
|
||||
// Cold/Hotスタート判定
|
||||
ReadResetParameter();
|
||||
// ランチャーパラメター取得(Cold/Hotスタート判定含む)
|
||||
ReadLauncherParameter();
|
||||
|
||||
// RTCリセット
|
||||
ResetRTC(); // 330usくらい
|
||||
@ -249,14 +249,14 @@ static void ResetRTC( void )
|
||||
}
|
||||
|
||||
|
||||
// Hot/Coldスタート判定およびリセットパラメータのリード
|
||||
void ReadResetParameter( void )
|
||||
// ランチャーパラメータのリードおよびHot/Coldスタート判定
|
||||
void ReadLauncherParameter( void )
|
||||
{
|
||||
BOOL hot;
|
||||
SYSMi_GetWork()->isValidResetParam = OS_ReadResetParameter( (ResetParam *)&(SYSMi_GetWork()->resetParam), &hot );
|
||||
SYSMi_GetWork()->isValidLauncherParam = OS_ReadLauncherParameter( (LauncherParam *)&(SYSMi_GetWork()->launcherParam), &hot );
|
||||
SYSMi_GetWork()->isHotStart = hot;
|
||||
// メインメモリのリセットパラメータをクリアしておく
|
||||
MI_CpuClear32( SYSMi_GetResetParamAddr(), 0x100 );
|
||||
MI_CpuClear32( SYSMi_GetLauncherParamAddr(), 0x100 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -170,13 +170,13 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
// リセットパラメータの判定(リセットパラメータが有効かどうかは、ARM7でやってくれている)
|
||||
//-----------------------------------------------------
|
||||
{
|
||||
if( SYSM_GetResetParamBody()->v1.flags.isLogoSkip || // ロゴデモスキップ?
|
||||
if( SYSM_GetLauncherParamBody()->v1.flags.isLogoSkip || // ロゴデモスキップ?
|
||||
SYSMi_IsDebuggerBannerViewMode() ) {
|
||||
SYSM_SetLogoDemoSkip( TRUE );
|
||||
}
|
||||
|
||||
if( SYSM_GetResetParamBody()->v1.bootTitleID ) { // アプリ直接起動の指定があったらロゴデモを飛ばして指定アプリ起動
|
||||
pBootTitle = (TitleProperty *)&SYSM_GetResetParamBody()->v1;
|
||||
if( SYSM_GetLauncherParamBody()->v1.bootTitleID ) { // アプリ直接起動の指定があったらロゴデモを飛ばして指定アプリ起動
|
||||
pBootTitle = (TitleProperty *)&SYSM_GetLauncherParamBody()->v1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -448,10 +448,10 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
|
||||
}
|
||||
|
||||
|
||||
// リセットパラメータの取得
|
||||
const ResetParamBody *SYSM_GetResetParamBody( void )
|
||||
// ランチャーパラメータの取得
|
||||
const LauncherParamBody *SYSM_GetLauncherParamBody( void )
|
||||
{
|
||||
return (const ResetParamBody *)&SYSMi_GetWork()->resetParam.body;
|
||||
return (const LauncherParamBody *)&SYSMi_GetWork()->launcherParam.body;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -17,12 +17,12 @@
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS = \
|
||||
../../../libraries_sysmenu/reloc_info \
|
||||
../../../libraries_sysmenu/sysmenu \
|
||||
../../../libraries_sysmenu/settings \
|
||||
../../../libraries_sysmenu/boot \
|
||||
../../../libraries_sysmenu/hotsw \
|
||||
../../../components/hyena.TWL
|
||||
# ../../../libraries_sysmenu/reloc_info \
|
||||
# ../../../libraries_sysmenu/sysmenu \
|
||||
# ../../../libraries_sysmenu/settings \
|
||||
# ../../../libraries_sysmenu/boot \
|
||||
# ../../../libraries_sysmenu/hotsw \
|
||||
# ../../../components/hyena.TWL
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -197,7 +197,7 @@ int MachineSettingMain( void )
|
||||
{
|
||||
BOOL tp_select;
|
||||
|
||||
BootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0};
|
||||
LauncherBootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0};
|
||||
|
||||
ReadTP();
|
||||
|
||||
@ -218,7 +218,7 @@ int MachineSettingMain( void )
|
||||
DrawMenu( s_csr, &s_settingParam );
|
||||
|
||||
if( pad.trg & PAD_BUTTON_START ) {
|
||||
OS_SetResetParamAndResetHardware( 0, NULL, &tempflag );
|
||||
OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag );
|
||||
}
|
||||
|
||||
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐
|
||||
@ -250,7 +250,7 @@ int MachineSettingMain( void )
|
||||
break;
|
||||
case 6:
|
||||
//pictochat起動テスト
|
||||
OS_SetResetParamAndResetHardware( 0, 0x0001000150434854, &tempflag );
|
||||
OS_SetLauncherParamAndResetHardware( 0, 0x0001000150434854, &tempflag );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -499,10 +499,10 @@ static void MenuScene(void)
|
||||
MI_CpuCopy8(s_work.parameter, arginfo->buf, 2*(PARAM_LENGTH+1));
|
||||
}
|
||||
//B‹N“®
|
||||
OS_SetResetParamAndResetHardware( 0, 0x00010001434f5042, &tempflag );
|
||||
OS_SetLauncherParamAndResetHardware( 0, 0x00010001434f5042, &tempflag );
|
||||
break;
|
||||
case 2:
|
||||
OS_SetResetParamAndResetHardware( 0, NULL, &tempflag );
|
||||
OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag );
|
||||
//<2F>Ä‹N“®
|
||||
break;
|
||||
}
|
||||
|
||||
@ -157,12 +157,12 @@ static void MenuScene(void)
|
||||
// アプリ専用部分のセット
|
||||
MI_CpuCopy8("-r", arginfo->buf, 3);
|
||||
//呼び出し元アプリ起動
|
||||
OS_SetResetParamAndResetHardware( 0, (u64)0x0001000100000000 + invGameCode, &tempflag );
|
||||
//OS_SetResetParamAndResetHardware( 0, (u64)0x00010001434f5041, &tempflag );
|
||||
OS_SetLauncherParamAndResetHardware( 0, (u64)0x0001000100000000 + invGameCode, &tempflag );
|
||||
//OS_SetLauncherParamAndResetHardware( 0, (u64)0x00010001434f5041, &tempflag );
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
OS_SetResetParamAndResetHardware( 0, NULL, &tempflag );
|
||||
OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag );
|
||||
//再起動
|
||||
break;
|
||||
}
|
||||
|
||||
@ -499,10 +499,10 @@ static void MenuScene(void)
|
||||
MI_CpuCopy8(s_work.parameter, arginfo->buf, 2*(PARAM_LENGTH+1));
|
||||
}
|
||||
//B‹N“®
|
||||
OS_SetResetParamAndResetHardware( 0, 0x00010001434f5042, &tempflag );
|
||||
OS_SetLauncherParamAndResetHardware( 0, 0x00010001434f5042, &tempflag );
|
||||
break;
|
||||
case 2:
|
||||
OS_SetResetParamAndResetHardware( 0, NULL, &tempflag );
|
||||
OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag );
|
||||
//<2F>Ä‹N“®
|
||||
break;
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@
|
||||
内部関数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void SetSCFGWork( void );
|
||||
static void ReadResetParameter( void );
|
||||
static void ReadLauncherParameter( void );
|
||||
static void PrintDebugInfo(void);
|
||||
static OSHeapHandle InitializeAllocateSystem(void);
|
||||
static void InitializeFatfs(void);
|
||||
@ -119,7 +119,7 @@ TwlSpMain(void)
|
||||
ReadUserInfo();
|
||||
|
||||
// Cold/Hotスタート判定
|
||||
ReadResetParameter();
|
||||
ReadLauncherParameter();
|
||||
|
||||
// [TODO:] カード電源ONして、ROMヘッダのみリード&チェックくらいはやっておきたい
|
||||
|
||||
@ -222,11 +222,11 @@ static BOOL IsEnableJTAG( void )
|
||||
return value ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
// Hot/Coldスタート判定およびリセットパラメータのリード
|
||||
// ランチャーパラメータのリードおよびHot/Coldスタート判定
|
||||
#define MCU_RESET_VALUE_BUF_ENABLE_MASK 0x80000000
|
||||
#define MCU_RESET_VALUE_OFS 0
|
||||
#define MCU_RESET_VALUE_LEN 1
|
||||
void ReadResetParameter( void )
|
||||
void ReadLauncherParameter( void )
|
||||
{
|
||||
if( ( *(u32 *)HW_RESET_PARAMETER_BUF & MCU_RESET_VALUE_BUF_ENABLE_MASK ) == 0 ) {
|
||||
(void)MCU_GetFreeRegisters( MCU_RESET_VALUE_OFS, (u8 *)HW_RESET_PARAMETER_BUF, MCU_RESET_VALUE_LEN );
|
||||
@ -240,20 +240,20 @@ void ReadResetParameter( void )
|
||||
SYSMi_GetWork()->isHotStart = FALSE;
|
||||
}else {
|
||||
SYSMi_GetWork()->isHotStart = TRUE;
|
||||
// リセットパラメータ有効判定
|
||||
if( ( STD_StrNCmp( (const char *)&SYSMi_GetResetParamAddr()->header.magicCode,
|
||||
SYSM_RESET_PARAM_MAGIC_CODE,
|
||||
SYSM_RESET_PARAM_MAGIC_CODE_LEN ) == 0 ) &&
|
||||
( SYSMi_GetResetParamAddr()->header.bodyLength > 0 ) &&
|
||||
( SYSMi_GetResetParamAddr()->header.crc16 == SVC_GetCRC16( 65535, &SYSMi_GetResetParamAddr()->body, SYSMi_GetResetParamAddr()->header.bodyLength ) )
|
||||
// ランチャーパラメータ有効判定
|
||||
if( ( STD_StrNCmp( (const char *)&SYSMi_GetLauncherParamAddr()->header.magicCode,
|
||||
SYSM_LAUNCHER_PARAM_MAGIC_CODE,
|
||||
SYSM_LAUNCHER_PARAM_MAGIC_CODE_LEN ) == 0 ) &&
|
||||
( SYSMi_GetLauncherParamAddr()->header.bodyLength > 0 ) &&
|
||||
( SYSMi_GetLauncherParamAddr()->header.crc16 == SVC_GetCRC16( 65535, &SYSMi_GetLauncherParamAddr()->body, SYSMi_GetLauncherParamAddr()->header.bodyLength ) )
|
||||
) {
|
||||
// リセットパラメータが有効なら、ワークに退避
|
||||
MI_CpuCopy32 ( SYSMi_GetResetParamAddr(), &SYSMi_GetWork()->resetParam, sizeof(ResetParam) );
|
||||
SYSMi_GetWork()->isValidResetParam = TRUE;
|
||||
// ランチャーパラメータが有効なら、ワークに退避
|
||||
MI_CpuCopy32 ( SYSMi_GetLauncherParamAddr(), &SYSMi_GetWork()->launcherParam, sizeof(LauncherParam) );
|
||||
SYSMi_GetWork()->isValidLauncherParam = TRUE;
|
||||
}
|
||||
}
|
||||
// メインメモリのリセットパラメータをクリアしておく
|
||||
MI_CpuClear32( SYSMi_GetResetParamAddr(), 0x100 );
|
||||
// メインメモリのランチャーパラメータをクリアしておく
|
||||
MI_CpuClear32( SYSMi_GetLauncherParamAddr(), HW_PARAM_LAUNCH_PARAM_SIZE );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
BIN
doc/鍵管理.xls
BIN
doc/鍵管理.xls
Binary file not shown.
Binary file not shown.
@ -50,29 +50,29 @@ typedef struct BootFlags {
|
||||
|
||||
|
||||
// リセットパラメータ ヘッダ
|
||||
typedef struct ResetParameterHeader {
|
||||
typedef struct LauncherParameterHeader {
|
||||
u32 magicCode; // SYSM_RESET_PARAM_MAGIC_CODEが入る
|
||||
u8 type; // タイプによってBodyを判別する。
|
||||
u8 bodyLength; // bodyの長さ
|
||||
u16 crc16; // bodyのCRC16
|
||||
}ResetParamHeader;
|
||||
}LauncherParamHeader;
|
||||
|
||||
|
||||
// リセットパラメータ ボディ
|
||||
typedef union ResetParamBody {
|
||||
typedef union LauncherParamBody {
|
||||
struct { // ※とりあえず最初はTitlePropertyとフォーマットを合わせておく
|
||||
NAMTitleId bootTitleID; // リセット後にダイレクト起動するタイトルID
|
||||
BootFlags flags; // リセット時のランチャー動作フラグ
|
||||
u8 rsv[ 4 ]; // 予約
|
||||
}v1;
|
||||
}ResetParamBody;
|
||||
}LauncherParamBody;
|
||||
|
||||
|
||||
// リセットパラメータ
|
||||
typedef struct ResetParam {
|
||||
ResetParamHeader header;
|
||||
ResetParamBody body;
|
||||
}ResetParam;
|
||||
typedef struct LauncherParam {
|
||||
LauncherParamHeader header;
|
||||
LauncherParamBody body;
|
||||
}LauncherParam;
|
||||
|
||||
// function's prototype------------------------------------
|
||||
|
||||
|
||||
@ -53,10 +53,10 @@ typedef enum PlatformCode {
|
||||
|
||||
|
||||
// タイトル情報
|
||||
typedef struct TitleProperty { // この情報は、ランチャー時には認証通ってないけど、起動時には認証通すので大丈夫だろう。
|
||||
NAMTitleId titleID; // タイトルID(TitleID_Hiで起動メディアは判定できる?)
|
||||
BootFlags flags; // ブート時のランチャー動作フラグ
|
||||
TWLBannerFile *pBanner; // バナーへのポインタ(固定長フォーマットなら偽造されても大丈夫だろう。)
|
||||
typedef struct TitleProperty { // この情報は、ランチャー時には認証通ってないけど、起動時には認証通すので大丈夫だろう。
|
||||
NAMTitleId titleID; // タイトルID(TitleID_Hiで起動メディアは判定できる?)
|
||||
LauncherBootFlags flags; // ブート時のランチャー動作フラグ
|
||||
TWLBannerFile *pBanner; // バナーへのポインタ(固定長フォーマットなら偽造されても大丈夫だろう。)
|
||||
}TitleProperty;
|
||||
|
||||
// アプリ認証結果
|
||||
@ -102,7 +102,7 @@ extern BOOL SYSM_IsLogoDemoSkip( void ); //
|
||||
extern void SYSM_SetLogoDemoSkip( BOOL skip ); // ロゴデモ飛ばし状態フラグを設定する。
|
||||
extern BOOL SYSM_IsValidTSD( void ); // TWL設定データは有効か?
|
||||
extern void SYSM_SetValidTSD( BOOL valid ); // TWL設定データの有効/無効フラグを設定する。
|
||||
extern const ResetParamBody *SYSM_GetResetParamBody( void ); // リセットパラメータの取得
|
||||
extern const LauncherParamBody *SYSM_GetLauncherParamBody( void ); // リセットパラメータの取得
|
||||
|
||||
// 本体設定データアクセス
|
||||
extern BOOL SYSM_ReadTWLSettingsFile( void ); // TWL設定データのリード
|
||||
|
||||
@ -54,7 +54,7 @@ typedef struct SYSM_work {
|
||||
Relocate_Info romRelocateInfo[RELOCATE_INFO_NUM]; // ROM再配置情報(arm9,arm7それぞれltdとflxで最大4つ)
|
||||
vu32 isARM9Start :1; // ARM9スタートフラグ
|
||||
vu32 isHotStart :1; // Hot/Coldスタート判定
|
||||
vu32 isValidResetParam :1; // リセットパラメータ有効
|
||||
vu32 isValidLauncherParam :1; // リセットパラメータ有効
|
||||
vu32 isValidTSD :1; // NITRO設定データ無効フラグ
|
||||
vu32 isLogoSkip :1; // ロゴデモスキップ
|
||||
vu32 isOnDebugger :1; // デバッガ動作か?
|
||||
@ -79,7 +79,7 @@ typedef struct SYSM_work {
|
||||
int cloneBootMode;
|
||||
u32 nCardID; // カードID
|
||||
|
||||
ResetParam resetParam;
|
||||
LauncherParam launcherParam;
|
||||
|
||||
// NTR-IPL2のレガシー 最終的には消すと思う
|
||||
BOOL enableCardNormalOnly;
|
||||
@ -106,8 +106,8 @@ typedef struct SDKBootCheckInfo{
|
||||
//----------------------------------------------------------------------
|
||||
// SYSM共有ワーク領域のアドレス獲得
|
||||
//----------------------------------------------------------------------
|
||||
// SYSMリセットパラメータアドレスの取得(※ライブラリ向け。ARM9側はSYSM_GetResetParamを使用して下さい。)
|
||||
#define SYSMi_GetResetParamAddr() ( (ResetParam *)HW_PARAM_LAUNCH_PARAM )
|
||||
// SYSMリセットパラメータアドレスの取得(※ライブラリ向け。ARM9側はSYSM_GetLauncherParamを使用して下さい。)
|
||||
#define SYSMi_GetLauncherParamAddr() ( (LauncherParam *)HW_PARAM_LAUNCH_PARAM )
|
||||
|
||||
// SYSM共有ワークの取得
|
||||
#define SYSMi_GetWork() ( (SYSM_work *)HW_RED_RESERVED )
|
||||
|
||||
Loading…
Reference in New Issue
Block a user