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:
nakasima 2008-06-30 05:51:35 +00:00
parent 90f9860af4
commit 96371e788e
11 changed files with 118 additions and 29 deletions

View File

@ -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)'

View File

@ -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>

View File

@ -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

View File

@ -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部分をクリアしておく
{

View File

@ -30,7 +30,7 @@ TWL_PROC = ARM9
SUBDIRS =
SRCS = WDS.c
SRCS = WDS.c WDSWrapper.c
TARGET_LIB = WDS$(TWL_LIBSUFFIX).a

View File

@ -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>

View File

@ -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

View File

@ -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 ) {

View File

@ -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;
}
}

View File

@ -18,7 +18,7 @@ extern "C" {
//-----------------------------------------------------
// Include
//-----------------------------------------------------
#include "WDS.h"
#include <sysmenu/WDS.h>
//-----------------------------------------------------
// Macros