・FW typeの読み出しを追加。

・titleID変更への対応。
・無線ファームのファイル名をWLFWに変更。
 それに伴い、WFW0、WFW1を作っていたMakefileを削除。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@914 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
sato_masaki 2008-03-20 07:24:41 +00:00
parent a99952e807
commit 706b2c4217
5 changed files with 116 additions and 184 deletions

View File

@ -56,7 +56,9 @@ SRCS = main.c launcher.c sound.c bannerCounter.c loadWlanFirm.c \
$(BG_DIR)/BGData_Launcher.c $(BG_DIR)/BGData_Launcher.c
LINCLUDES = $(MISC_DIR)/include \ LINCLUDES = $(MISC_DIR)/include \
$(SRCDIR)/$(LOGO_DIR) $(SRCDIR)/$(LOGO_DIR) \
$(TWLSDK_ROOT)/build/libraries/wm/common.TWL/inc \
$(TWLSDK_ROOT)/build/libraries/wm/ARM9.TWL/nwm/inc
LLIBRARIES += libes$(TWL_LIBSUFFIX).a \ LLIBRARIES += libes$(TWL_LIBSUFFIX).a \
libboc$(TWL_LIBSUFFIX).a \ libboc$(TWL_LIBSUFFIX).a \

View File

@ -21,6 +21,10 @@
#include <firm.h> #include <firm.h>
#include <sysmenu.h> #include <sysmenu.h>
#include "nwm_common_private.h"
#include "nwm_arm9_private.h"
#include "loadWlanFirm.h" #include "loadWlanFirm.h"
/* /*
@ -29,19 +33,23 @@
/* LCFGの無線ファームバージョンをタイトルとしてそのまま使う場合 */ /* LCFGの無線ファームバージョンをタイトルとしてそのまま使う場合 */
#define USE_LCFG_STRING 0 #define USE_LCFG_STRING 0
/* 無線FWダウンロード処理にかかる時間を計測する。 */ /* 無線FWダウンロード処理にかかる時間を計測する。 */
#define MEASURE_WIRELESS_INITTIME 1 #define MEASURE_WIRELESS_INITTIME 1
/* 無線FW認証処理にかかる時間を計測する。 */ /* 無線FW認証処理にかかる時間を計測する。 */
#define MEASURE_VERIFY_SIGN_TIME 1 #define MEASURE_VERIFY_SIGN_TIME 1
/* ハッシュ比較の情報を出力する。 */
#define REPORT_HASH_COMPARISON 1
/* Index of public key for WLAN firm */ /* Index of public key for WLAN firm */
#define WLANFIRM_PUBKEY_INDEX 1 #define WLANFIRM_PUBKEY_INDEX 1
#define SIGN_LENGTH 128 #define SIGN_LENGTH 128
#define FWBUFFER_SIZE 0x40000
#define SIGNHEAP_SIZE 0x01000 #define SIGNHEAP_SIZE 0x01000
#define FWHEADER_SIZE 0xE0 #define FWHEADER_SIZE 0x100
/* /*
internal variables internal variables
@ -64,12 +72,10 @@ static s32 ReadFirmwareHeader(char *path, u8 *buffer, s32 bufSize);
static s32 ReadFirmwareBinary(char *path, u32 offset, u8 *buffer, s32 bufSize); static s32 ReadFirmwareBinary(char *path, u32 offset, u8 *buffer, s32 bufSize);
static BOOL VerifyWlanfirmSignature(u8* buffer, u32 length); static BOOL VerifyWlanfirmSignature(u8* buffer, u32 length);
static BOOL CheckHash(const u8* hash, const u8* buffer, u32 length); static BOOL CheckHash(const u8* hash, const u8* buffer, u32 length);
#if (REPORT_HASH_COMPARISON == 1)
static void PrintDigest(u8 *digest);
#endif
extern NWMRetCode NWMi_InstallFirmware(NWMCallbackFunc callback, void* addr, u32 size, BOOL isColdstart);
extern u32 NWMi_GetFirmImageOffset(void* addr, u32 hwVersion);
extern u32 NWMi_GetFirmImageLength(void* addr, u32 hwVersion);
extern u8* NWMi_GetFirmImageHashAddress(void* addr, u32 hwVersion);
void InstallFirmCallback(void* arg) void InstallFirmCallback(void* arg)
{ {
@ -78,12 +84,12 @@ void InstallFirmCallback(void* arg)
if (cb->retcode == NWM_RETCODE_SUCCESS) { if (cb->retcode == NWM_RETCODE_SUCCESS) {
#if (MEASURE_WIRELESS_INITTIME == 1) #if (MEASURE_WIRELESS_INITTIME == 1)
OS_TPrintf("Wlan firm:LoadTime=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - startTick)); OS_TPrintf("[Wlan Firm] LoadTime=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - startTick));
#endif #endif
OS_TPrintf("Wlan firm:Wlan firmware has been installed successfully!\n"); OS_TPrintf("[Wlan Firm] Wlan firmware has been installed successfully!\n");
result = WLANFIRM_RESULT_SUCCESS; result = WLANFIRM_RESULT_SUCCESS;
} else { // in case of failure } else { // in case of failure
OS_TPrintf("Wlan firm:FW download Timeout Error!\n"); OS_TPrintf("[Wlan Firm] FW download Timeout Error!\n");
result = WLANFIRM_RESULT_FAILURE; result = WLANFIRM_RESULT_FAILURE;
} }
@ -105,11 +111,10 @@ void InstallFirmCallback(void* arg)
BOOL GetFirmwareFilepath(char *path) BOOL GetFirmwareFilepath(char *path)
{ {
u8 title[4] = { 'W','F','W','0' }; u8 title[4] = { 'W','L','F','W' };
#if( USE_LCFG_STRING == 0 ) #if( USE_LCFG_STRING == 0 )
char *title0 = "WFW0"; char *title0 = "WLFW";
char *title1 = "WFW1";
#endif #endif
u32 titleID_hi; u32 titleID_hi;
u32 titleID_lo; u32 titleID_lo;
@ -120,11 +125,6 @@ BOOL GetFirmwareFilepath(char *path)
{ {
int i; int i;
if( title[0] == 0 ) { if( title[0] == 0 ) {
for( i = 0 ; i < 4 ; i++ ) {
title[i] = (u8)*title1++;
}
}
else {
for( i = 0 ; i < 4 ; i++ ) { for( i = 0 ; i < 4 ; i++ ) {
title[i] = (u8)*title0++; title[i] = (u8)*title0++;
} }
@ -133,7 +133,7 @@ BOOL GetFirmwareFilepath(char *path)
#endif #endif
titleID_hi = (( 3 /* Nintendo */ << 16) | 4 /* */ | 2 /* */ | 1 /* */); titleID_hi = (( 3 /* Nintendo */ << 16) | 8 /* CHANNEL_DATA_ONLY */ | 4 /* CHANNEL_CARD */ | 2 /* isLaunch */ | 1 /* isSystem */);
titleID_lo = ((u32)( title[0] ) & 0xff) << 24; titleID_lo = ((u32)( title[0] ) & 0xff) << 24;
titleID_lo |= ((u32)( title[1] )& 0xff) << 16; titleID_lo |= ((u32)( title[1] )& 0xff) << 16;
@ -142,13 +142,13 @@ BOOL GetFirmwareFilepath(char *path)
titleID = ((u64)(titleID_hi) << 32) | (u64)titleID_lo; titleID = ((u64)(titleID_hi) << 32) | (u64)titleID_lo;
// OS_TPrintf( "titleID = 0x%08x%08x\n", titleID_hi, titleID_lo); // OS_TPrintf( "[Wlan Firm] titleID = 0x%08x%08x\n", titleID_hi, titleID_lo);
if( NAM_OK == NAM_GetTitleBootContentPathFast(path, titleID) ) { if( NAM_OK == NAM_GetTitleBootContentPathFast(path, titleID) ) {
OS_TPrintf( "File = %s\n", path); OS_TPrintf( "[Wlan Firm] File = %s\n", path);
} }
else { else {
OS_TPrintf( "Error: NAM_GetTitleBootContentPathFast titleID = 0x%08x0x%08x\n",titleID_hi, titleID_lo); OS_TPrintf( "[Wlan Firm] Error: NAM_GetTitleBootContentPathFast titleID = 0x%08x0x%08x\n",titleID_hi, titleID_lo);
return FALSE; return FALSE;
} }
@ -220,7 +220,6 @@ BOOL VerifyWlanfirmSignature(u8* buffer, u32 length)
u8 signDigest[SVC_SHA1_DIGEST_SIZE]; u8 signDigest[SVC_SHA1_DIGEST_SIZE];
SVCSHA1Context sctx; SVCSHA1Context sctx;
SVCSignHeapContext rctx; SVCSignHeapContext rctx;
int i;
u8* signHeap; u8* signHeap;
#if (MEASURE_VERIFY_SIGN_TIME == 1) #if (MEASURE_VERIFY_SIGN_TIME == 1)
OSTick vstart = OS_GetTick(); OSTick vstart = OS_GetTick();
@ -237,12 +236,10 @@ BOOL VerifyWlanfirmSignature(u8* buffer, u32 length)
SVC_SHA1Update( &sctx, (const void*)txt,txtlen); SVC_SHA1Update( &sctx, (const void*)txt,txtlen);
SVC_SHA1GetHash( &sctx, txtDigest ); SVC_SHA1GetHash( &sctx, txtDigest );
OS_TPrintf("Wlan Firm digest: "); #if (REPORT_HASH_COMPARISON == 1)
for (i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ ) OS_TPrintf("[Wlan Firm] Wlan Firm digest: ");
{ PrintDigest((u8*)txtDigest);
OS_TPrintf("%02X ", txtDigest[i]); #endif
}
OS_TPrintf("\n");
/* decrypt according to RSA security */ /* decrypt according to RSA security */
signHeap = SYSM_Alloc( SIGNHEAP_SIZE ); signHeap = SYSM_Alloc( SIGNHEAP_SIZE );
@ -252,7 +249,7 @@ BOOL VerifyWlanfirmSignature(u8* buffer, u32 length)
if (FALSE == SVC_DecryptSign( &rctx, signDigest, (const void*)pSign, (const void*)pPubkey )) if (FALSE == SVC_DecryptSign( &rctx, signDigest, (const void*)pSign, (const void*)pPubkey ))
{ {
OS_TPrintf("Wlan Firmware authentication has failed.\n"); OS_TPrintf("[Wlan Firm] Wlan Firmware authentication has failed.\n");
/* continue verifying process even though decryption fails /* continue verifying process even though decryption fails
in the case of bonding option = 0x01 (support ARM9/ARM7) */ in the case of bonding option = 0x01 (support ARM9/ARM7) */
if (!( HWi_WSYS08_OP_OP0_MASK == SCFG_ReadBondingOption() )) if (!( HWi_WSYS08_OP_OP0_MASK == SCFG_ReadBondingOption() ))
@ -260,18 +257,16 @@ BOOL VerifyWlanfirmSignature(u8* buffer, u32 length)
SYSM_Free(signHeap); SYSM_Free(signHeap);
return FALSE; return FALSE;
} }
OS_TPrintf("But installation continues.\n"); OS_TPrintf("[Wlan Firm] But installation continues.\n");
} }
SYSM_Free(signHeap); SYSM_Free(signHeap);
OS_TPrintf("Decrypted digest: "); #if (REPORT_HASH_COMPARISON == 1)
for (i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ ) OS_TPrintf("[Wlan Firm] Decrypted digest: ");
{ PrintDigest((u8*)signDigest);
OS_TPrintf("%02X ", signDigest[i]); #endif
}
OS_TPrintf("\n");
/* /*
skip comparing SHA1 digests in the case of bonding option = 0x01 (support ARM9/ARM7) skip comparing SHA1 digests in the case of bonding option = 0x01 (support ARM9/ARM7)
this restriction is for debugging TWL wireless firmware. this restriction is for debugging TWL wireless firmware.
@ -286,7 +281,7 @@ BOOL VerifyWlanfirmSignature(u8* buffer, u32 length)
} }
#if (MEASURE_VERIFY_SIGN_TIME == 1) #if (MEASURE_VERIFY_SIGN_TIME == 1)
OS_TPrintf("Wlan firm:Verify signature Time=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - vstart)); OS_TPrintf("[Wlan Firm] Verify signature Time=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - vstart));
#endif #endif
return TRUE; return TRUE;
@ -300,41 +295,50 @@ BOOL CheckHash(const u8* hash, const u8* buffer, u32 length)
#if (MEASURE_VERIFY_SIGN_TIME == 1) #if (MEASURE_VERIFY_SIGN_TIME == 1)
OSTick vstart = OS_GetTick(); OSTick vstart = OS_GetTick();
#endif #endif
int i;
#if (REPORT_HASH_COMPARISON == 1)
OS_TPrintf("Digest to compare: "); OS_TPrintf("[Wlan Firm] Digest to compare: ");
for (i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ ) PrintDigest((u8*)hash);
{ #endif
OS_TPrintf("%02X ", hash[i]);
}
OS_TPrintf("\n");
/* calculate SHA-1 digest */ /* calculate SHA-1 digest */
SVC_SHA1Init( &sctx ); SVC_SHA1Init( &sctx );
SVC_SHA1Update( &sctx, (const void*)buffer, length); SVC_SHA1Update( &sctx, (const void*)buffer, length);
SVC_SHA1GetHash( &sctx, txtDigest ); SVC_SHA1GetHash( &sctx, txtDigest );
OS_TPrintf("Calculated digest: "); #if (REPORT_HASH_COMPARISON == 1)
for (i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ ) OS_TPrintf("[Wlan Firm] Calculated digest: ");
{ PrintDigest((u8*)txtDigest);
OS_TPrintf("%02X ", txtDigest[i]); #endif
}
OS_TPrintf("\n");
/* verify digest */ /* verify digest */
if (FALSE == SVC_CompareSHA1( (const void*)hash, (const void*)txtDigest )) if (FALSE == SVC_CompareSHA1( (const void*)hash, (const void*)txtDigest ))
{ {
#if (MEASURE_VERIFY_SIGN_TIME == 1) #if (MEASURE_VERIFY_SIGN_TIME == 1)
OS_TPrintf("Wlan firm:Verify digest Time=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - vstart)); OS_TPrintf("[Wlan Firm] Verify digest Time=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - vstart));
#endif #endif
return FALSE; return FALSE;
} }
#if (MEASURE_VERIFY_SIGN_TIME == 1) #if (MEASURE_VERIFY_SIGN_TIME == 1)
OS_TPrintf("Wlan firm:Verify digest Time=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - vstart)); OS_TPrintf("[Wlan Firm] Verify digest Time=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - vstart));
#endif #endif
return TRUE; return TRUE;
} }
#if (REPORT_HASH_COMPARISON == 1)
void PrintDigest(u8 *digest)
{
int i;
for (i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ )
{
OS_TPrintf("%02X ", digest[i]);
}
OS_TPrintf("\n");
}
#endif
BOOL InstallWlanFirmware(void) BOOL InstallWlanFirmware(void)
{ {
NWMRetCode err; NWMRetCode err;
@ -363,70 +367,74 @@ BOOL InstallWlanFirmware(void)
} else { } else {
s32 flen = 0; s32 flen = 0;
char path[256]; char path[256];
u32 hwVersion;
u32 offset, length; u32 offset, length;
u8 hdrBuffer[FWHEADER_SIZE]; u8 hdrBuffer[FWHEADER_SIZE];
u8 *pHash = NULL; u8 *pHash = NULL;
u32 fwType;
// ColdStart // ColdStart
if (FALSE == GetFirmwareFilepath(path)) { if (FALSE == GetFirmwareFilepath(path)) {
goto instfirm_error; goto instfirm_error;
} }
// TODO: get WLAN chip version // Get WLAN Firmware type
hwVersion = NWM_HW_VERSION_1_1; // tentative fwType = ((NWMFirmDataSegment *)NWM_PARAM_FWDATA_ADDRESS)->fwType;
OS_TPrintf("[Wlan Firm] FWtype is %d\n", fwType);
// Read header of WLAN firm
flen = ReadFirmwareHeader(path, hdrBuffer, FWHEADER_SIZE); flen = ReadFirmwareHeader(path, hdrBuffer, FWHEADER_SIZE);
if ( 0 >= flen ) if ( 0 >= flen )
{ {
OS_TPrintf("Error: Couldn't read wlan firmware header.\n"); OS_TPrintf("[Wlan Firm] Error: Couldn't read wlan firmware header.\n");
goto instfirm_error; goto instfirm_error;
} }
/* // Check signature data
check signature data
*/
if (FALSE == VerifyWlanfirmSignature(hdrBuffer, (u32)flen)) if (FALSE == VerifyWlanfirmSignature(hdrBuffer, (u32)flen))
{ {
OS_TPrintf("Error: This Wlan Firmware is quite illegal!\n"); OS_TPrintf("[Wlan Firm] Error: This Wlan Firmware is quite illegal!\n");
OS_TPrintf(" It has never been installed.\n"); OS_TPrintf("[Wlan Firm] It has never been installed.\n");
goto instfirm_error; goto instfirm_error;
} }
offset = NWMi_GetFirmImageOffset(hdrBuffer, hwVersion); // Find corresponding FW image
length = NWMi_GetFirmImageLength(hdrBuffer, hwVersion); offset = NWMi_GetFirmImageOffset(hdrBuffer, fwType);
length = NWMi_GetFirmImageLength(hdrBuffer, fwType);
if (offset == 0 || length == 0) { if (offset == 0 || length == 0) {
OS_TPrintf("Error: Couldn't get Firmware image.\n"); OS_TPrintf("[Wlan Firm] Error: Couldn't get Firmware image.\n");
goto instfirm_error; goto instfirm_error;
} }
/* Allocate FW buffer from heap. */ /* Allocate FW buffer from heap. */
pFwBuffer = SYSM_Alloc( length ); pFwBuffer = SYSM_Alloc( length );
if (!pFwBuffer) { if (!pFwBuffer) {
OS_TWarning("Error: Couldn't allocate memory for WlanFirmware.\n"); OS_TWarning("[Wlan Firm] Error: Couldn't allocate memory for WlanFirmware.\n");
goto instfirm_error; goto instfirm_error;
} }
// Read FW image
flen = ReadFirmwareBinary(path, offset, pFwBuffer, (s32)length); flen = ReadFirmwareBinary(path, offset, pFwBuffer, (s32)length);
if ( 0 >= flen ) if ( 0 >= flen )
{ {
OS_TPrintf("Error: Couldn't read wlan firmware.\n"); OS_TPrintf("[Wlan Firm] Error: Couldn't read wlan firmware.\n");
goto instfirm_error; goto instfirm_error;
} }
pHash = NWMi_GetFirmImageHashAddress(hdrBuffer, hwVersion); // Compare hashes
pHash = NWMi_GetFirmImageHashAddress(hdrBuffer, fwType);
if (pHash == NULL) if (pHash == NULL)
{ {
OS_TPrintf("Error: Couldn't get hash of wlan firmware image.\n"); OS_TPrintf("[Wlan Firm] Error: Couldn't get hash of wlan firmware image.\n");
goto instfirm_error; goto instfirm_error;
} }
OS_TPrintf("[Wlan Firm] Check hash of firmware image.\n");
if (FALSE == CheckHash((const u8*)pHash, (const u8*)pFwBuffer, length)) if (FALSE == CheckHash((const u8*)pHash, (const u8*)pFwBuffer, length))
{ {
OS_TPrintf("Error: Hash data is illegal.\n"); OS_TPrintf("[Wlan Firm] Error: Hash data is illegal.\n");
goto instfirm_error; goto instfirm_error;
} }
@ -435,6 +443,8 @@ BOOL InstallWlanFirmware(void)
OS_TWarning("Error: Couldn't allocate memory for NWM.\n"); OS_TWarning("Error: Couldn't allocate memory for NWM.\n");
goto instfirm_error; goto instfirm_error;
} }
// Start FW installation
NWM_Init(pNwmBuf, NWM_SYSTEM_BUF_SIZE, 3); /* 3 -> DMA no. */ NWM_Init(pNwmBuf, NWM_SYSTEM_BUF_SIZE, 3); /* 3 -> DMA no. */
#if (MEASURE_WIRELESS_INITTIME == 1) #if (MEASURE_WIRELESS_INITTIME == 1)

View File

@ -16,13 +16,41 @@
# $Author: # $Author:
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
SUBMAKES = Makefile0 Makefile1 TARGET_FIRM = SYSTEMMENU
override TARGET_PLATFORM := TWL
override TARGET_CODEGEN := ARM
override TWL_ARCHGEN := LIMITED
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
MY_FIRM_ROOT = $(TWLWIRELESS_ROOT)/binfile
MY_FIRM_ROOT_CYG = $(call eupath,$(MY_FIRM_ROOT))
MY_TITLE = WLFW
MY_FIRM = $(MY_FIRM_ROOT_CYG)/nwm_firm.bin
#----------------------------------------------------------------------------
MY_SRL = $(MY_TITLE).srl
MY_TAD = $(MY_TITLE).tad
ATTACH_HEADER_COMMAND = $(SYSMENU_TOOLSDIR)/bin/attach_dummyromheader.exe
INSTALL_TARGETS = $(MY_TAD)
INSTALL_DIR = $(ROOT)/build/tools/TwlNMenu/data
LDIRT_CLEAN = $(MY_SRL) $(MY_TAD)
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules
do-build : $(MY_TAD)
$(MY_SRL): $(MY_FIRM)
$(ATTACH_HEADER_COMMAND) -s -l -i $(call empath,$<) -c $(MY_TITLE) -o $@
$(MY_TAD): $(MY_SRL)
$(MAKETAD) -s $< $(MAKETAD_FLAGS) -o $@
#===== End of Makefile ===== #===== End of Makefile =====

View File

@ -1,56 +0,0 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlIPL
# File: Makefile -
#
# 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:
#----------------------------------------------------------------------------
TARGET_FIRM = SYSTEMMENU
override TARGET_PLATFORM := TWL
override TARGET_CODEGEN := ARM
override TWL_ARCHGEN := LIMITED
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
MY_FIRM_ROOT = $(TWLWIRELESS_ROOT)/binfile
MY_FIRM_ROOT_CYG = $(call eupath,$(MY_FIRM_ROOT))
MY_TITLE = WFW0
MY_FIRM = $(MY_FIRM_ROOT_CYG)/nwm_firm.bin
#----------------------------------------------------------------------------
MY_SRL = $(MY_TITLE).srl
MY_TAD = $(MY_TITLE).tad
ATTACH_HEADER_COMMAND = $(SYSMENU_TOOLSDIR)/bin/attach_dummyromheader.exe
INSTALL_TARGETS = $(MY_TAD)
INSTALL_DIR = $(ROOT)/build/tools/TwlNMenu/data
LDIRT_CLEAN = $(MY_SRL) $(MY_TAD)
#----------------------------------------------------------------------------
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules
do-build : $(MY_TAD)
$(MY_SRL): $(MY_FIRM)
$(ATTACH_HEADER_COMMAND) -s -l -i $(call empath,$<) -c $(MY_TITLE) -o $@
$(MY_TAD): $(MY_SRL)
$(MAKETAD) -s $< $(MAKETAD_FLAGS) -o $@
#===== End of Makefile =====

View File

@ -1,52 +0,0 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlIPL
# File: Makefile -
#
# 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:
#----------------------------------------------------------------------------
TARGET_FIRM = SYSTEMMENU
override TARGET_PLATFORM := TWL
override TARGET_CODEGEN := ARM
override TWL_ARCHGEN := LIMITED
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
MY_FIRM_ROOT = $(TWLWIRELESS_ROOT)/binfile
MY_FIRM_ROOT_CYG = $(call eupath,$(MY_FIRM_ROOT))
MY_TITLE = WFW1
MY_FIRM = $(MY_FIRM_ROOT_CYG)/nwm_firm.bin
#----------------------------------------------------------------------------
MY_SRL = $(MY_TITLE).srl
MY_TAD = $(MY_TITLE).tad
ATTACH_HEADER_COMMAND = $(SYSMENU_TOOLSDIR)/bin/attach_dummyromheader.exe
INSTALL_TARGETS = $(MY_TAD)
INSTALL_DIR = $(ROOT)/build/tools/TwlNMenu/data
LDIRT_CLEAN = $(MY_SRL) $(MY_TAD)
#----------------------------------------------------------------------------
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules
do-build : $(MY_TAD)
$(MY_SRL): $(MY_FIRM)
$(ATTACH_HEADER_COMMAND) -s -l -i $(call empath,$<) -c $(MY_TITLE) -o $@
$(MY_TAD): $(MY_SRL)
$(MAKETAD) -s $< $(MAKETAD_FLAGS) -o $@
#===== End of Makefile =====