mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
リンカスクリプト関連ファイルを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:
parent
7eb7bd8eda
commit
1aa188130b
@ -27,10 +27,12 @@ TWL_NO_STD_PCHDR = True
|
||||
#TWL_CODEGEN = THUMB
|
||||
|
||||
TARGET_TEF = main.tef
|
||||
LCFILE_SPEC = main.lsf
|
||||
LCFILE_SPEC = racoon.lsf
|
||||
LCFILE_TEMPLATE = racoon.lcf.template
|
||||
LDRES_TEMPLATE = racoon.response.template
|
||||
|
||||
CRT0_O = crt0.LTD.TWL.o
|
||||
|
||||
SRCS = main.c \
|
||||
kami_pxi.c \
|
||||
formatter.c \
|
||||
|
||||
@ -10,8 +10,8 @@
|
||||
# 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:: 2007-11-12#$
|
||||
# $Rev: 2249 $
|
||||
# $Date:: 2008-03-11#$
|
||||
# $Rev: 4670 $
|
||||
# $Author: terui $
|
||||
#---------------------------------------------------------------------------
|
||||
MEMORY
|
||||
@ -568,15 +568,6 @@ SECTIONS
|
||||
SDK_LTDAUTOLOAD.LTDMAIN.BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.START;
|
||||
SDK_LTDAUTOLOAD.LTDMAIN.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_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る #
|
||||
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_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 ##########################
|
||||
.binary.LTDAUTOLOAD_INFO:
|
||||
{
|
||||
@ -894,7 +879,7 @@ SECTIONS
|
||||
{
|
||||
### TWL limited extended static module information
|
||||
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 0; # padding
|
||||
|
||||
|
||||
@ -10,9 +10,9 @@
|
||||
# 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:: 2007-12-11#$
|
||||
# $Rev: 2989 $
|
||||
# $Author: terui $
|
||||
# $Date:: $
|
||||
# $Rev$
|
||||
# $Author$
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# Nitro LCF SPEC FILE
|
||||
@ -21,7 +21,7 @@
|
||||
Static $(TARGET_NAME)
|
||||
{
|
||||
Address 0x02380000
|
||||
Library crt0.LTD.TWL.o
|
||||
Library $(CRT0_O)
|
||||
Object $(OBJDIR)/initScfg.o
|
||||
StackSize 1024 1024
|
||||
}
|
||||
@ -29,7 +29,7 @@ Static $(TARGET_NAME)
|
||||
#--------
|
||||
Autoload WRAM
|
||||
{
|
||||
Address 0x037c0000
|
||||
Address $(ADDRESS_LTDWRAM)
|
||||
|
||||
Library libsubpsyscall.a \
|
||||
libsyscall_sp.twl.a \
|
||||
@ -59,6 +59,10 @@ Autoload WRAM
|
||||
|
||||
Library libsdio_sp$(LIBSUFFIX).a
|
||||
|
||||
Library libnvram_sp$(LIBSUFFIX).a
|
||||
Library librtc_sp$(LIBSUFFIX).a
|
||||
|
||||
|
||||
Object * (.etable)
|
||||
Object * (.wram)
|
||||
Object * (.ltdwram)
|
||||
@ -67,13 +71,10 @@ Autoload WRAM
|
||||
Object $(OBJDIR)/formatter.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.
|
||||
# 2007/12/11 OBJECT() による .bss シンボルのリンクがうまくいかないので、
|
||||
# 変数定義箇所に 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.
|
||||
@ -134,9 +135,63 @@ Autoload WRAM
|
||||
Object OBJECT( WaitLoop_BbpAccess , 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
|
||||
@ -144,13 +199,14 @@ Ltdautoload LTDMAIN
|
||||
Address 0x02f88000
|
||||
|
||||
Object * (.ltdmain)
|
||||
Library libnvram_sp$(LIBSUFFIX).a
|
||||
Library librtc_sp$(LIBSUFFIX).a
|
||||
Library libwm_sp$(LIBSUFFIX).a \
|
||||
libnwm_sp$(LIBSUFFIX).a \
|
||||
libathdrv_sp$(LIBSUFFIX).a \
|
||||
libwvr_sp$(LIBSUFFIX).a \
|
||||
libwl_sp$(LIBSUFFIX).a
|
||||
|
||||
Library libwpa_sp$(LIBSUFFIX).a
|
||||
Library libathdrv_sp$(LIBSUFFIX).a
|
||||
|
||||
Library libfatfs_sp$(LIBSUFFIX).a \
|
||||
$(USE_CRYPTO_LIBS)
|
||||
Library $(ISDBG_LIBS_TWL)
|
||||
@ -55,14 +55,19 @@ typedef struct FileProperty {
|
||||
//#define NAND_SEPARATE_READ
|
||||
#define FS_READ_BLOCK_SIZE ( 2 * 1024 )
|
||||
#define FATFS_CLUSTER_SIZE ( 16 * 1024 )
|
||||
|
||||
// ファイル名やファイルサイズ変更への追従が手間なので
|
||||
// HWInfoのライト時にLCFGライブラリでリカバリ生成するようにします
|
||||
|
||||
// FATFSのクラスタサイズは16KBなので、データサイズが決まっていないものは、余裕を持たせて16KBにしておく
|
||||
static const FileProperty s_fileList[] = {
|
||||
{ 128, "nand:/sys/ID.sgn" }, // 現状、全部サイズは適当。中身も空。
|
||||
{ FATFS_CLUSTER_SIZE, "nand:/sys/HWINFO.dat" },
|
||||
{ FATFS_CLUSTER_SIZE, "nand:/shared1/TWLCFG0.dat" },
|
||||
{ FATFS_CLUSTER_SIZE, "nand:/shared1/TWLCFG1.dat" }, // ミラー
|
||||
{ 0, NULL },
|
||||
};
|
||||
//static const FileProperty s_fileList[] = {
|
||||
// { 128, "nand:/sys/ID.sgn" }, // 現状、全部サイズは適当。中身も空。
|
||||
// { LCFG_TWL_HWINFO_FILE_LENGTH, LCFG_TWL_HWINFO_NORMAL_PATH },
|
||||
// { LCFG_TWL_HWINFO_FILE_LENGTH, LCFG_TWL_HWINFO_SECURE_PATH },
|
||||
// { FATFS_CLUSTER_SIZE, "nand:/shared1/TWLCFG0.dat" },
|
||||
// { FATFS_CLUSTER_SIZE, "nand:/shared1/TWLCFG1.dat" }, // ミラー
|
||||
// { 0, NULL },
|
||||
//};
|
||||
|
||||
static const char *s_pDirList0[] = {
|
||||
(const char *)"nand:/sys",
|
||||
@ -214,8 +219,8 @@ ExeFormat(FormatMode format_mode)
|
||||
if (!CheckDirectory ( "nand2:", s_pDirList1 )) { return FALSE; }
|
||||
|
||||
// ファイル生成&チェック
|
||||
if (!CreateFile( &s_fileList[0] )) { return FALSE; }
|
||||
if (!CheckFile ( &s_fileList[0] )) { return FALSE; }
|
||||
// if (!CreateFile( &s_fileList[0] )) { return FALSE; }
|
||||
// if (!CheckFile ( &s_fileList[0] )) { return FALSE; }
|
||||
|
||||
// 成功
|
||||
return TRUE;
|
||||
|
||||
@ -202,7 +202,7 @@ void* FormatProcess2(void)
|
||||
#ifdef DUMP_NAND_TREE
|
||||
NAMUT_DrawNandTree();
|
||||
#endif
|
||||
kamiFontPrintf(24, y_pos, FONT_COLOR_GREEN, " WAIT");
|
||||
kamiFontPrintf(24, y_pos, FONT_COLOR_BLACK, " WAIT");
|
||||
kamiFontLoadScreenData();
|
||||
|
||||
if (NAMUT_Format())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user