mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
NANDフォーマッターの追加。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@51 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
ca9c620dd0
commit
9bb6013261
53
build/nand_formatter/ARM7/Makefile
Normal file
53
build/nand_formatter/ARM7/Makefile
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#! 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:: 2007-10-09#$
|
||||||
|
# $Rev: 1486 $
|
||||||
|
# $Author: terui $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
TARGET_PLATFORM = TWL
|
||||||
|
TWL_ARCHGEN = LIMITED
|
||||||
|
TWL_PROC = ARM7
|
||||||
|
TWL_NO_STD_PCHDR = TRUE
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SRCS = main.c \
|
||||||
|
dummy.FLXMAIN.c \
|
||||||
|
dummy.FLXWRAM.c \
|
||||||
|
dummy.LTDMAIN.c \
|
||||||
|
dummy.LTDWRAM.c
|
||||||
|
|
||||||
|
TARGET_NAME = formatter_sub
|
||||||
|
|
||||||
|
TARGET_NEF = $(TARGET_NAME).tef
|
||||||
|
LCFILE_SPEC = $(TARGET_NAME).lsf
|
||||||
|
LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template
|
||||||
|
LDRES_TEMPLATE = $(TARGET_NAME).response.template
|
||||||
|
|
||||||
|
CRT0_O = crt0.LTD.TWL.o
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
MACRO_FLAGS += -DSDK_ARM7COMP_LTD
|
||||||
|
|
||||||
|
MAKELCF_FLAGS += -DISTD_LIBS='$(ISTD_LIBS)'
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
||||||
897
build/nand_formatter/ARM7/formatter_sub.lcf.template
Normal file
897
build/nand_formatter/ARM7/formatter_sub.lcf.template
Normal file
@ -0,0 +1,897 @@
|
|||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - demos - FATFS - formatter - formatter_sub.TWL
|
||||||
|
# File: mongoose.lcf.template
|
||||||
|
#
|
||||||
|
# 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$
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
<STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.FLXSUFFIX>
|
||||||
|
|
||||||
|
<FOREACH.AUTOLOADS>
|
||||||
|
<AUTOLOAD.NAME> (RWX) : ORIGIN = <AUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.FLXSUFFIX>
|
||||||
|
<END.AUTOLOADS>
|
||||||
|
binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.FLXSUFFIX>
|
||||||
|
|
||||||
|
<PROPERTY.OVERLAYDEFS>F (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.OVERLAYDEFS><PROPERTY.FLXSUFFIX>
|
||||||
|
<PROPERTY.OVERLAYTABLE>F (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.OVERLAYTABLE><PROPERTY.FLXSUFFIX>
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
<OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.FLXSUFFIX>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
|
||||||
|
arena.MAIN (RW) : ORIGIN = AFTER(<STATIC.NAME><FOREACH.OVERLAYS>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
check.WORKRAM (RWX) : ORIGIN = 0x037f8000, LENGTH = 0x18000 > workram.check
|
||||||
|
check.MAINMEM (RWX) : ORIGIN = 0x02fe0000, LENGTH = 0x1c000 > mainmem.check
|
||||||
|
|
||||||
|
binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||||
|
<FOREACH.LTDAUTOLOADS>
|
||||||
|
<LTDAUTOLOAD.NAME> (RWX) : ORIGIN = <LTDAUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||||
|
<END.LTDAUTOLOADS>
|
||||||
|
binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||||
|
|
||||||
|
<PROPERTY.LTDOVERLAYDEFS>L (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.LTDOVERLAYDEFS><PROPERTY.LTDSUFFIX>
|
||||||
|
<PROPERTY.LTDOVERLAYTABLE>L (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.LTDOVERLAYTABLE><PROPERTY.LTDSUFFIX>
|
||||||
|
<FOREACH.LTDOVERLAYS>
|
||||||
|
<LTDOVERLAY.NAME> (RWXO): ORIGIN = <LTDOVERLAY.ADDRESS>, LENGTH = 0x0 > <LTDOVERLAY.NAME><PROPERTY.LTDSUFFIX>
|
||||||
|
<END.LTDOVERLAYS>
|
||||||
|
|
||||||
|
check.LTDWRAM (RWX) : ORIGIN = 0x03000000, LENGTH = 0x40000 > ltdwram.check
|
||||||
|
check.LTDMAIN (RWX) : ORIGIN = 0x02f88000, LENGTH = 0x58000 > ltdmain.check
|
||||||
|
}
|
||||||
|
|
||||||
|
KEEP_SECTION
|
||||||
|
{
|
||||||
|
.sinit
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
############################ STATIC #################################
|
||||||
|
.<STATIC.NAME>:
|
||||||
|
{
|
||||||
|
ALIGNALL(4);
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||||
|
#
|
||||||
|
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||||
|
<END.STATIC.SEARCHSYMBOLS>
|
||||||
|
|
||||||
|
#
|
||||||
|
# TEXT BLOCK: READ ONLY
|
||||||
|
#
|
||||||
|
SDK_STATIC_START =.;
|
||||||
|
SDK_STATIC_TEXT_START =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
OBJECT(_start,*)
|
||||||
|
<FOREACH.STATIC.OBJECTS=.text>
|
||||||
|
<STATIC.OBJECT=.text:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.text>
|
||||||
|
<STATIC.LIBRARY=.text:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
<FOREACH.STATIC.OBJECTS=.rodata>
|
||||||
|
<STATIC.OBJECT=.rodata:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.rodata>
|
||||||
|
<STATIC.LIBRARY=.rodata:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
<FOREACH.STATIC.OBJECTS=.init>
|
||||||
|
<STATIC.OBJECT=.init:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.init>
|
||||||
|
<STATIC.LIBRARY=.init:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_SINIT_START =.;
|
||||||
|
#:::::::::: ctor
|
||||||
|
<FOREACH.STATIC.OBJECTS=.ctor>
|
||||||
|
<STATIC.OBJECT=.ctor:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.ctor>
|
||||||
|
<STATIC.LIBRARY=.ctor:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
<FOREACH.STATIC.OBJECTS=.sinit>
|
||||||
|
<STATIC.OBJECT=.sinit:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.sinit>
|
||||||
|
<STATIC.LIBRARY=.sinit:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
WRITEW 0;
|
||||||
|
#:::::::::: ctor
|
||||||
|
SDK_STATIC_SINIT_END =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
SDK_STATIC_TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_DATA_START =.;
|
||||||
|
#:::::::::: data
|
||||||
|
<FOREACH.STATIC.OBJECTS=.sdata>
|
||||||
|
<STATIC.OBJECT=.sdata:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.sdata>
|
||||||
|
<STATIC.LIBRARY=.sdata:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
<FOREACH.STATIC.OBJECTS=.data>
|
||||||
|
<STATIC.OBJECT=.data:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.data>
|
||||||
|
<STATIC.LIBRARY=.data:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
#:::::::::: data
|
||||||
|
SDK_STATIC_DATA_END =.;
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_END =.;
|
||||||
|
|
||||||
|
SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START;
|
||||||
|
SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START;
|
||||||
|
SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START;
|
||||||
|
__sinit__ = SDK_STATIC_SINIT_START; # for static initializer
|
||||||
|
|
||||||
|
} > <STATIC.NAME>
|
||||||
|
|
||||||
|
.<STATIC.NAME>.bss:
|
||||||
|
{
|
||||||
|
ALIGNALL(4);
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||||
|
#
|
||||||
|
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||||
|
<END.STATIC.SEARCHSYMBOLS>
|
||||||
|
|
||||||
|
#
|
||||||
|
# BSS BLOCK
|
||||||
|
#
|
||||||
|
SDK_STATIC_BSS_START =.;
|
||||||
|
#:::::::::: bss
|
||||||
|
<FOREACH.STATIC.OBJECTS=.sbss>
|
||||||
|
<STATIC.OBJECT=.sbss:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.sbss>
|
||||||
|
<STATIC.LIBRARY=.sbss:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
<FOREACH.STATIC.OBJECTS=.bss>
|
||||||
|
<STATIC.OBJECT=.bss:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.bss>
|
||||||
|
<STATIC.LIBRARY=.bss:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_BSS_END = .;
|
||||||
|
|
||||||
|
SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
|
||||||
|
|
||||||
|
} >> <STATIC.NAME>
|
||||||
|
|
||||||
|
|
||||||
|
############################ AUTOLOADS ##############################
|
||||||
|
SDK_AUTOLOAD.MAIN.START = 0x02fe0000;
|
||||||
|
SDK_AUTOLOAD.MAIN.END = SDK_AUTOLOAD.MAIN.START;
|
||||||
|
SDK_AUTOLOAD.MAIN.BSS_END = SDK_AUTOLOAD.MAIN.START;
|
||||||
|
SDK_AUTOLOAD.MAIN.SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.MAIN.BSS_SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.WRAM.START = 0x037f8000;
|
||||||
|
SDK_AUTOLOAD.WRAM.END = SDK_AUTOLOAD.WRAM.START;
|
||||||
|
SDK_AUTOLOAD.WRAM.BSS_END = SDK_AUTOLOAD.WRAM.START;
|
||||||
|
SDK_AUTOLOAD.WRAM.SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.WRAM.BSS_SIZE = 0;
|
||||||
|
SDK_AUTOLOAD_START = SDK_STATIC_END;
|
||||||
|
SDK_AUTOLOAD_SIZE = 0;
|
||||||
|
SDK_AUTOLOAD_NUMBER = <NUMBER.AUTOLOADS>;
|
||||||
|
|
||||||
|
<FOREACH.AUTOLOADS>
|
||||||
|
.<AUTOLOAD.NAME>:
|
||||||
|
{
|
||||||
|
ALIGNALL(4);
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||||
|
#
|
||||||
|
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
|
||||||
|
#
|
||||||
|
# TEXT BLOCK: READ ONLY
|
||||||
|
#
|
||||||
|
SDK_AUTOLOAD_<AUTOLOAD.NAME>_ID =<AUTOLOAD.ID>;
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.ID =<AUTOLOAD.ID>;
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.START =.;
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_START =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.text>
|
||||||
|
<AUTOLOAD.OBJECT=.text:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.text>
|
||||||
|
<AUTOLOAD.LIBRARY=.text:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.etable>
|
||||||
|
<AUTOLOAD.OBJECT=.exception:t>
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_ETABLE_START =.;
|
||||||
|
__exception_table_start__ =.;
|
||||||
|
EXCEPTION
|
||||||
|
__exception_table_end__ =.;
|
||||||
|
SDK_STATIC_ETABLE_END =.;
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.rodata>
|
||||||
|
<AUTOLOAD.OBJECT=.rodata:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.rodata>
|
||||||
|
<AUTOLOAD.LIBRARY=.rodata:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE BLOCK
|
||||||
|
#
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START =.;
|
||||||
|
#:::::::::: data
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.wram>
|
||||||
|
<AUTOLOAD.OBJECT=.wram:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.wram>
|
||||||
|
<AUTOLOAD.LIBRARY=.wram:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.sdata>
|
||||||
|
<AUTOLOAD.OBJECT=.sdata:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.sdata>
|
||||||
|
<AUTOLOAD.LIBRARY=.sdata:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.data>
|
||||||
|
<AUTOLOAD.OBJECT=.data:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.data>
|
||||||
|
<AUTOLOAD.LIBRARY=.data:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
#:::::::::: data
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END =.;
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.END =.;
|
||||||
|
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_START;
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START;
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.START;
|
||||||
|
SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE;
|
||||||
|
|
||||||
|
} > <AUTOLOAD.NAME>
|
||||||
|
|
||||||
|
.<AUTOLOAD.NAME>.bss:
|
||||||
|
{
|
||||||
|
ALIGNALL(4);
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||||
|
#
|
||||||
|
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
|
||||||
|
#
|
||||||
|
# BSS BLOCK
|
||||||
|
#
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START = .;
|
||||||
|
#:::::::::: bss
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.wram>
|
||||||
|
<AUTOLOAD.OBJECT=.wram.bss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.wram>
|
||||||
|
<AUTOLOAD.LIBRARY=.wram.bss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.sbss>
|
||||||
|
<AUTOLOAD.OBJECT=.sbss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.sbss>
|
||||||
|
<AUTOLOAD.LIBRARY=.sbss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.bss>
|
||||||
|
<AUTOLOAD.OBJECT=.bss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.bss>
|
||||||
|
<AUTOLOAD.LIBRARY=.bss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_END = .;
|
||||||
|
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START;
|
||||||
|
|
||||||
|
} >> <AUTOLOAD.NAME>
|
||||||
|
|
||||||
|
<END.AUTOLOADS>
|
||||||
|
|
||||||
|
SDK_AUTOLOAD_MAIN_START = SDK_AUTOLOAD.MAIN.START;
|
||||||
|
SDK_AUTOLOAD_MAIN_END = SDK_AUTOLOAD.MAIN.END;
|
||||||
|
SDK_AUTOLOAD_MAIN_BSS_END = SDK_AUTOLOAD.MAIN.BSS_END;
|
||||||
|
SDK_AUTOLOAD_MAIN_SIZE = SDK_AUTOLOAD.MAIN.SIZE;
|
||||||
|
SDK_AUTOLOAD_MAIN_BSS_SIZE = SDK_AUTOLOAD.MAIN.BSS_SIZE;
|
||||||
|
SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START;
|
||||||
|
SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END;
|
||||||
|
SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||||
|
SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE;
|
||||||
|
SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE;
|
||||||
|
|
||||||
|
############################ AUTOLOAD_INFO ##########################
|
||||||
|
.binary.AUTOLOAD_INFO:
|
||||||
|
{
|
||||||
|
<FOREACH.AUTOLOADS>
|
||||||
|
WRITEW ADDR(.<AUTOLOAD.NAME>);
|
||||||
|
WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE;
|
||||||
|
WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_SIZE;
|
||||||
|
<END.AUTOLOADS>
|
||||||
|
|
||||||
|
} > binary.AUTOLOAD_INFO
|
||||||
|
|
||||||
|
SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE;
|
||||||
|
SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO);
|
||||||
|
SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO);
|
||||||
|
|
||||||
|
############################ OVERLAYS ###############################
|
||||||
|
SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>;
|
||||||
|
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
.<OVERLAY.NAME>:<OVERLAY.NAME>
|
||||||
|
{
|
||||||
|
ALIGNALL(4);
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||||
|
#
|
||||||
|
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
|
||||||
|
#
|
||||||
|
# TEXT BLOCK: READ ONLY
|
||||||
|
#
|
||||||
|
SDK_OVERLAY_<OVERLAY.NAME>_ID =<OVERLAY.ID>; ### SEGMENT <OVERLAY.NAME> OVERLAY ID
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.ID =<OVERLAY.ID>;
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.START =.;
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.TEXT_START =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.text>
|
||||||
|
<OVERLAY.OBJECT=.text:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.text>
|
||||||
|
<OVERLAY.LIBRARY=.text:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.rodata>
|
||||||
|
<OVERLAY.OBJECT=.rodata:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.rodata>
|
||||||
|
<OVERLAY.LIBRARY=.rodata:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.init>
|
||||||
|
<OVERLAY.OBJECT=.init:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.init>
|
||||||
|
<OVERLAY.LIBRARY=.init:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.SINIT_START =.;
|
||||||
|
#:::::::::: ctor
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.ctor>
|
||||||
|
<OVERLAY.OBJECT=.ctor:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.ctor>
|
||||||
|
<OVERLAY.LIBRARY=.ctor:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.sinit>
|
||||||
|
<OVERLAY.OBJECT=.sinit:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.sinit>
|
||||||
|
<OVERLAY.LIBRARY=.sinit:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
WRITEW 0;
|
||||||
|
#:::::::::: ctor
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.DATA_START =.;
|
||||||
|
#:::::::::: data
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.sdata>
|
||||||
|
<OVERLAY.OBJECT=.sdata:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.sdata>
|
||||||
|
<OVERLAY.LIBRARY=.sdata:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.data>
|
||||||
|
<OVERLAY.OBJECT=.data:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.data>
|
||||||
|
<OVERLAY.LIBRARY=.data:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
#:::::::::: data
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.DATA_END =.;
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.END =.;
|
||||||
|
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.TEXT_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END - SDK_OVERLAY.<OVERLAY.NAME>.TEXT_START;
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.DATA_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.DATA_END - SDK_OVERLAY.<OVERLAY.NAME>.DATA_START;
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.SIZE = SDK_OVERLAY.<OVERLAY.NAME>.END - SDK_OVERLAY.<OVERLAY.NAME>.START;
|
||||||
|
|
||||||
|
} > <OVERLAY.NAME>
|
||||||
|
|
||||||
|
.<OVERLAY.NAME>.bss:<OVERLAY.NAME>
|
||||||
|
{
|
||||||
|
ALIGNALL(4);
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||||
|
#
|
||||||
|
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
|
||||||
|
#
|
||||||
|
# BSS BLOCK
|
||||||
|
#
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.BSS_START = .;
|
||||||
|
#:::::::::: bss
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.bss>
|
||||||
|
<OVERLAY.OBJECT=.bss:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.bss>
|
||||||
|
<OVERLAY.LIBRARY=.bss:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.sbss>
|
||||||
|
<OVERLAY.OBJECT=.sbss:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.sbss>
|
||||||
|
<OVERLAY.LIBRARY=.sbss:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.BSS_END = .;
|
||||||
|
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.BSS_END - SDK_OVERLAY.<OVERLAY.NAME>.BSS_START;
|
||||||
|
|
||||||
|
} >> <OVERLAY.NAME>
|
||||||
|
|
||||||
|
<END.OVERLAYS>
|
||||||
|
|
||||||
|
############################ ARENA ##################################
|
||||||
|
.arena.MAIN:
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_SECTION_ARENA_START =.;
|
||||||
|
|
||||||
|
} > arena.MAIN
|
||||||
|
|
||||||
|
############################ OVERLAYDEFS ############################
|
||||||
|
.<PROPERTY.OVERLAYDEFS>F:
|
||||||
|
{
|
||||||
|
### <STATIC.NAME> module information
|
||||||
|
WRITEW ADDR(.<STATIC.NAME>); # load address
|
||||||
|
WRITEW _start; # entry address
|
||||||
|
WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module
|
||||||
|
WRITEW _start_AutoloadDoneCallback; # callback autoload done
|
||||||
|
|
||||||
|
### overlay filename
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
WRITES ("<OVERLAY.NAME><PROPERTY.FLXSUFFIX>"); # Overlay <OVERLAY.ID>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
|
||||||
|
} > <PROPERTY.OVERLAYDEFS>F
|
||||||
|
|
||||||
|
############################ OVERLAYTABLE ###########################
|
||||||
|
.<PROPERTY.OVERLAYTABLE>F:
|
||||||
|
{
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
WRITEW <OVERLAY.ID>; # overlay ID
|
||||||
|
WRITEW ADDR(.<OVERLAY.NAME>); # load address
|
||||||
|
WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SIZE; # size of module
|
||||||
|
WRITEW SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE; # size of bss
|
||||||
|
WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SINIT_START; # start address of static init
|
||||||
|
WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END; # end address of static init
|
||||||
|
WRITEW <OVERLAY.ID>; # ROM file ID
|
||||||
|
WRITEW 0; # Reserved
|
||||||
|
<END.OVERLAYS>
|
||||||
|
|
||||||
|
} > <PROPERTY.OVERLAYTABLE>F
|
||||||
|
|
||||||
|
############################ OTHERS #################################
|
||||||
|
SDK_WRAM_ARENA_LO = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||||
|
SDK_SUBPRIV_ARENA_LO = SDK_AUTOLOAD.MAIN.BSS_END;
|
||||||
|
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in WRAM
|
||||||
|
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # allocated in WRAM
|
||||||
|
SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
|
||||||
|
|
||||||
|
.check.WORKRAM:
|
||||||
|
{
|
||||||
|
. = . + SDK_AUTOLOAD.WRAM.BSS_END - SDK_AUTOLOAD.WRAM.START + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||||
|
|
||||||
|
} > check.WORKRAM
|
||||||
|
|
||||||
|
.check.MAINMEM:
|
||||||
|
{
|
||||||
|
. = SDK_SUBPRIV_ARENA_LO;
|
||||||
|
|
||||||
|
} > check.MAINMEM
|
||||||
|
|
||||||
|
########################### LTDAUTOLOADS ############################
|
||||||
|
SDK_LTDAUTOLOAD.LTDMAIN.START = SDK_STATIC_BSS_END;
|
||||||
|
SDK_LTDAUTOLOAD.LTDMAIN.END = SDK_LTDAUTOLOAD.LTDMAIN.START;
|
||||||
|
SDK_LTDAUTOLOAD.LTDMAIN.BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.START;
|
||||||
|
SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0;
|
||||||
|
SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0;
|
||||||
|
SDK_LTDAUTOLOAD.LTDWRAM.START = 0x03000000;
|
||||||
|
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;
|
||||||
|
SDK_LTDAUTOLOAD_SIZE = 0;
|
||||||
|
SDK_LTDAUTOLOAD_NUMBER = <NUMBER.LTDAUTOLOADS>;
|
||||||
|
|
||||||
|
.binary.LTDAUTOLOAD_TOP:
|
||||||
|
{
|
||||||
|
WRITEW 0xdeadbeef;
|
||||||
|
|
||||||
|
} > binary.LTDAUTOLOAD_TOP
|
||||||
|
|
||||||
|
<FOREACH.LTDAUTOLOADS>
|
||||||
|
.<LTDAUTOLOAD.NAME>:
|
||||||
|
{
|
||||||
|
ALIGNALL(4);
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||||
|
#
|
||||||
|
<FOREACH.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <LTDAUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
|
||||||
|
SDK_LTDAUTOLOAD_<LTDAUTOLOAD.NAME>_ID =<LTDAUTOLOAD.ID>;
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.ID =<LTDAUTOLOAD.ID>;
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.START =.;
|
||||||
|
#
|
||||||
|
# TEXT BLOCK: READ ONLY
|
||||||
|
#
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_START =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS=.text>
|
||||||
|
<LTDAUTOLOAD.OBJECT=.text:t>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES=.text>
|
||||||
|
<LTDAUTOLOAD.LIBRARY=.text:t>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS=.rodata>
|
||||||
|
<LTDAUTOLOAD.OBJECT=.rodata:t>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES=.rodata>
|
||||||
|
<LTDAUTOLOAD.LIBRARY=.rodata:t>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE BLOCK
|
||||||
|
#
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_START =.;
|
||||||
|
#:::::::::: data
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS=.sdata>
|
||||||
|
<LTDAUTOLOAD.OBJECT=.sdata:t>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sdata>
|
||||||
|
<LTDAUTOLOAD.LIBRARY=.sdata:t>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS=.data>
|
||||||
|
<LTDAUTOLOAD.OBJECT=.data:t>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES=.data>
|
||||||
|
<LTDAUTOLOAD.LIBRARY=.data:t>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdwram>
|
||||||
|
<LTDAUTOLOAD.OBJECT=.ltdwram:t>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdwram>
|
||||||
|
<LTDAUTOLOAD.LIBRARY=.ltdwram:t>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdmain>
|
||||||
|
<LTDAUTOLOAD.OBJECT=.ltdmain:t>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdmain>
|
||||||
|
<LTDAUTOLOAD.LIBRARY=.ltdmain:t>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
#:::::::::: data
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_END =.;
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.END =.;
|
||||||
|
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_START;
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_START;
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.START;
|
||||||
|
SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE;
|
||||||
|
|
||||||
|
} > <LTDAUTOLOAD.NAME>
|
||||||
|
|
||||||
|
.<LTDAUTOLOAD.NAME>.bss:
|
||||||
|
{
|
||||||
|
ALIGNALL(4);
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||||
|
#
|
||||||
|
<FOREACH.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <LTDAUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
|
||||||
|
#
|
||||||
|
# BSS BLOCK
|
||||||
|
#
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_START =.;
|
||||||
|
#:::::::::: bss
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS=.sbss>
|
||||||
|
<LTDAUTOLOAD.OBJECT=.sbss:t>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sbss>
|
||||||
|
<LTDAUTOLOAD.LIBRARY=.sbss:t>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS=.bss>
|
||||||
|
<LTDAUTOLOAD.OBJECT=.bss:t>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES=.bss>
|
||||||
|
<LTDAUTOLOAD.LIBRARY=.bss:t>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdwram>
|
||||||
|
<LTDAUTOLOAD.OBJECT=.ltdwram.bss:t>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdwram>
|
||||||
|
<LTDAUTOLOAD.LIBRARY=.ltdwram.bss:t>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdmain>
|
||||||
|
<LTDAUTOLOAD.OBJECT=.ltdmain.bss:t>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdmain>
|
||||||
|
<LTDAUTOLOAD.LIBRARY=.ltdmain.bss:t>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_END =.;
|
||||||
|
|
||||||
|
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_START;
|
||||||
|
|
||||||
|
} >> <LTDAUTOLOAD.NAME>
|
||||||
|
|
||||||
|
<END.LTDAUTOLOADS>
|
||||||
|
|
||||||
|
SDK_LTDAUTOLOAD_LTDMAIN_START = SDK_LTDAUTOLOAD.LTDMAIN.START;
|
||||||
|
SDK_LTDAUTOLOAD_LTDMAIN_END = SDK_LTDAUTOLOAD.LTDMAIN.END;
|
||||||
|
SDK_LTDAUTOLOAD_LTDMAIN_BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END;
|
||||||
|
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:
|
||||||
|
{
|
||||||
|
<FOREACH.LTDAUTOLOADS>
|
||||||
|
WRITEW ADDR(.<LTDAUTOLOAD.NAME>);
|
||||||
|
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE;
|
||||||
|
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_SIZE;
|
||||||
|
<END.LTDAUTOLOADS>
|
||||||
|
|
||||||
|
} > binary.LTDAUTOLOAD_INFO
|
||||||
|
|
||||||
|
SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE;
|
||||||
|
SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO);
|
||||||
|
SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO);
|
||||||
|
|
||||||
|
########################### LTDOVERLAYS #############################
|
||||||
|
SDK_LTDOVERLAY_NUMBER = <NUMBER.LTDOVERLAYS>;
|
||||||
|
|
||||||
|
<FOREACH.LTDOVERLAYS>
|
||||||
|
.<LTDOVERLAY.NAME>:<LTDOVERLAY.NAME>
|
||||||
|
{
|
||||||
|
ALIGNALL(4);
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||||
|
#
|
||||||
|
<FOREACH.LTDOVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <LTDOVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.LTDOVERLAY.SEARCHSYMBOLS>
|
||||||
|
|
||||||
|
SDK_LTDOVERLAY_<LTDOVERLAY.NAME>_ID =<LTDOVERLAY.ID>;
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.ID =<LTDOVERLAY.ID>;
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.START =.;
|
||||||
|
#
|
||||||
|
# TEXT BLOCK: READ ONLY
|
||||||
|
#
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_START =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
<FOREACH.LTDOVERLAY.OBJECTS=.text>
|
||||||
|
<LTDOVERLAY.OBJECT=.text:t>
|
||||||
|
<END.LTDOVERLAY.OBJECTS>
|
||||||
|
<FOREACH.LTDOVERLAY.LIBRARIES=.text>
|
||||||
|
<LTDOVERLAY.LIBRARY=.text:t>
|
||||||
|
<END.LTDOVERLAY.LIBRARIES>
|
||||||
|
<FOREACH.LTDOVERLAY.OBJECTS=.rodata>
|
||||||
|
<LTDOVERLAY.OBJECT=.rodata:t>
|
||||||
|
<END.LTDOVERLAY.OBJECTS>
|
||||||
|
<FOREACH.LTDOVERLAY.LIBRARIES=.rodata>
|
||||||
|
<LTDOVERLAY.LIBRARY=.rodata:t>
|
||||||
|
<END.LTDOVERLAY.LIBRARIES>
|
||||||
|
<FOREACH.LTDOVERLAY.OBJECTS=.init>
|
||||||
|
<LTDOVERLAY.OBJECT=.init:t>
|
||||||
|
<END.LTDOVERLAY.OBJECTS>
|
||||||
|
<FOREACH.LTDOVERLAY.LIBRARIES=.init>
|
||||||
|
<LTDOVERLAY.LIBRARY=.init:t>
|
||||||
|
<END.LTDOVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_START =.;
|
||||||
|
#:::::::::: ctor
|
||||||
|
<FOREACH.LTDOVERLAY.OBJECTS=.ctor>
|
||||||
|
<LTDOVERLAY.OBJECT=.ctor:t>
|
||||||
|
<END.LTDOVERLAY.OBJECTS>
|
||||||
|
<FOREACH.LTDOVERLAY.LIBRARIES=.ctor>
|
||||||
|
<LTDOVERLAY.LIBRARY=.ctor:t>
|
||||||
|
<END.LTDOVERLAY.LIBRARIES>
|
||||||
|
<FOREACH.LTDOVERLAY.OBJECTS=.sinit>
|
||||||
|
<LTDOVERLAY.OBJECT=.sinit:t>
|
||||||
|
<END.LTDOVERLAY.OBJECTS>
|
||||||
|
<FOREACH.LTDOVERLAY.LIBRARIES=.sinit>
|
||||||
|
<LTDOVERLAY.LIBRARY=.sinit:t>
|
||||||
|
<END.LTDOVERLAY.LIBRARIES>
|
||||||
|
WRITEW 0;
|
||||||
|
#:::::::::: ctor
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_END =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_START =.;
|
||||||
|
#:::::::::: data
|
||||||
|
<FOREACH.LTDOVERLAY.OBJECTS=.sdata>
|
||||||
|
<LTDOVERLAY.OBJECT=.sdata:t>
|
||||||
|
<END.LTDOVERLAY.OBJECTS>
|
||||||
|
<FOREACH.LTDOVERLAY.LIBRARIES=.sdata>
|
||||||
|
<LTDOVERLAY.LIBRARY=.sdata:t>
|
||||||
|
<END.LTDOVERLAY.LIBRARIES>
|
||||||
|
<FOREACH.LTDOVERLAY.OBJECTS=.data>
|
||||||
|
<LTDOVERLAY.OBJECT=.data:t>
|
||||||
|
<END.LTDOVERLAY.OBJECTS>
|
||||||
|
<FOREACH.LTDOVERLAY.LIBRARIES=.data>
|
||||||
|
<LTDOVERLAY.LIBRARY=.data:t>
|
||||||
|
<END.LTDOVERLAY.LIBRARIES>
|
||||||
|
#:::::::::: data
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_END =.;
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.END =.;
|
||||||
|
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_START;
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_START;
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.START;
|
||||||
|
|
||||||
|
} > <LTDOVERLAY.NAME>
|
||||||
|
|
||||||
|
.<LTDOVERLAY.NAME>.bss:<LTDOVERLAY.NAME>
|
||||||
|
{
|
||||||
|
ALIGNALL(4);
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||||
|
#
|
||||||
|
<FOREACH.LTDOVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <LTDOVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.LTDOVERLAY.SEARCHSYMBOLS>
|
||||||
|
|
||||||
|
#
|
||||||
|
# BSS BLOCK
|
||||||
|
#
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_START =.;
|
||||||
|
#:::::::::: bss
|
||||||
|
<FOREACH.LTDOVERLAY.OBJECTS=.bss>
|
||||||
|
<LTDOVERLAY.OBJECT=.bss:t>
|
||||||
|
<END.LTDOVERLAY.OBJECTS>
|
||||||
|
<FOREACH.LTDOVERLAY.LIBRARIES=.bss>
|
||||||
|
<LTDOVERLAY.LIBRARY=.bss:t>
|
||||||
|
<END.LTDOVERLAY.LIBRARIES>
|
||||||
|
<FOREACH.LTDOVERLAY.OBJECTS=.sbss>
|
||||||
|
<LTDOVERLAY.OBJECT=.sbss:t>
|
||||||
|
<END.LTDOVERLAY.OBJECTS>
|
||||||
|
<FOREACH.LTDOVERLAY.LIBRARIES=.sbss>
|
||||||
|
<LTDOVERLAY.LIBRARY=.sbss:t>
|
||||||
|
<END.LTDOVERLAY.LIBRARIES>
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_END =.;
|
||||||
|
|
||||||
|
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_START;
|
||||||
|
|
||||||
|
} >> <LTDOVERLAY.NAME>
|
||||||
|
|
||||||
|
<END.LTDOVERLAYS>
|
||||||
|
|
||||||
|
########################## LTDOVERLAYDEFS ###########################
|
||||||
|
.<PROPERTY.LTDOVERLAYDEFS>L:
|
||||||
|
{
|
||||||
|
### TWL limited extended static module information
|
||||||
|
WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address
|
||||||
|
WRITEW 0; # padding
|
||||||
|
WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module
|
||||||
|
WRITEW 0; # padding
|
||||||
|
|
||||||
|
### TWL limited overlay filename
|
||||||
|
<FOREACH.LTDOVERLAYS>
|
||||||
|
WRITES ("<LTDOVERLAY.NAME><PROPERTY.LTDSUFFIX>");
|
||||||
|
<END.LTDOVERLAYS>
|
||||||
|
|
||||||
|
} > <PROPERTY.LTDOVERLAYDEFS>L
|
||||||
|
|
||||||
|
######################### LTDOVERLAYTABLE ###########################
|
||||||
|
.<PROPERTY.LTDOVERLAYTABLE>L:
|
||||||
|
{
|
||||||
|
<FOREACH.LTDOVERLAYS>
|
||||||
|
WRITES <LTDOVERLAY.ID> # overlay ID
|
||||||
|
WRITEW ADDR(.<LTDOVERLAY.NAME>); # load address
|
||||||
|
WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SIZE; # size of module
|
||||||
|
WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_SIZE; # size of bss
|
||||||
|
WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_START; # start address of static init
|
||||||
|
WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_END; # end address of static init
|
||||||
|
WRITEW <LTDOVERLAY.ID> # ROM file ID
|
||||||
|
WRITEW 0; # Reserved
|
||||||
|
<END.LTDOVERLAYS>
|
||||||
|
|
||||||
|
} > <PROPERTY.LTDOVERLAYTABLE>L
|
||||||
|
|
||||||
|
############################ OTHERS #################################
|
||||||
|
.check.LTDWRAM:
|
||||||
|
{
|
||||||
|
. = SDK_LTDAUTOLOAD.LTDWRAM.BSS_END;
|
||||||
|
|
||||||
|
} > check.LTDWRAM
|
||||||
|
|
||||||
|
.check.LTDMAIN:
|
||||||
|
{
|
||||||
|
. = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END;
|
||||||
|
|
||||||
|
} > check.LTDMAIN
|
||||||
|
|
||||||
|
}
|
||||||
78
build/nand_formatter/ARM7/formatter_sub.lsf
Normal file
78
build/nand_formatter/ARM7/formatter_sub.lsf
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - demos - FATFS - formatter - formatter_sub
|
||||||
|
# File: mongoose.lsf
|
||||||
|
#
|
||||||
|
# Copyright 2007 Nintendo. All rights reserved.
|
||||||
|
#
|
||||||
|
# These coded insructions, 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$
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Nitro LCF SPEC FILE
|
||||||
|
#
|
||||||
|
#--------
|
||||||
|
Static $(TARGET_NAME)
|
||||||
|
{
|
||||||
|
Address 0x02f88000
|
||||||
|
Library crt0.HYB.TWL.o
|
||||||
|
StackSize 1024 1024
|
||||||
|
}
|
||||||
|
|
||||||
|
#--------
|
||||||
|
Autoload WRAM
|
||||||
|
{
|
||||||
|
Address 0x037f8000
|
||||||
|
|
||||||
|
Library libsubpsyscall.a \
|
||||||
|
$(CW_LIBS) \
|
||||||
|
libos_sp.TWL$(CODEGEN).a \
|
||||||
|
libmi_sp.TWL$(CODEGEN).a \
|
||||||
|
libpad_sp.TWL$(CODEGEN).a \
|
||||||
|
libpxi_sp.TWL$(CODEGEN).a \
|
||||||
|
libstd_sp.TWL$(CODEGEN).a \
|
||||||
|
libexi_sp.TWL$(CODEGEN).a \
|
||||||
|
libspi_sp.TWL$(CODEGEN).a \
|
||||||
|
libpm_sp.TWL$(CODEGEN).a \
|
||||||
|
libcdc_sp.TWL$(CODEGEN).a \
|
||||||
|
libtp_sp.TWL$(CODEGEN).a \
|
||||||
|
libtpex_sp.TWL$(CODEGEN).a \
|
||||||
|
libnvram_sp.TWL$(CODEGEN).a \
|
||||||
|
$(ISTD_LIBS)
|
||||||
|
|
||||||
|
Object * (.etable)
|
||||||
|
Object * (.wram)
|
||||||
|
Object $(OBJDIR)/main.o
|
||||||
|
Object $(OBJDIR)/dummy.FLXWRAM.o
|
||||||
|
}
|
||||||
|
|
||||||
|
#--------
|
||||||
|
Autoload MAIN
|
||||||
|
{
|
||||||
|
Address 0x02fe0000
|
||||||
|
Object $(OBJDIR)/dummy.FLXMAIN.o
|
||||||
|
}
|
||||||
|
|
||||||
|
#--------
|
||||||
|
Ltdautoload LTDWRAM
|
||||||
|
{
|
||||||
|
Address 0x03000000
|
||||||
|
Object * (.ltdwram)
|
||||||
|
Object $(OBJDIR)/dummy.LTDWRAM.o
|
||||||
|
}
|
||||||
|
|
||||||
|
#--------
|
||||||
|
Ltdautoload LTDMAIN
|
||||||
|
{
|
||||||
|
After $(TARGET_NAME)
|
||||||
|
Object * (.ltdmain)
|
||||||
|
Object $(OBJDIR)/dummy.LTDMAIN.o
|
||||||
|
Library libfatfs_sp.TWL$(CODEGEN).a
|
||||||
|
}
|
||||||
|
|
||||||
40
build/nand_formatter/ARM7/formatter_sub.response.template
Normal file
40
build/nand_formatter/ARM7/formatter_sub.response.template
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<FOREACH.STATIC.OBJECTS:f>
|
||||||
|
<STATIC.OBJECT>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES:f>
|
||||||
|
-l<STATIC.LIBRARY>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
<FOREACH.AUTOLOADS>
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS:f>
|
||||||
|
<AUTOLOAD.OBJECT>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES:f>
|
||||||
|
-l<AUTOLOAD.LIBRARY>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
<END.AUTOLOADS>
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
-og <OVERLAY.GROUP>,0 -ol <OVERLAY.NAME>
|
||||||
|
<FOREACH.OVERLAY.OBJECTS:f>
|
||||||
|
<OVERLAY.OBJECT>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES:f>
|
||||||
|
-l<OVERLAY.LIBRARY>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
<FOREACH.LTDAUTOLOADS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.OBJECTS:f>
|
||||||
|
<LTDAUTOLOAD.OBJECT>
|
||||||
|
<END.LTDAUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.LTDAUTOLOAD.LIBRARIES:f>
|
||||||
|
-l<LTDAUTOLOAD.LIBRARY>
|
||||||
|
<END.LTDAUTOLOAD.LIBRARIES>
|
||||||
|
<END.LTDAUTOLOADS>
|
||||||
|
<FOREACH.LTDOVERLAYS>
|
||||||
|
-og <LTDOVERLAY.GROUP>,0 -ol <LTDOVERLAY.NAME>
|
||||||
|
<FOREACH.LTDOVERLAY.OBJECTS:f>
|
||||||
|
<LTDOVERLAY.OBJECT>
|
||||||
|
<END.LTDOVERLAY.OBJECTS>
|
||||||
|
<FOREACH.LTDOVERLAY.LIBRARIES:f>
|
||||||
|
-l<LTDOVERLAY.LIBRARY>
|
||||||
|
<END.LTDOVERLAY.LIBRARIES>
|
||||||
|
<END.LTDOVERLAYS>
|
||||||
27
build/nand_formatter/ARM7/src/dummy.EXTWRAM.c
Normal file
27
build/nand_formatter/ARM7/src/dummy.EXTWRAM.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlIPL
|
||||||
|
File: main.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$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <twl/os.h>
|
||||||
|
|
||||||
|
extern void Dummy_EXTWRAM(void);
|
||||||
|
|
||||||
|
void
|
||||||
|
Dummy_EXTWRAM(void)
|
||||||
|
{
|
||||||
|
OS_Printf("Printed from extra wram area. [%p]\n", Dummy_EXTWRAM);
|
||||||
|
}
|
||||||
|
|
||||||
27
build/nand_formatter/ARM7/src/dummy.FLXMAIN.c
Normal file
27
build/nand_formatter/ARM7/src/dummy.FLXMAIN.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlIPL
|
||||||
|
File: main.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$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <twl/os.h>
|
||||||
|
|
||||||
|
extern void Dummy_FLXMAIN(void);
|
||||||
|
|
||||||
|
void
|
||||||
|
Dummy_FLXMAIN(void)
|
||||||
|
{
|
||||||
|
OS_Printf("Printed from flexible main memory area. [%p]\n", Dummy_FLXMAIN);
|
||||||
|
}
|
||||||
|
|
||||||
27
build/nand_formatter/ARM7/src/dummy.FLXWRAM.c
Normal file
27
build/nand_formatter/ARM7/src/dummy.FLXWRAM.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlIPL
|
||||||
|
File: main.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$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <twl/os.h>
|
||||||
|
|
||||||
|
extern void Dummy_FLXWRAM(void);
|
||||||
|
|
||||||
|
void
|
||||||
|
Dummy_FLXWRAM(void)
|
||||||
|
{
|
||||||
|
OS_Printf("Printed from flexible wram area. [%p]\n", Dummy_FLXWRAM);
|
||||||
|
}
|
||||||
|
|
||||||
27
build/nand_formatter/ARM7/src/dummy.LTDMAIN.c
Normal file
27
build/nand_formatter/ARM7/src/dummy.LTDMAIN.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlIPL
|
||||||
|
File: main.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$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <twl/os.h>
|
||||||
|
|
||||||
|
extern void Dummy_LTDMAIN(void);
|
||||||
|
|
||||||
|
void
|
||||||
|
Dummy_LTDMAIN(void)
|
||||||
|
{
|
||||||
|
OS_Printf("Printed from limited main memory area. [%p]\n", Dummy_LTDMAIN);
|
||||||
|
}
|
||||||
|
|
||||||
27
build/nand_formatter/ARM7/src/dummy.LTDWRAM.c
Normal file
27
build/nand_formatter/ARM7/src/dummy.LTDWRAM.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlIPL
|
||||||
|
File: main.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$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <twl/os.h>
|
||||||
|
|
||||||
|
extern void Dummy_LTDWRAM(void);
|
||||||
|
|
||||||
|
void
|
||||||
|
Dummy_LTDWRAM(void)
|
||||||
|
{
|
||||||
|
OS_Printf("Printed from limited wram area. [%p]\n", Dummy_LTDWRAM);
|
||||||
|
}
|
||||||
|
|
||||||
311
build/nand_formatter/ARM7/src/main.c
Normal file
311
build/nand_formatter/ARM7/src/main.c
Normal file
@ -0,0 +1,311 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlIPL
|
||||||
|
File: main.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$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <nitro/types.h>
|
||||||
|
#include <twl/init/crt0.h>
|
||||||
|
#include <twl/memorymap_sp.h>
|
||||||
|
#include <twl/os.h>
|
||||||
|
#include <twl/spi.h>
|
||||||
|
#include <twl/fatfs.h>
|
||||||
|
#include <nitro/pad.h>
|
||||||
|
#include <nitro/std.h>
|
||||||
|
#include <nitro/card.h>
|
||||||
|
|
||||||
|
|
||||||
|
extern void Dummy_FLXWRAM(void);
|
||||||
|
extern void Dummy_FLXMAIN(void);
|
||||||
|
#ifdef SDK_WIRELESS_IN_VRAM
|
||||||
|
extern void Dummy_EXTWRAM(void);
|
||||||
|
#endif
|
||||||
|
extern void Dummy_LTDWRAM(void);
|
||||||
|
extern void Dummy_LTDMAIN(void);
|
||||||
|
|
||||||
|
static void Pragma_LTDWRAM(void);
|
||||||
|
static void Pragma_LTDMAIN(void);
|
||||||
|
|
||||||
|
static void CreateDirectory( const char *pDrive, const char **ppDirList );
|
||||||
|
static void CheckDirectory( const char *pDrive, const char **ppDirList );
|
||||||
|
|
||||||
|
// const data--------------------------------------------------------
|
||||||
|
static const char *s_dirList0[] = {
|
||||||
|
(const char *)"sys",
|
||||||
|
(const char *)"title",
|
||||||
|
(const char *)"ticket",
|
||||||
|
(const char *)"shared1",
|
||||||
|
(const char *)"import",
|
||||||
|
(const char *)"tmp",
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *s_dirList1[] = {
|
||||||
|
(const char *)"data",
|
||||||
|
(const char *)"photo",
|
||||||
|
(const char *)"shared2",
|
||||||
|
(const char *)"tmp",
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#include <twl/ltdwram_begin.h>
|
||||||
|
static void
|
||||||
|
Pragma_LTDWRAM(void)
|
||||||
|
{
|
||||||
|
OS_Printf("Printed from limited wram area by pragma. [%p]\n", Pragma_LTDWRAM);
|
||||||
|
}
|
||||||
|
#include <twl/ltdwram_end.h>
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#include <twl/ltdmain_begin.h>
|
||||||
|
static void
|
||||||
|
Pragma_LTDMAIN(void)
|
||||||
|
{
|
||||||
|
OS_Printf("Printed from limited main memory area by pragma. [%p]\n", Pragma_LTDMAIN);
|
||||||
|
}
|
||||||
|
#include <twl/ltdmain_end.h>
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: InitializeAllocateSystem
|
||||||
|
|
||||||
|
Description: メモリ割当てシステムを初期化する。
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static void InitializeAllocateSystem(void)
|
||||||
|
{
|
||||||
|
void *tempLo;
|
||||||
|
OSHeapHandle hh;
|
||||||
|
|
||||||
|
OS_TPrintf("OS_GetWramSubPrivArenaLo() = %p\n", OS_GetWramSubPrivArenaLo());
|
||||||
|
OS_TPrintf("OS_GetWramSubPrivArenaHi() = %p\n", OS_GetWramSubPrivArenaHi());
|
||||||
|
OS_TPrintf("OS_GetWramSubArenaLo() = %p\n", OS_GetWramSubArenaLo());
|
||||||
|
OS_TPrintf("OS_GetWramSubArenaHi() = %p\n", OS_GetWramSubArenaHi());
|
||||||
|
OS_TPrintf("OS_GetSubPrivArenaLo() = %p\n", OS_GetSubPrivArenaLo());
|
||||||
|
OS_TPrintf("OS_GetSubPrivArenaHi() = %p\n", OS_GetSubPrivArenaHi());
|
||||||
|
|
||||||
|
OS_TPrintf("call OS_SetWramSubPrivArenaHi(0x0380f980); to fix arena.\n");
|
||||||
|
OS_SetWramSubPrivArenaHi((void*)0x0380f980);
|
||||||
|
|
||||||
|
// メモリ割当て初期化
|
||||||
|
tempLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV,
|
||||||
|
OS_GetWramSubPrivArenaLo(), OS_GetWramSubPrivArenaHi(), 1);
|
||||||
|
|
||||||
|
// アリーナを0クリア
|
||||||
|
MI_CpuClear8(tempLo, (u32)OS_GetWramSubPrivArenaHi() - (u32)tempLo);
|
||||||
|
|
||||||
|
// アリーナ下位アドレスを設定
|
||||||
|
OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, tempLo);
|
||||||
|
// ヒープ作成
|
||||||
|
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV,
|
||||||
|
OS_GetWramSubPrivArenaLo(), OS_GetWramSubPrivArenaHi());
|
||||||
|
|
||||||
|
if (hh < 0)
|
||||||
|
{
|
||||||
|
OS_Panic("ARM7: Fail to create heap.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// カレントヒープに設定
|
||||||
|
(void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: TwlSpMain
|
||||||
|
Description: 起動ベクタ。
|
||||||
|
Arguments: None.
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
TwlSpMain(void)
|
||||||
|
{
|
||||||
|
int nand_fat_partition_num;
|
||||||
|
|
||||||
|
OS_Init();
|
||||||
|
SPI_Init(2);
|
||||||
|
OS_InitTick();
|
||||||
|
OS_InitAlarm();
|
||||||
|
OS_InitThread();
|
||||||
|
(void)PAD_InitXYButton();
|
||||||
|
InitializeAllocateSystem();
|
||||||
|
|
||||||
|
// 割り込みの有効化
|
||||||
|
(void)OS_EnableIrq();
|
||||||
|
(void)OS_EnableInterrupts();
|
||||||
|
|
||||||
|
// FATFSライブラリ用ヒープを生成 (応急的にARM9側の空白部分を間借り)
|
||||||
|
{
|
||||||
|
OSHeapHandle hh;
|
||||||
|
u8 *lo = (u8*)0x02A00000; // OS_GetSubPrivArenaLo()
|
||||||
|
u8 *hi = (u8*)0x02B00000; // OS_GetSubPrivArenaHi()
|
||||||
|
OS_SetSubPrivArenaLo(OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1));
|
||||||
|
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, lo + 32, hi - 32);
|
||||||
|
OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
||||||
|
}
|
||||||
|
|
||||||
|
// FATFSライブラリのSDIOとFATパーサを初期化
|
||||||
|
if(!FATFS_Init(FATFS_DMA_NOT_USE, 8))
|
||||||
|
{
|
||||||
|
OS_TPanic("FATFS_Init() failed.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// NANDをフォーマット
|
||||||
|
{
|
||||||
|
#define FATAL_ERROR() do {} while (TRUE)
|
||||||
|
// ここを編集したら、SDKのFATFS_Init内の同パラメータも修正する必要がある。
|
||||||
|
#define NAND_SIZE 245 // 256MB mobiNANDでの使用可能サイズ(iNANDでは違う値になる。未定。)
|
||||||
|
#define PARTITION_RAW_SIZE 4
|
||||||
|
#define PARTITION_0_SIZE 190
|
||||||
|
#define PARTITION_1_SIZE ( NAND_SIZE - PARTITION_RAW_SIZE - PARTITION_0_SIZE )
|
||||||
|
#define NAND_FAT_PARTITION_NUM 2 // FATパーティション数(RAWパーティションを除く)
|
||||||
|
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* パーティションサイズをプロンプトから設定 */
|
||||||
|
u32 partition_MB_size[5];
|
||||||
|
partition_MB_size[0] = PARTITION_RAW_SIZE; // RAW領域
|
||||||
|
partition_MB_size[1] = PARTITION_0_SIZE; // FAT0領域
|
||||||
|
partition_MB_size[2] = PARTITION_1_SIZE; // FAT1領域
|
||||||
|
nand_fat_partition_num = NAND_FAT_PARTITION_NUM;
|
||||||
|
|
||||||
|
for( i=0; i<nand_fat_partition_num; i++) {
|
||||||
|
char drive[4];
|
||||||
|
STD_TSPrintf( drive, "%c:", 'F'+i);
|
||||||
|
FATFS_UnmountDrive( drive);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FATFSi_SetNANDPartitions(partition_MB_size, nand_fat_partition_num))
|
||||||
|
{
|
||||||
|
// メディア全体をフォーマット
|
||||||
|
if (FATFS_MountDrive("F", FATFS_MEDIA_TYPE_NAND, 0))
|
||||||
|
{
|
||||||
|
const char *path = "F:"; // "F:"がFAT0パーティションになる。
|
||||||
|
if (!FATFS_SetDefaultDrive(path))
|
||||||
|
{
|
||||||
|
FATAL_ERROR();
|
||||||
|
}
|
||||||
|
else if(!FATFS_FormatMedia(path))
|
||||||
|
{
|
||||||
|
FATAL_ERROR();
|
||||||
|
}
|
||||||
|
else if(!FATFS_FormatDrive(path))
|
||||||
|
{
|
||||||
|
FATAL_ERROR();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (i = 1; i < nand_fat_partition_num; ++i)
|
||||||
|
{
|
||||||
|
char drive[4];
|
||||||
|
STD_TSPrintf(drive, "%c:", 'F' + i);
|
||||||
|
if(!FATFS_MountDrive(drive, FATFS_MEDIA_TYPE_NAND, (u32)i))
|
||||||
|
{
|
||||||
|
FATAL_ERROR();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
for (i = 1; i < nand_fat_partition_num; ++i)
|
||||||
|
{
|
||||||
|
char drive[4];
|
||||||
|
STD_TSPrintf(drive, "%c:", 'F' + i);
|
||||||
|
if (!FATFS_FormatDrive(drive))
|
||||||
|
{
|
||||||
|
FATAL_ERROR();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ディレクトリ生成&チェック
|
||||||
|
CreateDirectory( "F:", s_dirList0 );
|
||||||
|
CheckDirectory ( "F:", s_dirList0 );
|
||||||
|
CreateDirectory( "G:", s_dirList1 );
|
||||||
|
CheckDirectory ( "G:", s_dirList1 );
|
||||||
|
|
||||||
|
// ドライブアンマウント
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for( i=0; i<nand_fat_partition_num; i++) {
|
||||||
|
char drive[4];
|
||||||
|
STD_TSPrintf( drive, "%c:", 'F'+i);
|
||||||
|
FATFS_UnmountDrive( drive);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ARM9に完了通知
|
||||||
|
{
|
||||||
|
const CARDRomHeader *header = (const CARDRomHeader *)HW_ROM_HEADER_BUF;;
|
||||||
|
*(u32 *)header->main_ram_address = 0x00000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (TRUE)
|
||||||
|
{
|
||||||
|
OS_Halt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ディレクトリ作成
|
||||||
|
static void CreateDirectory( const char *pDrive, const char **ppDirList )
|
||||||
|
{
|
||||||
|
// デフォルトドライブの指定
|
||||||
|
OS_TPrintf( "\nCreate directory : %s\n", pDrive );
|
||||||
|
if( !FATFS_SetDefaultDrive( pDrive ) ) {
|
||||||
|
FATAL_ERROR();
|
||||||
|
}
|
||||||
|
// 指定されたディレクトリをルートに作成
|
||||||
|
while( *ppDirList ) {
|
||||||
|
OS_TPrintf( " %s...", *ppDirList );
|
||||||
|
if( !FATFS_CreateDirectory( *ppDirList, "rwxrwxrwx") ) {
|
||||||
|
OS_TPrintf( "ng.\n" );
|
||||||
|
FATAL_ERROR();
|
||||||
|
}
|
||||||
|
OS_TPrintf( "ok.\n" );
|
||||||
|
ppDirList++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ディレクトリ存在チェック
|
||||||
|
static void CheckDirectory( const char *pDrive, const char **ppDirList )
|
||||||
|
{
|
||||||
|
// デフォルトドライブの指定
|
||||||
|
OS_TPrintf( "\nCheck directory : %s\n", pDrive );
|
||||||
|
if( !FATFS_SetDefaultDrive( pDrive ) ) {
|
||||||
|
FATAL_ERROR();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 指定されたディレクトリをチェック
|
||||||
|
while( *ppDirList ) {
|
||||||
|
FATFSDirectoryHandle dir = FATFS_OpenDirectory( *ppDirList, "rw");
|
||||||
|
OS_TPrintf( " %s...", *ppDirList );
|
||||||
|
if (dir != NULL)
|
||||||
|
{
|
||||||
|
OS_TPrintf( "ok.\n" );
|
||||||
|
(void)FATFS_CloseDirectory( dir );
|
||||||
|
}else {
|
||||||
|
OS_TPrintf( "ng.\n" );
|
||||||
|
FATAL_ERROR();
|
||||||
|
}
|
||||||
|
ppDirList++;
|
||||||
|
}
|
||||||
|
}
|
||||||
42
build/nand_formatter/ARM9/Makefile
Normal file
42
build/nand_formatter/ARM9/Makefile
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#! 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:: 2007-09-18 #$
|
||||||
|
# $Rev: 972 $
|
||||||
|
# $Author: hatamoto_minoru $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
TARGET_PLATFORM = TWL
|
||||||
|
|
||||||
|
TWL_PROC = ARM9
|
||||||
|
TWL_ARCHGEN = LIMITED
|
||||||
|
TARGET_BIN = formatter.srl
|
||||||
|
|
||||||
|
MAKEROM_ARM7_BASE = ../ARM7/bin/$(TWL_BUILDTYPE_ARM7)/formatter_sub
|
||||||
|
MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).tef
|
||||||
|
|
||||||
|
SRCS = main.c
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = ../ARM7
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
||||||
89
build/nand_formatter/ARM9/src/main.c
Normal file
89
build/nand_formatter/ARM9/src/main.c
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlIPL
|
||||||
|
File: main.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$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <twl.h>
|
||||||
|
#include <twl/fatfs.h>
|
||||||
|
#include <nitro/card.h>
|
||||||
|
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: VBlankIntr
|
||||||
|
|
||||||
|
Description: VBlank interrupt handler
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static void VBlankIntr(void)
|
||||||
|
{
|
||||||
|
//---- check interrupt flag
|
||||||
|
OS_SetIrqCheckFlag(OS_IE_V_BLANK);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: NitroMain
|
||||||
|
|
||||||
|
Description: main
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void NitroMain(void)
|
||||||
|
{
|
||||||
|
OS_InitArena();
|
||||||
|
PXI_Init();
|
||||||
|
OS_InitLock();
|
||||||
|
OS_InitArenaEx();
|
||||||
|
OS_InitIrqTable();
|
||||||
|
OS_SetIrqStackChecker();
|
||||||
|
MI_Init();
|
||||||
|
OS_InitVAlarm();
|
||||||
|
OSi_InitVramExclusive();
|
||||||
|
OS_InitThread();
|
||||||
|
OS_InitReset();
|
||||||
|
OS_Init();
|
||||||
|
GX_Init();
|
||||||
|
|
||||||
|
(void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr);
|
||||||
|
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
|
||||||
|
(void)OS_EnableIrq();
|
||||||
|
(void)GX_VBlankIntr(TRUE);
|
||||||
|
|
||||||
|
FATFS_Init();
|
||||||
|
|
||||||
|
// ARM7からのフォーマット完了通知待ち (てっとりばやく強引な方法で通知している)
|
||||||
|
OS_TPrintf("now formatting NAND partitions...\n");
|
||||||
|
{
|
||||||
|
const CARDRomHeader *header = CARD_GetOwnRomHeader();
|
||||||
|
while (*(u32 *)header->main_ram_address != 0x00000000)
|
||||||
|
{
|
||||||
|
OS_WaitVBlankIntr();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OS_TPrintf("format has completed!\n");
|
||||||
|
OS_Terminate();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*====== End of main.c ======*/
|
||||||
34
build/nand_formatter/Makefile
Normal file
34
build/nand_formatter/Makefile
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlFirm - firmware
|
||||||
|
# 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:$
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLFIRM_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = \
|
||||||
|
ARM7 \
|
||||||
|
ARM9 \
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLFIRM_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
||||||
Loading…
Reference in New Issue
Block a user