mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
20080626_SDK500fc_plus5_branchの変更点をマージ。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1743 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
90f9860af4
commit
96371e788e
@ -81,7 +81,7 @@ ifeq ($(DEFAULT_COMP_ARM7),hyena)
|
||||
MACRO_FLAGS += -DUSE_HYENA_COMPONENT
|
||||
endif
|
||||
|
||||
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037a8000' \
|
||||
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037a0000' \
|
||||
-DADDRESS_FLXMAIN='0x02280200' \
|
||||
-DADDRESS_BOOTCORE='0x0380f000' \
|
||||
-DCRT0_O='$(CRT0_O)'
|
||||
|
||||
@ -33,7 +33,7 @@ MEMORY
|
||||
<OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.FLXSUFFIX>
|
||||
<END.OVERLAYS>
|
||||
|
||||
check.WORKRAM (RWX) : ORIGIN = 0x037a8000, LENGTH = 0x62000 > workram.check
|
||||
check.WORKRAM (RWX) : ORIGIN = 0x037a0000, LENGTH = 0x6a000 > workram.check
|
||||
|
||||
binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||
<FOREACH.LTDAUTOLOADS>
|
||||
|
||||
@ -25,8 +25,10 @@
|
||||
|
||||
// MAP_TS_LTD for hyena
|
||||
// WRAM-A Lock:ON, Master:ARM7, Enable:Slot0-3(256Kbytes), Address(7):0x037c0000-0x037fffff, Address(9):None
|
||||
// WRAM-B Lock:ON, Master:ARM7, Enable:Slot5-7(96Kbytes), Address(7):0x037a8000-0x037bffff, Address(9):None
|
||||
// WRAM-B Lock:OFF, Master:ARM9, Enable:Slot0-4(160Kbytes), Address(7):0x03740000-0x037bffff, Address(9):0x03740000-0x037bffff
|
||||
// WRAM-B Lock:ON, Master:ARM7, Enable:Slot4-7(128Kbytes), Address(7):0x03760000-0x0377ffff, Address(9):None
|
||||
// Address(7):0x037a0000-0x037bffff, Address(9):None
|
||||
// WRAM-B Lock:OFF, Master:ARM9, Enable:Slot0-3(128Kbytes), Address(7):0x03740000-0x0375ffff, Address(9):0x03740000-0x0375ffff
|
||||
// Address(7):0x03780000-0x0379ffff, Address(9):0x03780000-0x0379ffff
|
||||
// WRAM-C Lock:OFF, Msster:ARM9, Enable:Slot0-7(256Kbytes), Address(7):0x03700000-0x0373ffff, Address(9):0x03700000-0x0373ffff
|
||||
// WRAM-0 Master:ARM9, (16Kbytes), Address(7):0x03040000-0x03043fff, Address(9):0x03040000-0x03043fff
|
||||
// WRAM-1 Master:ARM9, (16Kbytes), Address(7):0x03044000-0x03047fff, Address(9):0x03044000-0x03047fff
|
||||
@ -106,7 +108,7 @@ u32 HYENA_WramReg[0x30/sizeof(u32)] =
|
||||
// WRAM Lock
|
||||
(u32)(
|
||||
(0x0F << 0) |
|
||||
(0xE0 << 8) |
|
||||
(0xF0 << 8) |
|
||||
(0x00 << 16) |
|
||||
|
||||
// WRAM-0/1
|
||||
|
||||
@ -29,7 +29,8 @@ extern void LCFG_VerifyAndRecoveryNTRSettings( void );
|
||||
|
||||
// function's prototype-------------------------------------------------------
|
||||
void _start_AutoloadDoneCallback(void* argv[]);
|
||||
static void SYSMi_CopyLCFGData( u32 dst_addr );
|
||||
static void SYSMi_CopyLCFGDataHWInfo( u32 dst_addr );
|
||||
static void SYSMi_CopyLCFGDataSettings( void );
|
||||
static TitleProperty *SYSMi_CheckDebuggerBannerViewModeBoot( void );
|
||||
static TitleProperty *SYSMi_CheckShortcutBoot1( void );
|
||||
static TitleProperty *SYSMi_CheckShortcutBoot2( void );
|
||||
@ -186,21 +187,34 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
UTL_SetFatalError( FATAL_ERROR_HWINFO_SECURE );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
// システム領域にHWInfoをコピー
|
||||
//-----------------------------------------------------
|
||||
// NTRカードアプリARM9コードのロード領域とメモリがかち合うが、先頭0x4000はセキュア領域で別バッファに格納されるので、
|
||||
// ここでこれらのパラメータをロードしても大丈夫。
|
||||
SYSMi_CopyLCFGDataHWInfo( (u32)s_lcfgBuffer );
|
||||
|
||||
//-----------------------------------------------------
|
||||
// 本体設定データのリード(※必ずHWSecureInforリード後に実行すること。LanguageBitmapを判定に使うため)
|
||||
//-----------------------------------------------------
|
||||
{
|
||||
u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP );
|
||||
if( pBuffer ) {
|
||||
if( !LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ) ) { // NANDからTWL本体設定データをリード
|
||||
// リード失敗時は、ファイルをリカバリ
|
||||
if( LCFG_RecoveryTWLSettings() ) {
|
||||
// リカバリ成功時は、フラッシュ壊れシーケンスへ
|
||||
// 関数内で、LCFGのisBrokenTWLSettingsフラグがセットされる。
|
||||
// NANDからTWL本体設定データをリード
|
||||
BOOL isRead = LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer );
|
||||
|
||||
// リード失敗ファイルが存在する場合は、ファイルをリカバリ
|
||||
if( LCFG_RecoveryTWLSettings() ) {
|
||||
if( isRead ) {
|
||||
// ミラーデータのうち、一方がリードできていたなら何もしない。
|
||||
}else {
|
||||
// リカバリ失敗時は、FALTALエラー
|
||||
UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS );
|
||||
// リードに完全に失敗していた場合は、フラッシュ壊れシーケンスへ。
|
||||
LCFG_TSD_SetFlagFinishedBrokenTWLSettings( FALSE );
|
||||
(void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); // LCFG_READ_TEMP > LCFG_WRITE_TEMP なので、pBufferをそのまま流用
|
||||
}
|
||||
}else {
|
||||
// リカバリ失敗時は、FALTALエラー
|
||||
UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS );
|
||||
}
|
||||
SYSM_Free( pBuffer );
|
||||
}else {
|
||||
@ -211,11 +225,11 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
// システム領域に本体設定などをコピー
|
||||
// システム領域に本体設定をコピー
|
||||
//-----------------------------------------------------
|
||||
// NTRカードアプリARM9コードのロード領域とメモリがかち合うが、先頭0x4000はセキュア領域で別バッファに格納されるので、
|
||||
// ここでこれらのパラメータをロードしても大丈夫。
|
||||
SYSMi_CopyLCFGData( (u32)s_lcfgBuffer );
|
||||
SYSMi_CopyLCFGDataSettings();
|
||||
|
||||
//-----------------------------------------------------
|
||||
// 無線ON/OFFフラグをもとに、LEDを設定する。
|
||||
@ -328,8 +342,8 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
}
|
||||
|
||||
|
||||
// 本体設定データなどのメモリ展開。
|
||||
static void SYSMi_CopyLCFGData( u32 dst_addr )
|
||||
// HWInfoのメモリ展開。
|
||||
static void SYSMi_CopyLCFGDataHWInfo( u32 dst_addr )
|
||||
{
|
||||
// HotStart時にも保持する必要のあるデータをランチャー用に移動するプリロードパラメータバッファにコピー。
|
||||
MI_CpuCopy8( (void *)HW_PARAM_WIRELESS_FIRMWARE_DATA, (void *)(dst_addr + HW_PARAM_TWL_SETTINGS_DATA_SIZE),
|
||||
@ -338,10 +352,17 @@ static void SYSMi_CopyLCFGData( u32 dst_addr )
|
||||
// プリロードパラメータアドレスをランチャー向けに変更。
|
||||
*(u32 *)HW_PRELOAD_PARAMETER_ADDR = dst_addr;
|
||||
|
||||
// 本体設定データ、HWノーマル情報、HWセキュア情報をメモリに展開しておく
|
||||
MI_CpuCopyFast( LCFGi_GetTSD(), (void *)HW_PARAM_TWL_SETTINGS_DATA, sizeof(LCFGTWLSettingsData) );
|
||||
// HWノーマル情報、HWセキュア情報をメモリに展開しておく
|
||||
MI_CpuCopyFast( LCFGi_GetHWN(), (void *)HW_PARAM_TWL_HW_NORMAL_INFO, sizeof(LCFGTWLHWNormalInfo) );
|
||||
MI_CpuCopyFast( LCFGi_GetHWS(), (void *)HW_HW_SECURE_INFO, HW_HW_SECURE_INFO_END - HW_HW_SECURE_INFO );
|
||||
}
|
||||
|
||||
|
||||
// 本体設定データのメモリ展開。
|
||||
static void SYSMi_CopyLCFGDataSettings( void )
|
||||
{
|
||||
// 本体設定データ
|
||||
MI_CpuCopyFast( LCFGi_GetTSD(), (void *)HW_PARAM_TWL_SETTINGS_DATA, sizeof(LCFGTWLSettingsData) );
|
||||
|
||||
// 本体設定データのLauncherStatus部分をクリアしておく
|
||||
{
|
||||
|
||||
@ -30,7 +30,7 @@ TWL_PROC = ARM9
|
||||
|
||||
SUBDIRS =
|
||||
|
||||
SRCS = WDS.c
|
||||
SRCS = WDS.c WDSWrapper.c
|
||||
|
||||
TARGET_LIB = WDS$(TWL_LIBSUFFIX).a
|
||||
|
||||
|
||||
@ -1,3 +1,20 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL
|
||||
File: WDS.c
|
||||
|
||||
Copyright 2007 Nintendo. All rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs contain
|
||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
Company Ltd., and are protected by Federal copyright law. They may
|
||||
not be disclosed to third parties or copied or duplicated in any form,
|
||||
in whole or in part, without the prior written consent of Nintendo.
|
||||
|
||||
$Date:: $
|
||||
$Rev$
|
||||
$Author$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
//**********************************************************************
|
||||
/**
|
||||
// @file WDS.c
|
||||
@ -8,7 +25,7 @@
|
||||
// @version 01.00
|
||||
//
|
||||
***********************************************************************/
|
||||
#include "WDS.h"
|
||||
#include <sysmenu/WDS.h>
|
||||
#include <nitro/crypto/rc4.h>
|
||||
#ifdef WDS_WITHDWC
|
||||
#include <dwc.h>
|
||||
|
||||
@ -1,3 +1,20 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL
|
||||
File: WDS.c
|
||||
|
||||
Copyright 2007 Nintendo. All rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs contain
|
||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
Company Ltd., and are protected by Federal copyright law. They may
|
||||
not be disclosed to third parties or copied or duplicated in any form,
|
||||
in whole or in part, without the prior written consent of Nintendo.
|
||||
|
||||
$Date:: $
|
||||
$Rev$
|
||||
$Author$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
//**********************************************************************
|
||||
/**
|
||||
// @file WDSWrapper.c
|
||||
@ -8,7 +25,7 @@
|
||||
// @version 01.00
|
||||
//
|
||||
***********************************************************************/
|
||||
#include "WDSWrapper.h"
|
||||
#include <sysmenu/WDSWrapper.h>
|
||||
#ifdef WDS_WITHDWC
|
||||
#include <dwc.h>
|
||||
#endif
|
||||
|
||||
@ -257,9 +257,23 @@ int MachineSettingMain( void )
|
||||
tp_select = SelectMenuByTP( &s_csr, &s_settingParam );
|
||||
DrawMenu( s_csr, &s_settingParam );
|
||||
|
||||
#if 0
|
||||
if( pad.trg & PAD_BUTTON_START ) {
|
||||
OS_DoApplicationJump( NULL, OS_APP_JUMP_NORMAL );
|
||||
u8 *pBuffer = Alloc( LCFG_READ_TEMP );
|
||||
g_isValidTSD = FALSE;
|
||||
if( pBuffer) {
|
||||
g_isValidTSD = LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ] )pBuffer );
|
||||
Free( pBuffer );
|
||||
if( g_isValidTSD ) {
|
||||
OS_TPrintf( "TSD Read succeeded.\n" );
|
||||
}else {
|
||||
OS_TPrintf( "TSD Read failed.\n" );
|
||||
PrintfSJIS( 0, 22*8, TXT_COLOR_RED, "TSD Read failed.\n" );
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐
|
||||
if( s_settingPos[ s_csr ].enable ) {
|
||||
|
||||
@ -89,12 +89,30 @@ void TwlMain(void)
|
||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||
// TWL設定データファイルの読み込み
|
||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||
{
|
||||
u8 *pBuffer = Alloc( LCFG_READ_TEMP );
|
||||
g_isValidTSD = FALSE;
|
||||
if( pBuffer) {
|
||||
g_isValidTSD = LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ] )pBuffer );
|
||||
Free( pBuffer );
|
||||
g_isValidTSD = TRUE;
|
||||
{
|
||||
u8 *pBuffer = Alloc( LCFG_READ_TEMP );
|
||||
if( pBuffer ) {
|
||||
// NANDからTWL本体設定データをリード
|
||||
BOOL isRead = LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer );
|
||||
|
||||
// リード失敗ファイルが存在する場合は、ファイルをリカバリ
|
||||
if( LCFG_RecoveryTWLSettings() ) {
|
||||
if( isRead ) {
|
||||
// ミラーデータのうち、一方でもリードできていたなら何もしない。
|
||||
}else {
|
||||
// リードに完全に失敗していた場合は、フラッシュ壊れシーケンスへ。
|
||||
LCFG_TSD_SetFlagFinishedBrokenTWLSettings( FALSE );
|
||||
(void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); // LCFG_READ_TEMP > LCFG_WRITE_TEMP なので、pBufferをそのまま流用
|
||||
}
|
||||
}else {
|
||||
// リカバリ失敗時は、FALTALエラー
|
||||
g_isValidTSD = FALSE;
|
||||
}
|
||||
Free( pBuffer );
|
||||
}else {
|
||||
// メモリ確保ができなかった時は、FATALエラー
|
||||
g_isValidTSD = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
@ -18,7 +18,7 @@ extern "C" {
|
||||
//-----------------------------------------------------
|
||||
// Include
|
||||
//-----------------------------------------------------
|
||||
#include "WDS.h"
|
||||
#include <sysmenu/WDS.h>
|
||||
|
||||
//-----------------------------------------------------
|
||||
// Macros
|
||||
|
||||
Loading…
Reference in New Issue
Block a user