リンカスクリプト関連ファイルをracoonベースで統一。

正式にフォーマットする際、HWInfo.datやTWLCFG0.dat などを生成しないように変更。
上記ファイル郡の名称の変更やファイルサイズ変更への追随を怠ると不整合が発生するため。
Write Hardware Info メニューを実行すると LCFG関数内でリカバリ生成されるのでそちらに任せる。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@901 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
kamikawa 2008-03-18 09:30:21 +00:00
parent 7eb7bd8eda
commit 1aa188130b
5 changed files with 89 additions and 41 deletions

View File

@ -27,10 +27,12 @@ TWL_NO_STD_PCHDR = True
#TWL_CODEGEN = THUMB #TWL_CODEGEN = THUMB
TARGET_TEF = main.tef TARGET_TEF = main.tef
LCFILE_SPEC = main.lsf LCFILE_SPEC = racoon.lsf
LCFILE_TEMPLATE = racoon.lcf.template LCFILE_TEMPLATE = racoon.lcf.template
LDRES_TEMPLATE = racoon.response.template LDRES_TEMPLATE = racoon.response.template
CRT0_O = crt0.LTD.TWL.o
SRCS = main.c \ SRCS = main.c \
kami_pxi.c \ kami_pxi.c \
formatter.c \ formatter.c \

View File

@ -10,8 +10,8 @@
# not be disclosed to third parties or copied or duplicated in any form, # 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. # in whole or in part, without the prior written consent of Nintendo.
# #
# $Date:: 2007-11-12#$ # $Date:: 2008-03-11#$
# $Rev: 2249 $ # $Rev: 4670 $
# $Author: terui $ # $Author: terui $
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
MEMORY MEMORY
@ -568,15 +568,6 @@ SECTIONS
SDK_LTDAUTOLOAD.LTDMAIN.BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.START; SDK_LTDAUTOLOAD.LTDMAIN.BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.START;
SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0; SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0;
SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0; SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0;
#### SDK_LTDAUTOLOAD.LTDWRAM.START の位置は間違っているかも
SDK_LTDAUTOLOAD.LTDWRAM.START = 0x03800000;
SDK_LTDAUTOLOAD.LTDWRAM.END = SDK_LTDAUTOLOAD.LTDWRAM.START;
SDK_LTDAUTOLOAD.LTDWRAM.BSS_END = SDK_LTDAUTOLOAD.LTDWRAM.START;
SDK_LTDAUTOLOAD.LTDWRAM.SIZE = 0;
SDK_LTDAUTOLOAD.LTDWRAM.BSS_SIZE = 0;
####
SDK_LTDAUTOLOAD_TOP_START = 0x02e80000; SDK_LTDAUTOLOAD_TOP_START = 0x02e80000;
SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る # SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る #
SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE;
@ -736,12 +727,6 @@ SECTIONS
SDK_LTDAUTOLOAD_LTDMAIN_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.SIZE; SDK_LTDAUTOLOAD_LTDMAIN_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.SIZE;
SDK_LTDAUTOLOAD_LTDMAIN_BSS_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE; SDK_LTDAUTOLOAD_LTDMAIN_BSS_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE;
SDK_LTDAUTOLOAD_LTDWRAM_START = SDK_LTDAUTOLOAD.LTDWRAM.START;
SDK_LTDAUTOLOAD_LTDWRAM_END = SDK_LTDAUTOLOAD.LTDWRAM.END;
SDK_LTDAUTOLOAD_LTDWRAM_BSS_END = SDK_LTDAUTOLOAD.LTDWRAM.BSS_END;
SDK_LTDAUTOLOAD_LTDWRAM_SIZE = SDK_LTDAUTOLOAD.LTDWRAM.SIZE;
SDK_LTDAUTOLOAD_LTDWRAM_BSS_SIZE = SDK_LTDAUTOLOAD.LTDWRAM.BSS_SIZE;
######################### LTDAUTOLOAD_INFO ########################## ######################### LTDAUTOLOAD_INFO ##########################
.binary.LTDAUTOLOAD_INFO: .binary.LTDAUTOLOAD_INFO:
{ {
@ -894,7 +879,7 @@ SECTIONS
{ {
### TWL limited extended static module information ### TWL limited extended static module information
WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address
WRITEW 0; # padding WRITEW SDK_MOUNT_INFO_TABLE; # address of the FS mount information table
WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module
WRITEW 0; # padding WRITEW 0; # padding

View File

@ -10,9 +10,9 @@
# not be disclosed to third parties or copied or duplicated in any form, # 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. # in whole or in part, without the prior written consent of Nintendo.
# #
# $Date:: 2007-12-11#$ # $Date:: $
# $Rev: 2989 $ # $Rev$
# $Author: terui $ # $Author$
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# #
# Nitro LCF SPEC FILE # Nitro LCF SPEC FILE
@ -21,7 +21,7 @@
Static $(TARGET_NAME) Static $(TARGET_NAME)
{ {
Address 0x02380000 Address 0x02380000
Library crt0.LTD.TWL.o Library $(CRT0_O)
Object $(OBJDIR)/initScfg.o Object $(OBJDIR)/initScfg.o
StackSize 1024 1024 StackSize 1024 1024
} }
@ -29,7 +29,7 @@ Static $(TARGET_NAME)
#-------- #--------
Autoload WRAM Autoload WRAM
{ {
Address 0x037c0000 Address $(ADDRESS_LTDWRAM)
Library libsubpsyscall.a \ Library libsubpsyscall.a \
libsyscall_sp.twl.a \ libsyscall_sp.twl.a \
@ -59,6 +59,10 @@ Autoload WRAM
Library libsdio_sp$(LIBSUFFIX).a Library libsdio_sp$(LIBSUFFIX).a
Library libnvram_sp$(LIBSUFFIX).a
Library librtc_sp$(LIBSUFFIX).a
Object * (.etable) Object * (.etable)
Object * (.wram) Object * (.wram)
Object * (.ltdwram) Object * (.ltdwram)
@ -67,13 +71,10 @@ Autoload WRAM
Object $(OBJDIR)/formatter.o Object $(OBJDIR)/formatter.o
Object $(OBJDIR)/nvram_misc.o Object $(OBJDIR)/nvram_misc.o
Library libsea_sp$(LIBSUFFIX).a
Library libcrypto_sp$(LIBSUFFIX).a
# caches in fatfs library, that should be on WRAM. # caches in fatfs library, that should be on WRAM.
# 2007/12/11 OBJECT() による .bss シンボルのリンクがうまくいかないので、 # 2007/12/11 OBJECT() による .bss シンボルのリンクがうまくいかないので、
# 変数定義箇所に pragma で .ltdwram セクションに含まれるように暫定対策しました。 # 変数定義箇所に pragma で .ltdwram セクションに含まれるように暫定対策しました。
#Object OBJECT( FATFSi___mem_drives_structures , libfatfs_sp$(LIBSUFFIX).a) (.bss) # Object OBJECT( FATFSi___mem_drives_structures , libfatfs_sp$(LIBSUFFIX).a) (.bss)
##### #####
# Sub-routines in WL library , that should be on WRAM. # Sub-routines in WL library , that should be on WRAM.
@ -134,9 +135,63 @@ Autoload WRAM
Object OBJECT( WaitLoop_BbpAccess , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WaitLoop_BbpAccess , libwl_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( WaitLoop_RfAccess , libwl_sp$(LIBSUFFIX).a ) (.text) Object OBJECT( WaitLoop_RfAccess , libwl_sp$(LIBSUFFIX).a ) (.text)
# Object OBJECT( s_ar_cookie_mem , libathdrv_sp$(LIBSUFFIX).a ) (.bss)
# Object OBJECT( nin_ar , libathdrv_sp$(LIBSUFFIX).a ) (.bss)
Object OBJECT( a_netbuf_alloc_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( a_netbuf_register_rx_callback , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( nin_driver_tx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( nin_tx_queue_full , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( nin_tx_complete , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( nin_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( ar6000_bitrate_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( ar6000_channelList_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( ar6000_txPwr_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( ar6000_gpio_intr_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( ar6000_gpio_data_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( ar6000_gpio_ack_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( nin_drv_BmiWriteSocReg , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( ar6000_control_tx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( nin_drv_BmiReadMemory , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( nin_drv_BmiWriteMemory , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( wmi_dix_2_dot3 , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( wmi_control_rx_xtnd , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( wmi_control_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( wmi_cmd_send , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( wmi_cmd_send_xtnd , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HIFReadWrite , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTCAddReceivePkt , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTCUnblockRecv , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTCFlushRecvBuffers , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTCSendPktCompletionHandler , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTCIssueSend , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTCTrySend , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTC_PACKET_DEQUEUE , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTCSendPkt , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTCFlushSendPkts , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTCControlTxComplete , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTCControlRecv , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( HTC_ALLOC_CONTROL_TX , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( _ath_delete_timer , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( _ath_untimeout , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( _ath_timeout_ms , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( _ath_init_timer , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( ath_timer_task , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( timer_wakeup_function , libathdrv_sp$(LIBSUFFIX).a ) (.text)
Object OBJECT( wpa_sm_rx_eapol , libwpa_sp$(LIBSUFFIX).a ) (.text)
} }
#--------
Ltdautoload RSVWRAM
{
Address 0x03040000
Object * (.rsvwram)
Library libathdrv_sp$(LIBSUFFIX).a (.bss)
}
#-------- #--------
Ltdautoload LTDMAIN Ltdautoload LTDMAIN
@ -144,13 +199,14 @@ Ltdautoload LTDMAIN
Address 0x02f88000 Address 0x02f88000
Object * (.ltdmain) Object * (.ltdmain)
Library libnvram_sp$(LIBSUFFIX).a
Library librtc_sp$(LIBSUFFIX).a
Library libwm_sp$(LIBSUFFIX).a \ Library libwm_sp$(LIBSUFFIX).a \
libnwm_sp$(LIBSUFFIX).a \ libnwm_sp$(LIBSUFFIX).a \
libathdrv_sp$(LIBSUFFIX).a \
libwvr_sp$(LIBSUFFIX).a \ libwvr_sp$(LIBSUFFIX).a \
libwl_sp$(LIBSUFFIX).a libwl_sp$(LIBSUFFIX).a
Library libwpa_sp$(LIBSUFFIX).a
Library libathdrv_sp$(LIBSUFFIX).a
Library libfatfs_sp$(LIBSUFFIX).a \ Library libfatfs_sp$(LIBSUFFIX).a \
$(USE_CRYPTO_LIBS) $(USE_CRYPTO_LIBS)
Library $(ISDBG_LIBS_TWL) Library $(ISDBG_LIBS_TWL)

View File

@ -55,14 +55,19 @@ typedef struct FileProperty {
//#define NAND_SEPARATE_READ //#define NAND_SEPARATE_READ
#define FS_READ_BLOCK_SIZE ( 2 * 1024 ) #define FS_READ_BLOCK_SIZE ( 2 * 1024 )
#define FATFS_CLUSTER_SIZE ( 16 * 1024 ) #define FATFS_CLUSTER_SIZE ( 16 * 1024 )
// ファイル名やファイルサイズ変更への追従が手間なので
// HWInfoのライト時にLCFGライブラリでリカバリ生成するようにします
// FATFSのクラスタサイズは16KBなので、データサイズが決まっていないものは、余裕を持たせて16KBにしておく // FATFSのクラスタサイズは16KBなので、データサイズが決まっていないものは、余裕を持たせて16KBにしておく
static const FileProperty s_fileList[] = { //static const FileProperty s_fileList[] = {
{ 128, "nand:/sys/ID.sgn" }, // 現状、全部サイズは適当。中身も空。 // { 128, "nand:/sys/ID.sgn" }, // 現状、全部サイズは適当。中身も空。
{ FATFS_CLUSTER_SIZE, "nand:/sys/HWINFO.dat" }, // { LCFG_TWL_HWINFO_FILE_LENGTH, LCFG_TWL_HWINFO_NORMAL_PATH },
{ FATFS_CLUSTER_SIZE, "nand:/shared1/TWLCFG0.dat" }, // { LCFG_TWL_HWINFO_FILE_LENGTH, LCFG_TWL_HWINFO_SECURE_PATH },
{ FATFS_CLUSTER_SIZE, "nand:/shared1/TWLCFG1.dat" }, // ミラー // { FATFS_CLUSTER_SIZE, "nand:/shared1/TWLCFG0.dat" },
{ 0, NULL }, // { FATFS_CLUSTER_SIZE, "nand:/shared1/TWLCFG1.dat" }, // ミラー
}; // { 0, NULL },
//};
static const char *s_pDirList0[] = { static const char *s_pDirList0[] = {
(const char *)"nand:/sys", (const char *)"nand:/sys",
@ -214,8 +219,8 @@ ExeFormat(FormatMode format_mode)
if (!CheckDirectory ( "nand2:", s_pDirList1 )) { return FALSE; } if (!CheckDirectory ( "nand2:", s_pDirList1 )) { return FALSE; }
// ファイル生成&チェック // ファイル生成&チェック
if (!CreateFile( &s_fileList[0] )) { return FALSE; } // if (!CreateFile( &s_fileList[0] )) { return FALSE; }
if (!CheckFile ( &s_fileList[0] )) { return FALSE; } // if (!CheckFile ( &s_fileList[0] )) { return FALSE; }
// 成功 // 成功
return TRUE; return TRUE;

View File

@ -202,7 +202,7 @@ void* FormatProcess2(void)
#ifdef DUMP_NAND_TREE #ifdef DUMP_NAND_TREE
NAMUT_DrawNandTree(); NAMUT_DrawNandTree();
#endif #endif
kamiFontPrintf(24, y_pos, FONT_COLOR_GREEN, " WAIT"); kamiFontPrintf(24, y_pos, FONT_COLOR_BLACK, " WAIT");
kamiFontLoadScreenData(); kamiFontLoadScreenData();
if (NAMUT_Format()) if (NAMUT_Format())