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
|
MACRO_FLAGS += -DUSE_HYENA_COMPONENT
|
||||||
endif
|
endif
|
||||||
|
|
||||||
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037a8000' \
|
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037a0000' \
|
||||||
-DADDRESS_FLXMAIN='0x02280200' \
|
-DADDRESS_FLXMAIN='0x02280200' \
|
||||||
-DADDRESS_BOOTCORE='0x0380f000' \
|
-DADDRESS_BOOTCORE='0x0380f000' \
|
||||||
-DCRT0_O='$(CRT0_O)'
|
-DCRT0_O='$(CRT0_O)'
|
||||||
|
|||||||
@ -33,7 +33,7 @@ MEMORY
|
|||||||
<OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.FLXSUFFIX>
|
<OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.FLXSUFFIX>
|
||||||
<END.OVERLAYS>
|
<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>
|
binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||||
<FOREACH.LTDAUTOLOADS>
|
<FOREACH.LTDAUTOLOADS>
|
||||||
|
|||||||
@ -25,8 +25,10 @@
|
|||||||
|
|
||||||
// MAP_TS_LTD for hyena
|
// MAP_TS_LTD for hyena
|
||||||
// WRAM-A Lock:ON, Master:ARM7, Enable:Slot0-3(256Kbytes), Address(7):0x037c0000-0x037fffff, Address(9):None
|
// 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:ON, Master:ARM7, Enable:Slot4-7(128Kbytes), Address(7):0x03760000-0x0377ffff, Address(9):None
|
||||||
// WRAM-B Lock:OFF, Master:ARM9, Enable:Slot0-4(160Kbytes), Address(7):0x03740000-0x037bffff, Address(9):0x03740000-0x037bffff
|
// 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-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-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
|
// 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
|
// WRAM Lock
|
||||||
(u32)(
|
(u32)(
|
||||||
(0x0F << 0) |
|
(0x0F << 0) |
|
||||||
(0xE0 << 8) |
|
(0xF0 << 8) |
|
||||||
(0x00 << 16) |
|
(0x00 << 16) |
|
||||||
|
|
||||||
// WRAM-0/1
|
// WRAM-0/1
|
||||||
|
|||||||
@ -29,7 +29,8 @@ extern void LCFG_VerifyAndRecoveryNTRSettings( void );
|
|||||||
|
|
||||||
// function's prototype-------------------------------------------------------
|
// function's prototype-------------------------------------------------------
|
||||||
void _start_AutoloadDoneCallback(void* argv[]);
|
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_CheckDebuggerBannerViewModeBoot( void );
|
||||||
static TitleProperty *SYSMi_CheckShortcutBoot1( void );
|
static TitleProperty *SYSMi_CheckShortcutBoot1( void );
|
||||||
static TitleProperty *SYSMi_CheckShortcutBoot2( void );
|
static TitleProperty *SYSMi_CheckShortcutBoot2( void );
|
||||||
@ -186,21 +187,34 @@ TitleProperty *SYSM_ReadParameters( void )
|
|||||||
UTL_SetFatalError( FATAL_ERROR_HWINFO_SECURE );
|
UTL_SetFatalError( FATAL_ERROR_HWINFO_SECURE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// システム領域にHWInfoをコピー
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
|
// NTRカードアプリARM9コードのロード領域とメモリがかち合うが、先頭0x4000はセキュア領域で別バッファに格納されるので、
|
||||||
|
// ここでこれらのパラメータをロードしても大丈夫。
|
||||||
|
SYSMi_CopyLCFGDataHWInfo( (u32)s_lcfgBuffer );
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
// 本体設定データのリード(※必ずHWSecureInforリード後に実行すること。LanguageBitmapを判定に使うため)
|
// 本体設定データのリード(※必ずHWSecureInforリード後に実行すること。LanguageBitmapを判定に使うため)
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
{
|
{
|
||||||
u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP );
|
u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP );
|
||||||
if( pBuffer ) {
|
if( pBuffer ) {
|
||||||
if( !LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ) ) { // NANDからTWL本体設定データをリード
|
// NANDからTWL本体設定データをリード
|
||||||
// リード失敗時は、ファイルをリカバリ
|
BOOL isRead = LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer );
|
||||||
if( LCFG_RecoveryTWLSettings() ) {
|
|
||||||
// リカバリ成功時は、フラッシュ壊れシーケンスへ
|
// リード失敗ファイルが存在する場合は、ファイルをリカバリ
|
||||||
// 関数内で、LCFGのisBrokenTWLSettingsフラグがセットされる。
|
if( LCFG_RecoveryTWLSettings() ) {
|
||||||
|
if( isRead ) {
|
||||||
|
// ミラーデータのうち、一方がリードできていたなら何もしない。
|
||||||
}else {
|
}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 );
|
SYSM_Free( pBuffer );
|
||||||
}else {
|
}else {
|
||||||
@ -211,11 +225,11 @@ TitleProperty *SYSM_ReadParameters( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// システム領域に本体設定などをコピー
|
// システム領域に本体設定をコピー
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// NTRカードアプリARM9コードのロード領域とメモリがかち合うが、先頭0x4000はセキュア領域で別バッファに格納されるので、
|
// NTRカードアプリARM9コードのロード領域とメモリがかち合うが、先頭0x4000はセキュア領域で別バッファに格納されるので、
|
||||||
// ここでこれらのパラメータをロードしても大丈夫。
|
// ここでこれらのパラメータをロードしても大丈夫。
|
||||||
SYSMi_CopyLCFGData( (u32)s_lcfgBuffer );
|
SYSMi_CopyLCFGDataSettings();
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// 無線ON/OFFフラグをもとに、LEDを設定する。
|
// 無線ON/OFFフラグをもとに、LEDを設定する。
|
||||||
@ -328,8 +342,8 @@ TitleProperty *SYSM_ReadParameters( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 本体設定データなどのメモリ展開。
|
// HWInfoのメモリ展開。
|
||||||
static void SYSMi_CopyLCFGData( u32 dst_addr )
|
static void SYSMi_CopyLCFGDataHWInfo( u32 dst_addr )
|
||||||
{
|
{
|
||||||
// HotStart時にも保持する必要のあるデータをランチャー用に移動するプリロードパラメータバッファにコピー。
|
// HotStart時にも保持する必要のあるデータをランチャー用に移動するプリロードパラメータバッファにコピー。
|
||||||
MI_CpuCopy8( (void *)HW_PARAM_WIRELESS_FIRMWARE_DATA, (void *)(dst_addr + HW_PARAM_TWL_SETTINGS_DATA_SIZE),
|
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;
|
*(u32 *)HW_PRELOAD_PARAMETER_ADDR = dst_addr;
|
||||||
|
|
||||||
// 本体設定データ、HWノーマル情報、HWセキュア情報をメモリに展開しておく
|
// HWノーマル情報、HWセキュア情報をメモリに展開しておく
|
||||||
MI_CpuCopyFast( LCFGi_GetTSD(), (void *)HW_PARAM_TWL_SETTINGS_DATA, sizeof(LCFGTWLSettingsData) );
|
|
||||||
MI_CpuCopyFast( LCFGi_GetHWN(), (void *)HW_PARAM_TWL_HW_NORMAL_INFO, sizeof(LCFGTWLHWNormalInfo) );
|
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 );
|
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部分をクリアしておく
|
// 本体設定データのLauncherStatus部分をクリアしておく
|
||||||
{
|
{
|
||||||
|
|||||||
@ -30,7 +30,7 @@ TWL_PROC = ARM9
|
|||||||
|
|
||||||
SUBDIRS =
|
SUBDIRS =
|
||||||
|
|
||||||
SRCS = WDS.c
|
SRCS = WDS.c WDSWrapper.c
|
||||||
|
|
||||||
TARGET_LIB = WDS$(TWL_LIBSUFFIX).a
|
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
|
// @file WDS.c
|
||||||
@ -8,7 +25,7 @@
|
|||||||
// @version 01.00
|
// @version 01.00
|
||||||
//
|
//
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
#include "WDS.h"
|
#include <sysmenu/WDS.h>
|
||||||
#include <nitro/crypto/rc4.h>
|
#include <nitro/crypto/rc4.h>
|
||||||
#ifdef WDS_WITHDWC
|
#ifdef WDS_WITHDWC
|
||||||
#include <dwc.h>
|
#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
|
// @file WDSWrapper.c
|
||||||
@ -8,7 +25,7 @@
|
|||||||
// @version 01.00
|
// @version 01.00
|
||||||
//
|
//
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
#include "WDSWrapper.h"
|
#include <sysmenu/WDSWrapper.h>
|
||||||
#ifdef WDS_WITHDWC
|
#ifdef WDS_WITHDWC
|
||||||
#include <dwc.h>
|
#include <dwc.h>
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -257,9 +257,23 @@ int MachineSettingMain( void )
|
|||||||
tp_select = SelectMenuByTP( &s_csr, &s_settingParam );
|
tp_select = SelectMenuByTP( &s_csr, &s_settingParam );
|
||||||
DrawMenu( s_csr, &s_settingParam );
|
DrawMenu( s_csr, &s_settingParam );
|
||||||
|
|
||||||
|
#if 0
|
||||||
if( pad.trg & PAD_BUTTON_START ) {
|
if( pad.trg & PAD_BUTTON_START ) {
|
||||||
OS_DoApplicationJump( NULL, OS_APP_JUMP_NORMAL );
|
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( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐
|
||||||
if( s_settingPos[ s_csr ].enable ) {
|
if( s_settingPos[ s_csr ].enable ) {
|
||||||
|
|||||||
@ -89,12 +89,30 @@ void TwlMain(void)
|
|||||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
// TWL設定データファイルの読み込み
|
// TWL設定データファイルの読み込み
|
||||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
{
|
g_isValidTSD = TRUE;
|
||||||
u8 *pBuffer = Alloc( LCFG_READ_TEMP );
|
{
|
||||||
g_isValidTSD = FALSE;
|
u8 *pBuffer = Alloc( LCFG_READ_TEMP );
|
||||||
if( pBuffer) {
|
if( pBuffer ) {
|
||||||
g_isValidTSD = LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ] )pBuffer );
|
// NANDからTWL本体設定データをリード
|
||||||
Free( pBuffer );
|
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
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
#include "WDS.h"
|
#include <sysmenu/WDS.h>
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// Macros
|
// Macros
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user