コンポーネントをracoonに変更。

Userアプリに変更。
(バグあり)

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2876 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2009-07-21 08:06:26 +00:00
parent b25b9ce9ea
commit 34bb16ac1b
4 changed files with 658 additions and 234 deletions

View File

@ -1,9 +1,9 @@
#! make -f #! make -f
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Project: TwlSDK - components - armadillo.TWL # Project: TwlSDK - components - racoon.TWL
# File: Makefile # File: Makefile
# #
# Copyright 2008 Nintendo. All rights reserved. # Copyright 2007-2008 Nintendo. All rights reserved.
# #
# These coded instructions, statements, and computer programs contain # These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo # proprietary information of Nintendo of America Inc. and/or Nintendo
@ -11,35 +11,31 @@
# 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:: 2008-08-15#$ # $Date:: 2008-09-18#$
# $Rev: 2167 $ # $Rev: 8573 $
# $Author: yosiokat $ # $Author: okubata_ryoma $
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
override TARGET_PLATFORM = TWL override TARGET_PLATFORM = TWL
override TWL_PROC = ARM7 override TWL_PROC = ARM7
override TWL_ARCHGEN = LIMITED override TWL_ARCHGEN = LIMITED
##override TWL_PLATFORM = TS TWL_NO_STD_PCHDR = True
TWL_NO_STD_PCHDR = True TWL_CODEGEN ?= ALL
override TARGET_CODEGEN = ARM
ifndef TWLSDK_NOCRYPTO
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
SRCS = crt0.SCFG_NOLOCK.c \ SRCDIR += ./src ../../common/ARM7/src
main.c \
kami_pxi.c \
formatter.c \
mcu_firm.c
TARGET_NAME = armadillo SRCS = main.c initScfg.c kami_pxi.c formatter.c mcu_firm.c
TARGET_NEF = $(TARGET_NAME).tef TARGET_NAME = racoon
LCFILE_SPEC = $(TARGET_NAME).lsf
TARGET_NEF = $(TARGET_NAME).tef
LCFILE_SPEC = $(TARGET_NAME).lsf
LCFILE_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).lcf.template LCFILE_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).lcf.template
LDRES_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).response.template LDRES_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).response.template
CRT0_O = crt0.SCFG_NOLOCK.o CRT0_O = crt0.LTD.TWL.o
# スタック不足防止の為、インライン展開せずにコンパイルする # スタック不足防止の為、インライン展開せずにコンパイルする
CCFLAGS_OPT = -O4 -inline off CCFLAGS_OPT = -O4 -inline off
@ -47,11 +43,20 @@ CCFLAGS_OPT = -O4 -inline off
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
include $(TWLSDK_ROOT)/build/buildtools/commondefs include $(TWLSDK_ROOT)/build/buildtools/commondefs
MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA -DSDK_NOINIT #MACRO_FLAGS += -DSDK_ARM7COMP_LTD
ifeq ($(TWL_PLATFORM),BB)
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037e0000'
else
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000'
endif
MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \
-DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a'
LLIBRARY_DIRS += $(TWL_IPL_RED_ROOT)/lib/ARM7-TS/$(TWL_BUILD_DIR) \
./obj/ARM7-TS.LTD/$(TWL_BUILD_DIR)
LINCLUDES += $(ROOT)/build/libraries/spi/ARM7/include \ LINCLUDES += $(ROOT)/build/libraries/spi/ARM7/include \
$(ROOT)/build/libraries/os/common/include \ $(ROOT)/build/libraries/os/common/include \
$(TWL_IPL_RED_ROOT)/include \ $(TWL_IPL_RED_ROOT)/include \
@ -62,20 +67,18 @@ LINCLUDES += $(ROOT)/build/libraries/spi/ARM7/include \
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include/fatfs \ $(ROOT)/build/libraries/fatfs/ARM7.TWL/include/fatfs \
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include/twl/fatfs/ARM7 $(ROOT)/build/libraries/fatfs/ARM7.TWL/include/twl/fatfs/ARM7
SRCDIR += ../../common/ARM7/src
LLIBRARY_DIRS += $(TWL_IPL_RED_ROOT)/lib/ARM7-TS/$(TWL_BUILD_DIR) \ #LLIBRARIES += libwl_sp.TWL.LTD.a libsdio_hcd_twl$(TWL_LIBSUFFIX).a libsdio_busdriver$(TWL_LIBSUFFIX).a libsdio_lib$(TWL_LIBSUFFIX).a libARM7athdrv$(TWL_LIBSUFFIX).a
./obj/ARM7-TS.LTD/$(TWL_BUILD_DIR) LLIBRARIES += libwl_sp.TWL.LTD.a
#LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \
LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ # libcdc_sp$(TWL_LIBSUFFIX).a \
libsdio_sp$(TWL_LIBSUFFIX).a \ # libtpex_sp$(TWL_LIBSUFFIX).a \
libathdrv_sp$(TWL_LIBSUFFIX).a \ # libmicex_sp$(TWL_LIBSUFFIX).a \
libwpa_sp$(TWL_LIBSUFFIX).a \ # libsdio_hcd_twl$(TWL_LIBSUFFIX).a \
libhotsw_sp$(TWL_LIBSUFFIX).a \ # libsdio_busdriver$(TWL_LIBSUFFIX).a \
libreloc_info_sp$(TWL_LIBSUFFIX).a # libsdio_lib$(TWL_LIBSUFFIX).a \
# librompatch_sp$(TWL_LIBSUFFIX).a \
LLIBRARIES += libpm_sp.SYSMENU$(TWL_LIBSUFFIX).a # libARM7athdrv$(TWL_LIBSUFFIX).a
GLIBRARIES := $(filter-out libpm_sp$(TWL_LIBSUFFIX).a,$(GLIBRARIES))
LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES)
@ -84,7 +87,4 @@ do-build: $(TARGETS)
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
include $(TWLSDK_ROOT)/build/buildtools/modulerules include $(TWLSDK_ROOT)/build/buildtools/modulerules
#----------------------------------------------------------------------------
endif #ifndef TWLSDK_NOCRYPTO
#===== End of Makefile ===== #===== End of Makefile =====

View File

@ -1,8 +1,8 @@
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Project: TwlSDK - components - armadillo.TWL Project: TwlSDK - components - mongoose.TWL
File: main.c File: main.c
Copyright 2008 Nintendo. All rights reserved. Copyright 2007-2009 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo proprietary information of Nintendo of America Inc. and/or Nintendo
@ -10,84 +10,120 @@
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:: 2008-08-18#$ $Date:: 2009-06-11#$
$Rev: 2182 $ $Rev: 10743 $
$Author: kamikawa $ $Author: okajima_manabu $
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#include <nitro/types.h> #include <nitro/types.h>
#include <twl/init/crt0.h> #include <twl/init/crt0.h>
#include <twl/memorymap_sp.h> #include <twl/memorymap_sp.h>
#include <twl/os.h> #include <twl/os.h>
#include <twl/os/common/codecmode.h>
#include <nitro/pad.h>
#include <twl/aes.h>
#include <twl/sea.h>
#include <twl/fatfs.h>
#include <twl/nwm.h>
#include <twl/camera.h>
#include <sysmenu.h>
#include <twl/mcu.h>
#include <twl/cdc.h>
#include <nitro/snd.h>
#include <twl/snd/ARM7/sndex_api.h>
#include <twl/rtc.h>
#include <nitro/wvr.h>
#include <twl/spi.h> #include <twl/spi.h>
#include <twl/fatfs.h>
#include <nitro/pad.h>
#include <nitro/std.h>
#include <nitro/snd.h>
#ifndef SDK_ARM7COMP_WO_WIRELESS
#include <nitro/wvr.h>
#include <twl/nwm.h>
#endif // SDK_ARM7COMP_WO_WIRELESS
#ifndef SDK_ARM7COMP_WO_CAMERA
#include <twl/camera.h>
#endif
#include <twl/rtc.h>
#include <nitro/hw/common/lcd.h>
#include <nitro/gx.h>
#include <twl/os/common/codecmode.h>
#include <twl/cdc.h>
#include <twl/snd/ARM7/sndex_api.h>
#include <twl/aes.h>
#include <twl/mcu.h>
#include "nvram_sp.h" #include "nvram_sp.h"
#include "kami_pxi.h" #include "kami_pxi.h"
#include <firm/os/common/system.h> #ifdef SDK_SEA
#include <twl/sea.h>
#endif // ifdef SDK_SEA
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
/* 各スレッド優先度 */ #ifndef SDK_ARM7COMP_WO_WIRELESS
#define THREAD_PRIO_SPI 2 #define WM_WL_HEAP_SIZE 0x2100
#define THREAD_PRIO_MCU 4 // 暫定 #define ATH_DRV_HEAP_SIZE 0x5800
#define THREAD_PRIO_SND 6 #define WPA_HEAP_SIZE 0x1C00
#define THREAD_PRIO_NWM_EVENT 7 #endif // SDK_ARM7COMP_WO_WIRELESS
#define THREAD_PRIO_NWM_SDIO 8
#define THREAD_PRIO_FATFS 8 #define MEM_TYPE_WRAM 0
#define THREAD_PRIO_NWM_COMMAND 9 #define MEM_TYPE_MAIN 1
#define THREAD_PRIO_NWM_WPA 10
#define THREAD_PRIO_HOTSW 11 /* Priorities of each threads */
#define THREAD_PRIO_AES 12 #define THREAD_PRIO_MCU 1 //4 /* ハードウェアリセット時に他のスレッドに優先して動く必要アリ */
#define THREAD_PRIO_SEA 12 #define THREAD_PRIO_SPI 2
#define THREAD_PRIO_RTC 12 #define THREAD_PRIO_SND 6
#define THREAD_PRIO_SNDEX 14 #define THREAD_PRIO_FATFS 8
#define THREAD_PRIO_FS 15 #define THREAD_PRIO_AES 12
#define THREAD_PRIO_SEA 12
#define THREAD_PRIO_RTC 12
#define THREAD_PRIO_SNDEX 14
#define THREAD_PRIO_FS 15
/* OS_THREAD_LAUNCHER_PRIORITY 16 */ /* OS_THREAD_LAUNCHER_PRIORITY 16 */
/* ROM 内登録エリアの拡張言語コード */ #ifndef SDK_ARM7COMP_WO_WIRELESS
#define ROMHEADER_FOR_CHINA_BIT 0x80 #define NWM_DMANO NWMSP_DMA_7
#define ROMHEADER_FOR_KOREA_BIT 0x40 #define THREAD_PRIO_NWM_COMMAND 9
#define THREAD_PRIO_NWM_EVENT 7
#define THREAD_PRIO_NWM_SDIO 8
#define THREAD_PRIO_NWM_WPA 10
#endif // SDK_ARM7COMP_WO_WIRELESS
/* 使用 DMA 番号 */ // ROM 内登録エリアの拡張言語コード
#define DMA_NO_FATFS FATFS_DMA_4 // = 0 #define ROMHEADER_FOR_CHINA_BIT 0x80
#define DMA_NO_NWM 3 #define ROMHEADER_FOR_KOREA_BIT 0x40
/* カードチャタリングカウンタ */
#define CHATTERING_COUNTER 0x1988 // 100ms分 (0x1988 * 15.3us = 100000us)
#include <nitro/main_begin.h>
// エラーメッセージ用の文字列(コードサイズ削減のために用意、MAIN に配置するために const にしない)
static char strARM7[] ="ARM7:";
static char strMemMAIN[] ="MAIN";
static char strMemWRAM[] ="WRAM";
static char strFailedCreateHeap[] ="%sFailedToCreateHeap.(%s)\n";
static char strHeapSizeIs[] ="%s_HeapSize=%d (Margin:%d)\n";
static char strInsufficientHeapSize[] ="%sInsufficientHeapSize. (0x%x < 0x%x)\n";
#include <nitro/main_end.h>
#include <twl/ltdmain_begin.h>
static char strWramBeforeAdd[] ="WRAM(BeforeAddToHeap)";
static char strMainBeforeAdd[] ="MAIN(BeforeAddToHeap)";
#include <twl/ltdmain_end.h>
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static void PrintDebugInfo(void); static void PrintDebugInfo(void);
static OSHeapHandle InitializeAllocateSystem(void); static OSHeapHandle InitializeAllocateSystem(u8 memType);
static void InitializeFatfs(void); static OSHeapHandle InitializeAllocateSystemCore(u8 memType);
static void InitializeNwm(OSHeapHandle hh); #ifdef SDK_TWLHYB
static void InitializeCardPower(void); static OSHeapHandle InitializeAllocateSystemCoreEx(u8 memType);
static void InitializeCdc(void); #endif
static void DummyThread(void* arg);
static void ReadUserInfo(void); static void ReadUserInfo(void);
#ifdef NVRAM_CONFIG_DATA_EX_VERSION #ifdef NVRAM_CONFIG_DATA_EX_VERSION
static BOOL IsValidConfigEx(void); static BOOL IsValidConfigEx(void);
static u16 GetRomValidLanguage(void); static u16 GetRomValidLanguage(void);
static s32 CheckCorrectNCDEx(NVRAMConfigEx* ncdsp); static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp);
#else #else
static s32 CheckCorrectNCD(NVRAMConfig* ncdsp); static s32 CheckCorrectNCD(NVRAMConfig *ncdsp);
#endif #endif
static void VBlankIntr(void); static void VBlankIntr(void);
static void InitializeFatfs(void);
#ifndef SDK_ARM7COMP_WO_WIRELESS
static void InitializeNwm(OSHeapHandle drvHeapHandle, OSHeapHandle wpaHeapHandle);
#endif // SDK_ARM7COMP_WO_WIRELESS
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
#ifdef SDK_TWLHYB
extern void SDK_LTDAUTOLOAD_LTDWRAM_BSS_END(void);
extern void SDK_LTDAUTOLOAD_LTDMAIN_BSS_END(void);
#endif
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: TwlSpMain Name: TwlSpMain
@ -98,64 +134,143 @@ static void VBlankIntr(void);
void void
TwlSpMain(void) TwlSpMain(void)
{ {
OSHeapHandle heapHandle; OSHeapHandle wramHeapHandle;
#ifdef SDK_TWLLTD
#ifndef SDK_ARM7_ONLY_WRAM
OSHeapHandle mainHeapHandle;
#endif
#else
OSHeapHandle mainHeapHandle;
#endif
/* OS 初期化 */
#ifndef SDK_ARM7COMP_WO_WIRELESS
#ifdef SDK_WIRELESS_IN_VRAM
WVR_ShelterExtWram();
#endif
#endif
// OS 初期化
OS_Init(); OS_Init();
PrintDebugInfo(); PrintDebugInfo();
/* NVRAM からユーザー情報読み出し */ // NVRAM からユーザー情報読み出し
ReadUserInfo(); ReadUserInfo();
/* ヒープ領域設定 */ // ヒープ領域設定
heapHandle = InitializeAllocateSystem(); wramHeapHandle = InitializeAllocateSystem(MEM_TYPE_WRAM);
#ifdef SDK_TWLLTD
#ifndef SDK_ARM7_ONLY_WRAM
mainHeapHandle = InitializeAllocateSystem(MEM_TYPE_MAIN);
#endif
#else
mainHeapHandle = InitializeAllocateSystem(MEM_TYPE_MAIN);
#endif
/* ボタン入力サーチ初期化 */ // ボタン入力サーチ初期化
(void)PAD_InitXYButton(); (void)PAD_InitXYButton();
/* 割込み許可 */ // 割り込み許可
(void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr);
(void)OS_EnableIrqMask(OS_IE_V_BLANK); (void)OS_EnableIrqMask(OS_IE_V_BLANK);
(void)GX_VBlankIntr(TRUE); (void)GX_VBlankIntr(TRUE);
(void)OS_EnableIrq(); (void)OS_EnableIrq();
(void)OS_EnableInterrupts(); (void)OS_EnableInterrupts();
#ifndef NAND_INITIALIZER_LIMITED_MODE KamiPxiInit();
KamiPxiInit();
#endif
/* 各ライブラリ初期化 */ // ファイルシステム初期化
AES_Init(THREAD_PRIO_AES); // AES FS_Init(FS_DMA_NOT_USE);
SEA_Init(THREAD_PRIO_SEA); // SEA FS_CreateReadServerThread(THREAD_PRIO_FS);
FS_Init(FS_DMA_NOT_USE); // FS for CARD
FS_CreateReadServerThread(THREAD_PRIO_FS); // FS for CARD
InitializeFatfs(); // FAT-FS
InitializeNwm(heapHandle); // TWL 無線
MCU_InitIrq(THREAD_PRIO_MCU); // マイコン
if (OSi_IsCodecTwlMode() == TRUE) if (OS_IsRunOnTwl() == TRUE)
{ {
InitializeCdc(); // CODEC InitializeFatfs(); // FATFS 初期化
CAMERA_Init(); // カメラ #ifndef SDK_ARM7COMP_WO_WIRELESS
#ifndef SDK_SEA // !暫定処置!
// NWM 初期化
#ifdef SDK_TWLLTD
#ifdef SDK_ARM7_ONLY_WRAM
InitializeNwm(wramHeapHandle, wramHeapHandle); // tarsier コンポーネントでは、ヒープは全て WRAM
#else
InitializeNwm(mainHeapHandle, mainHeapHandle); // LIMITED モードでは 無線のヒープを MAIN から確保
#endif
#else
InitializeNwm(wramHeapHandle, mainHeapHandle); // HYBRID モードでは 無線のヒープを WRAM から確保
#endif
#endif // ifndef SDK_SEA
#endif // SDK_ARM7COMP_WO_WIRELESS
AES_Init(AES_DMA_5, AES_DMA_6, THREAD_PRIO_AES); // AES 初期化
#ifdef SDK_SEA
SEA_Init(THREAD_PRIO_SEA);
#endif // ifdef SDK_SEA
MCU_InitIrq(THREAD_PRIO_MCU); // MCU 初期化
CDC_InitLib(); // CODECライブラリ初期化
} }
SND_Init(THREAD_PRIO_SND); // サウンド #ifndef SDK_ARM7COMP_WO_CAMERA
SNDEX_Init(THREAD_PRIO_SNDEX); // サウンド拡張 if (OSi_IsCodecTwlMode() == TRUE)
RTC_Init(THREAD_PRIO_RTC); // RTC {
WVR_Begin(heapHandle); // NITRO 無線 // カメラ初期化
CAMERA_Init();
/* CODEC が TWL モードでないとシャッター音を強制的に鳴らす
使CODEC TWL
使 */
}
#endif
// サウンド初期化
SND_Init(THREAD_PRIO_SND);
if (OS_IsRunOnTwl() == TRUE)
{
SNDEX_Init(THREAD_PRIO_SNDEX);
}
// RTC 初期化
RTC_Init(THREAD_PRIO_RTC);
// 旧無線初期化
#ifndef SDK_ARM7COMP_WO_WIRELESS
#ifndef SDK_WIRELESS_IN_VRAM
#ifndef SDK_SEA // !暫定処置!
WVR_Begin(wramHeapHandle);
#endif // ifdef SDK_SEA
#else /* SDK_WIRELESS_IN_VRAM */
WVR_Init(wramHeapHandle);
#endif
#endif // SDK_ARM7COMP_WO_WIRELESS
// SPI 初期化
SPI_Init(THREAD_PRIO_SPI); SPI_Init(THREAD_PRIO_SPI);
InitializeCardPower(); // カード電源ON検査プログラム用
while (TRUE) while (TRUE)
{ {
OS_Halt(); OS_Halt();
/* ソフトウェアリセット要求は監視しない */ //---- check reset
/* AGB カートリッジの挿抜チェックは行わない */ if (OS_IsResetOccurred())
/* DS カードの挿抜チェックは行わない */ {
//VIB_STOP
CTRDG_VibPulseEdgeUpdate(NULL);
OS_ResetSystem();
}
//---- check pull out cartridge
CTRDG_CheckPullOut_Polling();
#ifndef SDK_SMALL_BUILD
//---- check pull out card
CARD_CheckPullOut_Polling();
#endif
} }
} }
#include <nitro/main_begin.h>
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: PrintDebugInfo Name: PrintDebugInfo
Description: ARM7 Description: ARM7
@ -165,66 +280,47 @@ TwlSpMain(void)
static void static void
PrintDebugInfo(void) PrintDebugInfo(void)
{ {
OS_TPrintf("ARM7: This component is running on TWL.\n"); if(OS_IsRunOnTwl())
OS_TPrintf("ARM7: This component is \"armadillo.TWL\".\n"); {
} OS_TPrintf("%s TWL\n",strARM7);
}
/*---------------------------------------------------------------------------* else
Name: InitializeAllocateSystem {
Description: OS_TPrintf("%s NITRO\n",strARM7);
Arguments: None. }
Returns: OSHeapHandle - WRAM #ifdef SDK_SEA
*---------------------------------------------------------------------------*/ #ifdef SDK_TWLLTD
static OSHeapHandle OS_TPrintf("%s armadillo.TWL\n",strARM7);
InitializeAllocateSystem(void) #else /* ifdef SDK_TWLLTD */
{ #error invalid parameter combination
OSHeapHandle hh; #endif /* ifdef SDK_TWLLTD else */
void* subLo = (void*)OS_GetWramSubArenaLo(); #else /* ifdef SDK_SEA */
void* subHi = (void*)OS_GetWramSubArenaHi(); #ifdef SDK_TWLLTD
void* privLo = (void*)OS_GetWramSubPrivArenaLo(); #ifdef SDK_ARM7_ONLY_WRAM
void* privHi = (void*)OS_GetWramSubPrivArenaHi(); OS_TPrintf("%s tarsier.TWL\n",strARM7);
#else
if (((u32)privLo == HW_PRV_WRAM) && ((u32)subHi == HW_PRV_WRAM) && ((u32)subLo < HW_PRV_WRAM)) #if defined(SDK_ARM7COMP_WO_WIRELESS) && defined(SDK_ARM7COMP_WO_CAMERA)
{ OS_TPrintf("%s ferret.TWL\n", strARM7);
/* SUB アリーナを SUBPRIV アリーナに吸収 */ #else
OS_SetWramSubArenaHi(subLo); OS_TPrintf("%s racoon.TWL\n",strARM7);
OS_SetWramSubPrivArenaLo(subLo); #endif
privLo = subLo; #endif
} #else /* ifdef SDK_TWLLTD */
#ifdef SDK_WIRELESS_IN_VRAM
/* アリーナを 0 クリア */ OS_TPrintf("%s ichneumon.TWL\n",strARM7);
MI_CpuClear8(privLo, (u32)privHi - (u32)privLo); #else /* ifdef SDK_WIRELESS_IN_VRAM */
OS_TPrintf("%s mongoose.TWL\n",strARM7);
/* ヒープ作成初期化 */ #endif /* ifdef SDK_WIRELESS_IN_VRAM else */
privLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, privLo, privHi, 1); #endif /* ifdef SDK_TWLLTD else */
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, privLo, privHi); #endif /* ifdef SDK_SEA else */
if (hh < 0)
{
OS_Panic("ARM7: Failed to create heap.\n");
}
/* カレントヒープに設定 */
(void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh);
/* ヒープサイズの確認 */
{
u32 heapSize;
heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh);
if (heapSize <= 0)
{
OS_Panic("ARM7: Failed to create heap.\n");
}
OS_TPrintf("ARM7: heap size [%d]\n", heapSize);
}
return hh;
} }
#include <nitro/main_end.h>
#include <twl/ltdwram_begin.h>
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: InitializeFatfs Name: InitializeFatfs
Description: FATFSライブラリを初期化する Description: FATFSライブラリを初期化するFATFS初期化関数内でスレッド休止
Arguments: None. Arguments: None.
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
@ -237,81 +333,410 @@ InitializeFatfs(void)
// do nothing // do nothing
} }
} }
#include <twl/ltdwram_end.h>
#ifndef SDK_ARM7COMP_WO_WIRELESS
#include <twl/ltdwram_begin.h>
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: InitializeNwm Name: InitializeNwm
Description: NWMライブラリを初期化する Description: NWMライブラリを初期化する
Arguments: hh - Arguments: None.
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static void static void
InitializeNwm(OSHeapHandle hh) InitializeNwm(OSHeapHandle drvHeapHandle, OSHeapHandle wpaHeapHandle)
{ {
NwmspInit nwmInit; NwmspInit nwmInit;
/* [TODO] 確保しているヒープ領域が新無線一式が必要としているメモリ量以上かのチェックが必要 */ nwmInit.dmaNo = NWM_DMANO;
nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMAND;
nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT;
nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO;
nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMAND; #ifdef SDK_TWLLTD
nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT; #ifdef SDK_ARM7_ONLY_WRAM
nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO; nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; /* [TODO] */
#else
nwmInit.drvHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */
#endif
#else
nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; /* [TODO] */
#endif
nwmInit.drvHeap.handle = drvHeapHandle;
nwmInit.dmaNo = DMA_NO_NWM; nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA;
nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; #ifdef SDK_TWLLTD
nwmInit.drvHeap.handle = hh; #ifdef SDK_ARM7_ONLY_WRAM
nwmInit.wpaHeap.id = OS_ARENA_WRAM_SUBPRIV; /* [TODO] */
nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA; #else
nwmInit.wpaHeap.id = OS_ARENA_WRAM_SUBPRIV; nwmInit.wpaHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */
nwmInit.wpaHeap.handle = hh; #endif
#else
nwmInit.wpaHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */
#endif
nwmInit.wpaHeap.handle = wpaHeapHandle;
NWMSP_Init(&nwmInit); NWMSP_Init(&nwmInit);
}
}
#include <twl/ltdwram_end.h>
#endif // SDK_ARM7COMP_WO_WIRELESS
#include <twl/ltdwram_begin.h>
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: InitializeCardPower Name: DummyThread
Description: ONする Description: FATFSライブラリCDCライブラリを初期化する際に立てるダミーの
Arguments: None.
Arguments: arg - 使
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static void static void
InitializeCardPower(void) DummyThread(void* arg)
{ {
// チャッタリングカウンタの値を設定 #pragma unused(arg)
reg_MI_MC1 = (u32)((reg_MI_MC1 & ~REG_MI_MC1_CC_MASK) | while (TRUE)
(CHATTERING_COUNTER << REG_MI_MC1_CC_SHIFT)); {
}
}
#include <twl/ltdwram_end.h>
// チャタリングカウンタ分待つことによりCDETが0になる /*---------------------------------------------------------------------------*
OS_SpinWait( OS_MSEC_TO_CPUCYC(200) ); Name: InitializeAllocateSystem
Description:
Arguments: None.
Returns: OSHeapHandle - WRAM
*---------------------------------------------------------------------------*/
static OSHeapHandle InitializeAllocateSystem(u8 memType)
{
// カードスロット電源ON OSHeapHandle hh;
HOTSWi_TurnCardPowerOn(1);
#ifdef SDK_TWLHYB
if( OS_IsRunOnTwl() == TRUE)
{
hh = InitializeAllocateSystemCoreEx(memType); /* Hybrid を TWL で動作させる */
}
else
#endif
{
hh = InitializeAllocateSystemCore(memType); /* Hybrid を DS で動作させる or Limited */
}
return hh;
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: InitializeCdc Name: InitializeAllocateSystemCore
Description: CDCライブラリを初期化する Description:
Hybrid DS Limited TWL
Arguments: None. Arguments: None.
Returns: None. Returns: OSHeapHandle - WRAM
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static void static OSHeapHandle InitializeAllocateSystemCore(u8 memType)
InitializeCdc(void)
{ {
u32 spiLockId; OSHeapHandle hh;
spiLockId = (u32)OS_GetLockID(); /* MAIN */
if (spiLockId == OS_LOCK_ID_ERROR) if(memType == MEM_TYPE_MAIN)
{ {
OS_Warning("OS_GetLockID failed.\n"); {
} void* lo = (void*)OS_GetSubPrivArenaLo();
void* hi = (void*)OS_GetSubPrivArenaHi();
/* CODEC 初期化 */ // アリーナを 0 クリア
SPI_Lock(spiLockId); MI_CpuClear8(lo, (u32)hi - (u32)lo);
CDC_Init();
SPI_Unlock(spiLockId); // メモリ割り当て初期化
lo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1);
// アリーナ下位アドレスを設定
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, lo);
// ヒープ作成
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, lo, hi);
if (hh < 0)
{
OS_Panic(strFailedCreateHeap, strARM7, strMemMAIN);
}
}
// カレントヒープに設定
(void)OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
// ヒープサイズの確認
{
u32 heapSize;
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
{
OS_Panic(strFailedCreateHeap, strARM7, strMemMAIN);
}
#ifdef SDK_TWLLTD
#ifndef SDK_ARM7COMP_WO_WIRELESS
{
if ((ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE) > heapSize)
{
OS_Panic(strInsufficientHeapSize, strARM7, heapSize, ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE);
}
}
OS_TPrintf(strHeapSizeIs, strMemMAIN, heapSize, heapSize - (ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE) );
#else
OS_TPrintf(strHeapSizeIs, strMemMAIN, heapSize, heapSize);
#endif
#else
OS_TPrintf(strHeapSizeIs, strMemMAIN, heapSize, heapSize);
#endif
}
}
/* WRAM */
if( memType == MEM_TYPE_WRAM)
{
{
void* lo = (void*)OS_GetWramSubPrivArenaLo();
void* hi = (void*)OS_GetWramSubPrivArenaHi();
// アリーナを 0 クリア
MI_CpuClear8(lo, (u32)hi - (u32)lo);
// メモリ割り当て初期化
lo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, lo, hi, 1);
// アリーナ下位アドレスを設定
OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, lo);
// ヒープ作成
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, lo, hi);
if (hh < 0)
{
OS_Panic(strFailedCreateHeap, strARM7, strMemWRAM);
}
}
// カレントヒープに設定
(void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh);
// ヒープサイズの確認
{
u32 heapSize;
heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh);
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
{
OS_Panic(strFailedCreateHeap, strARM7, strMemWRAM);
}
#ifndef SDK_ARM7COMP_WO_WIRELESS
if (WM_WL_HEAP_SIZE > heapSize)
{
OS_Panic(strInsufficientHeapSize, strARM7, heapSize, WM_WL_HEAP_SIZE);
}
OS_TPrintf(strHeapSizeIs, strMemWRAM, heapSize, (heapSize-WM_WL_HEAP_SIZE));
#else
OS_TPrintf(strHeapSizeIs, strMemWRAM, heapSize, heapSize);
#endif
}
}
return hh;
} }
//#ifdef WM_PRECALC_ALLOWEDCHANNEL #ifdef SDK_TWLHYB
//extern u16 WMSP_GetAllowedChannel(u16 bitField); #include <twl/ltdwram_begin.h>
//#endif /*---------------------------------------------------------------------------*
Name: InitializeAllocateSystemCoreEx
Description:
Hybrid TWL
Arguments: None.
Returns: OSHeapHandle - WRAM
*---------------------------------------------------------------------------*/
static OSHeapHandle InitializeAllocateSystemCoreEx(u8 memType)
{
OSHeapHandle hh;
if(memType == MEM_TYPE_MAIN)
{
{
void* basicLo = (void*)OS_GetSubPrivArenaLo();
void* basicHi = (void*)OS_GetSubPrivArenaHi();
void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDMAIN_BSS_END, 32);
void* extraHi = (void*)MATH_ROUNDDOWN(HW_MAIN_MEM_SUB, 32);
// メモリ節約のためにコメントアウト
/*
#if SDK_DEBUG
// debug information
OS_TPrintf("ARM7: MAIN arena basicLo = %p\n", basicLo);
OS_TPrintf("ARM7: MAIN arena basicHi = %p\n", basicHi);
OS_TPrintf("ARM7: MAIN arena extraLo = %p\n", extraLo);
OS_TPrintf("ARM7: MAIN arena extraHi = %p\n", extraHi);
#endif
*/
// アリーナを 0 クリア
MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo);
MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo);
// メモリ割り当て初期化
if ((u32)basicLo < (u32)extraLo)
{
basicLo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, basicLo, extraHi, 1);
// アリーナ下位アドレスを設定
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, basicLo);
}
else
{
extraLo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, extraLo, basicHi, 1);
}
// ヒープ作成
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, basicLo, basicHi);
if (hh < 0)
{
OS_Panic(strFailedCreateHeap, strARM7, strMemMAIN);
}
// ヒープサイズの確認
{
u32 heapSize;
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
{
OS_Panic(strFailedCreateHeap, strARM7, strMemMAIN);
}
OS_TPrintf(strHeapSizeIs, strMainBeforeAdd, heapSize, heapSize);
}
// ヒープに拡張ブロックを追加
OS_AddToHeap(OS_ARENA_MAIN_SUBPRIV, hh, extraLo, extraHi);
}
// カレントヒープに設定
(void)OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
// ヒープサイズの確認
{
u32 heapSize;
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
{
OS_Panic(strFailedCreateHeap, strARM7, strMemMAIN);
}
#ifndef SDK_ARM7COMP_WO_WIRELESS
if ((WPA_HEAP_SIZE) > heapSize)
{
OS_Panic(strInsufficientHeapSize, strARM7, heapSize, WPA_HEAP_SIZE);
}
OS_TPrintf(strHeapSizeIs, strMemMAIN, heapSize, (heapSize-WPA_HEAP_SIZE));
#else
OS_TPrintf(strHeapSizeIs, strMemMAIN, heapSize, heapSize);
#endif
}
}
if(memType == MEM_TYPE_WRAM)
{
{
void* basicLo = (void*)OS_GetWramSubPrivArenaLo();
void* basicHi = (void*)OS_GetWramSubPrivArenaHi();
void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDWRAM_BSS_END, 32);
void* extraHi = (void*)MATH_ROUNDDOWN(HW_WRAM_A_HYB_END, 32);
// メモリ節約のためにコメントアウト
/*
#if SDK_DEBUG
// debug information
OS_TPrintf("ARM7: WRAM arena basicLo = %p\n", basicLo);
OS_TPrintf("ARM7: WRAM arena basicHi = %p\n", basicHi);
OS_TPrintf("ARM7: WRAM arena extraLo = %p\n", extraLo);
OS_TPrintf("ARM7: WRAM arena extraHi = %p\n", extraHi);
#endif
*/
// アリーナを 0 クリア
MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo);
MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo);
// メモリ割り当て初期化
if ((u32)basicLo < (u32)extraLo)
{
basicLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, basicLo, extraHi, 1);
// アリーナ下位アドレスを設定
OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, basicLo);
}
else
{
extraLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, extraLo, basicHi, 1);
}
// ヒープ作成
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, basicLo, basicHi);
if (hh < 0)
{
OS_Panic(strFailedCreateHeap, strARM7, strMemWRAM);
}
// ヒープサイズの確認
{
u32 heapSize;
heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh);
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
{
OS_Panic(strFailedCreateHeap, strARM7, strMemWRAM);
}
if (WM_WL_HEAP_SIZE > heapSize)
{
OS_Panic(strInsufficientHeapSize, strARM7, heapSize, WM_WL_HEAP_SIZE);
}
OS_TPrintf(strHeapSizeIs, strWramBeforeAdd, heapSize, (heapSize - WM_WL_HEAP_SIZE) );
}
// ヒープに拡張ブロックを追加
OS_AddToHeap(OS_ARENA_WRAM_SUBPRIV, hh, extraLo, extraHi);
}
// カレントヒープに設定
(void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh);
// ヒープサイズの確認
{
u32 heapSize;
heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh);
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
{
OS_Panic(strFailedCreateHeap, strARM7, strMemWRAM);
}
#ifndef SDK_ARM7COMP_WO_WIRELESS
if (ATH_DRV_HEAP_SIZE + WM_WL_HEAP_SIZE > heapSize)
{
OS_Panic(strInsufficientHeapSize, strARM7, heapSize, WM_WL_HEAP_SIZE + ATH_DRV_HEAP_SIZE );
}
OS_TPrintf(strHeapSizeIs, strMemWRAM, heapSize, heapSize - (WM_WL_HEAP_SIZE + ATH_DRV_HEAP_SIZE) );
#else
OS_TPrintf(strHeapSizeIs, strMemWRAM, heapSize, (heapSize - WM_WL_HEAP_SIZE) );
#endif
}
}
return hh;
}
#include <twl/ltdwram_end.h>
#endif
#ifdef WM_PRECALC_ALLOWEDCHANNEL
extern u16 WMSP_GetAllowedChannel(u16 bitField);
#endif
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: ReadUserInfo Name: ReadUserInfo
@ -405,7 +830,7 @@ static void ReadUserInfo(void)
// 共有領域に展開 // 共有領域に展開
MI_CpuCopy8(wMac, p, 6); MI_CpuCopy8(wMac, p, 6);
} }
/*
#ifdef WM_PRECALC_ALLOWEDCHANNEL #ifdef WM_PRECALC_ALLOWEDCHANNEL
// 使用可能チャンネルから使用許可チャンネルを計算 // 使用可能チャンネルから使用許可チャンネルを計算
{ {
@ -422,7 +847,6 @@ static void ReadUserInfo(void)
*((u16 *)p) = allowedChannel; *((u16 *)p) = allowedChannel;
} }
#endif #endif
*/
} }
#ifdef NVRAM_CONFIG_DATA_EX_VERSION #ifdef NVRAM_CONFIG_DATA_EX_VERSION
@ -642,7 +1066,7 @@ static s32 CheckCorrectNCD(NVRAMConfig *ncdsp)
Returns: None. Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
extern BOOL PMi_Initialized; extern BOOL PMi_Initialized;
extern void PM_SelfBlinkProc(void); void PM_SelfBlinkProc(void);
static void static void
VBlankIntr(void) VBlankIntr(void)

View File

@ -19,7 +19,7 @@
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
SYSM_DISABLE_DEBUG = FALSE SYSM_DISABLE_DEBUG = FALSE
TARGET_FIRM = SYSTEMMENU #TARGET_FIRM = SYSTEMMENU
TARGET_PLATFORM = TWL TARGET_PLATFORM = TWL
TWL_ARCHGEN = LIMITED TWL_ARCHGEN = LIMITED
@ -32,7 +32,7 @@ TARGET_BIN = NandFirmWriter.srl
LCFILE_SPEC = ARM9-TS.lsf LCFILE_SPEC = ARM9-TS.lsf
ROM_SPEC = main.rsf ROM_SPEC = main.rsf
MAKEROM_ARM7_BASE = ../ARM7.TWL/bin/$(TWL_BUILDTYPE_ARM7)/armadillo MAKEROM_ARM7_BASE = ../ARM7.TWL/bin/$(TWL_BUILDTYPE_ARM7)/racoon
MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT)
SRCS = main.c \ SRCS = main.c \
@ -71,7 +71,7 @@ SDK_APPEND_LIBS = \
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.exe
#LDIRT_CLEAN = #LDIRT_CLEAN =
#INSTALL_TARGETS = #INSTALL_TARGETS =

View File

@ -123,22 +123,22 @@ Property
# #
# CommonClientKey: launcher deliver common client Key [TRUE/FALSE] # CommonClientKey: launcher deliver common client Key [TRUE/FALSE]
# #
CommonClientKey TRUE #CommonClientKey TRUE
# #
# HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE]
# #
HwAESSlotB TRUE #HwAESSlotB TRUE
# #
# HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE]
# #
HwAESSlotC TRUE #HwAESSlotC TRUE
# #
# SDCardAccess: sd card access control [TRUE/FALSE] # SDCardAccess: sd card access control [TRUE/FALSE]
# #
SDCardAccess TRUE SDCardAccess Read
# #
# NANDAccess: NAND access control [TRUE/FALSE] # NANDAccess: NAND access control [TRUE/FALSE]
@ -176,7 +176,7 @@ AppendProperty
# #
# Application type : [USER/SYSTEM] # Application type : [USER/SYSTEM]
# don't have to edit # don't have to edit
AppType System #AppType System
# #
# launch title on the launcher : [TRUE/FALSE] # launch title on the launcher : [TRUE/FALSE]
@ -191,7 +191,7 @@ AppendProperty
# #
# Secure title : [TRUE/FALSE] # Secure title : [TRUE/FALSE]
# don't have to edit # don't have to edit
Secure TRUE #Secure TRUE
# #
# Boot allowed Media: [GameCard/NAND] # Boot allowed Media: [GameCard/NAND]