mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
最新SDK対応
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@236 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
53bc5f01d3
commit
20d3856cb6
@ -45,12 +45,14 @@ Autoload WRAM
|
|||||||
libmath_sp.TWL$(CODEGEN).a \
|
libmath_sp.TWL$(CODEGEN).a \
|
||||||
libscfg_sp.TWL$(CODEGEN).a \
|
libscfg_sp.TWL$(CODEGEN).a \
|
||||||
libtp_sp.TWL$(CODEGEN).a \
|
libtp_sp.TWL$(CODEGEN).a \
|
||||||
|
libmic_sp.TWL$(CODEGEN).a \
|
||||||
libfs_sp.TWL$(CODEGEN).a \
|
libfs_sp.TWL$(CODEGEN).a \
|
||||||
libcard_sp.TWL$(CODEGEN).a \
|
libcard_sp.TWL$(CODEGEN).a \
|
||||||
libi2c_sp.TWL$(CODEGEN).a \
|
libi2c_sp.TWL$(CODEGEN).a \
|
||||||
libcamera_sp.TWL$(CODEGEN).a \
|
libcamera_sp.TWL$(CODEGEN).a \
|
||||||
libcdc_sp.TWL$(CODEGEN).a \
|
libcdc_sp.TWL$(CODEGEN).a \
|
||||||
libtpex_sp.TWL$(CODEGEN).a \
|
libtpex_sp.TWL$(CODEGEN).a \
|
||||||
|
libmicex_sp.TWL$(CODEGEN).a \
|
||||||
libnvram_sp.TWL$(CODEGEN).a \
|
libnvram_sp.TWL$(CODEGEN).a \
|
||||||
librtc_sp.TWL$(CODEGEN).a \
|
librtc_sp.TWL$(CODEGEN).a \
|
||||||
libwvr_sp.TWL$(CODEGEN).a \
|
libwvr_sp.TWL$(CODEGEN).a \
|
||||||
|
|||||||
@ -30,15 +30,15 @@
|
|||||||
#include <twl/rtc.h>
|
#include <twl/rtc.h>
|
||||||
#include <nitro/hw/common/lcd.h>
|
#include <nitro/hw/common/lcd.h>
|
||||||
#include <nitro/gx.h>
|
#include <nitro/gx.h>
|
||||||
#include <twl/os/ARM7/codecmode.h>
|
#include <twl/os/common/codecmode.h>
|
||||||
#include <twl/cdc.h>
|
#include <twl/cdc.h>
|
||||||
#include <twl/aes.h>
|
#include <twl/aes.h>
|
||||||
#include <twl/mcu.h>
|
#include <twl/mcu.h>
|
||||||
#include <sysmenu/boot/common/boot.h>
|
#include <sysmenu/boot/common/boot.h>
|
||||||
#include <sysmenu/sysmenu_lib/common/sysmenu_work.h>
|
#include <sysmenu/sysmenu_lib/common/sysmenu_work.h>
|
||||||
|
|
||||||
#include <sysmenu/card/common/blowfish.h>
|
#include <sysmenu/card/common/blowfish.h>
|
||||||
#include <sysmenu/card/common/Card.h>
|
#include <sysmenu/card/common/Card.h>
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
定数定義
|
定数定義
|
||||||
@ -82,27 +82,27 @@ void
|
|||||||
TwlSpMain(void)
|
TwlSpMain(void)
|
||||||
{
|
{
|
||||||
OSHeapHandle heapHandle;
|
OSHeapHandle heapHandle;
|
||||||
|
|
||||||
// SYSMワークのクリア
|
// SYSMワークのクリア
|
||||||
MI_CpuClear32( SYSMi_GetWork(), sizeof(SYSM_work) );
|
MI_CpuClear32( SYSMi_GetWork(), sizeof(SYSM_work) );
|
||||||
|
|
||||||
// OS 初期化
|
// OS 初期化
|
||||||
OS_Init();
|
OS_Init();
|
||||||
PrintDebugInfo();
|
PrintDebugInfo();
|
||||||
|
|
||||||
// Cold/Hotスタート判定
|
// Cold/Hotスタート判定
|
||||||
ReadResetParameter();
|
ReadResetParameter();
|
||||||
SYSMi_GetWork()->isARM9Start = TRUE; // ※HW_RED_RESERVEDはNANDファームでクリアしておいて欲しい
|
SYSMi_GetWork()->isARM9Start = TRUE; // ※HW_RED_RESERVEDはNANDファームでクリアしておいて欲しい
|
||||||
|
|
||||||
// ヒープ領域設定
|
// ヒープ領域設定
|
||||||
{
|
{
|
||||||
void *wram = OS_GetWramSubPrivArenaHi();
|
void *wram = OS_GetWramSubPrivArenaHi();
|
||||||
void *mmem = OS_GetSubPrivArenaHi();
|
void *mmem = OS_GetSubPrivArenaHi();
|
||||||
OS_SetSubPrivArenaHi( (void*)SYSM_OWN_ARM7_MMEM_ADDR_END ); // メモリ配置をいじっているので、アリーナHiも変更しないとダメ!!
|
OS_SetSubPrivArenaHi( (void*)SYSM_OWN_ARM7_MMEM_ADDR_END ); // メモリ配置をいじっているので、アリーナHiも変更しないとダメ!!
|
||||||
OS_SetWramSubPrivArenaHi( (void*)SYSM_OWN_ARM7_WRAM_ADDR_END );
|
OS_SetWramSubPrivArenaHi( (void*)SYSM_OWN_ARM7_WRAM_ADDR_END );
|
||||||
OS_TPrintf( "MMEM SUBPRV ARENA HI : %08x -> %08x\n", mmem, OS_GetSubPrivArenaHi() );
|
OS_TPrintf( "MMEM SUBPRV ARENA HI : %08x -> %08x\n", mmem, OS_GetSubPrivArenaHi() );
|
||||||
OS_TPrintf( "WRAM SUBPRV ARENA HI : %08x -> %08x\n", wram, OS_GetWramSubPrivArenaHi() );
|
OS_TPrintf( "WRAM SUBPRV ARENA HI : %08x -> %08x\n", wram, OS_GetWramSubPrivArenaHi() );
|
||||||
}
|
}
|
||||||
heapHandle = InitializeAllocateSystem();
|
heapHandle = InitializeAllocateSystem();
|
||||||
|
|
||||||
// ボタン入力サーチ初期化
|
// ボタン入力サーチ初期化
|
||||||
@ -125,7 +125,7 @@ TwlSpMain(void)
|
|||||||
AES_Init(); // AES 初期化
|
AES_Init(); // AES 初期化
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OS_IsCodecTwlMode() == TRUE)
|
if (OSi_IsCodecTwlMode() == TRUE)
|
||||||
{
|
{
|
||||||
// CODEC 初期化
|
// CODEC 初期化
|
||||||
InitializeCdc();
|
InitializeCdc();
|
||||||
@ -144,11 +144,11 @@ TwlSpMain(void)
|
|||||||
|
|
||||||
// SPI 初期化
|
// SPI 初期化
|
||||||
SPI_Init(THREAD_PRIO_SPI);
|
SPI_Init(THREAD_PRIO_SPI);
|
||||||
|
|
||||||
BOOT_Init();
|
BOOT_Init();
|
||||||
|
|
||||||
// 活栓挿抜機能初期化
|
// 活栓挿抜機能初期化
|
||||||
Cardm_Init();
|
Cardm_Init();
|
||||||
|
|
||||||
// カードがささっていたらブート開始
|
// カードがささっていたらブート開始
|
||||||
Card_Boot();
|
Card_Boot();
|
||||||
@ -169,32 +169,32 @@ TwlSpMain(void)
|
|||||||
// Hot/Coldスタート判定およびリセットパラメータのリード
|
// Hot/Coldスタート判定およびリセットパラメータのリード
|
||||||
static void ReadResetParameter( void )
|
static void ReadResetParameter( void )
|
||||||
{
|
{
|
||||||
// Hot/Coldスタート判定
|
// Hot/Coldスタート判定
|
||||||
#ifdef SDK_FINALROM
|
#ifdef SDK_FINALROM
|
||||||
if( SYSMi_GetMCUFreeRegisterValue() == 0 ) // マイコンフリーレジスタ値が"0"ならColdスタート
|
if( SYSMi_GetMCUFreeRegisterValue() == 0 ) // マイコンフリーレジスタ値が"0"ならColdスタート
|
||||||
#else
|
#else
|
||||||
if( 1 ) // ISデバッガでのデバッグ動作時に常にホットスタート判定されるのを防ぐ
|
if( 1 ) // ISデバッガでのデバッグ動作時に常にホットスタート判定されるのを防ぐ
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
u8 data = 1;
|
u8 data = 1;
|
||||||
MCU_SetFreeRegisters( 0, &data, 1 ); // マイコンフリーレジスタにホットスタートフラグをセット
|
MCU_SetFreeRegisters( 0, &data, 1 ); // マイコンフリーレジスタにホットスタートフラグをセット
|
||||||
SYSMi_GetWork()->isHotStart = FALSE;
|
SYSMi_GetWork()->isHotStart = FALSE;
|
||||||
}else {
|
}else {
|
||||||
SYSMi_GetWork()->isHotStart = TRUE;
|
SYSMi_GetWork()->isHotStart = TRUE;
|
||||||
// リセットパラメータ有効判定
|
// リセットパラメータ有効判定
|
||||||
if( ( STD_StrNCmp( (const char *)&SYSMi_GetResetParamAddr()->header.magicCode,
|
if( ( STD_StrNCmp( (const char *)&SYSMi_GetResetParamAddr()->header.magicCode,
|
||||||
SYSM_RESET_PARAM_MAGIC_CODE,
|
SYSM_RESET_PARAM_MAGIC_CODE,
|
||||||
SYSM_RESET_PARAM_MAGIC_CODE_LEN ) == 0 ) &&
|
SYSM_RESET_PARAM_MAGIC_CODE_LEN ) == 0 ) &&
|
||||||
( SYSMi_GetResetParamAddr()->header.bodyLength > 0 ) &&
|
( SYSMi_GetResetParamAddr()->header.bodyLength > 0 ) &&
|
||||||
( SVC_GetCRC16( 65535, &SYSMi_GetResetParamAddr()->body, SYSMi_GetResetParamAddr()->header.bodyLength ) )
|
( SVC_GetCRC16( 65535, &SYSMi_GetResetParamAddr()->body, SYSMi_GetResetParamAddr()->header.bodyLength ) )
|
||||||
) {
|
) {
|
||||||
// リセットパラメータが有効なら、ワークに退避
|
// リセットパラメータが有効なら、ワークに退避
|
||||||
MI_CpuCopy32 ( SYSMi_GetResetParamAddr(), &SYSMi_GetWork()->resetParam, sizeof(ResetParam) );
|
MI_CpuCopy32 ( SYSMi_GetResetParamAddr(), &SYSMi_GetWork()->resetParam, sizeof(ResetParam) );
|
||||||
SYSMi_GetWork()->isValidResetParam = TRUE;
|
SYSMi_GetWork()->isValidResetParam = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// メインメモリのリセットパラメータをクリアしておく
|
// メインメモリのリセットパラメータをクリアしておく
|
||||||
MI_CpuClear32( SYSMi_GetResetParamAddr(), 0x100 );
|
MI_CpuClear32( SYSMi_GetResetParamAddr(), 0x100 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -305,7 +305,7 @@ InitializeAllocateSystem(void)
|
|||||||
void* basicHi = (void*)OS_GetSubPrivArenaHi();
|
void* basicHi = (void*)OS_GetSubPrivArenaHi();
|
||||||
void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDMAIN_BSS_END, 32);
|
void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDMAIN_BSS_END, 32);
|
||||||
void* extraHi = (void*)MATH_ROUNDDOWN(HW_MAIN_MEM_SUB, 32);
|
void* extraHi = (void*)MATH_ROUNDDOWN(HW_MAIN_MEM_SUB, 32);
|
||||||
|
|
||||||
#if SDK_DEBUG
|
#if SDK_DEBUG
|
||||||
// debug information
|
// debug information
|
||||||
OS_TPrintf("ARM7: MAIN arena basicLo = %p\n", basicLo);
|
OS_TPrintf("ARM7: MAIN arena basicLo = %p\n", basicLo);
|
||||||
@ -313,11 +313,11 @@ InitializeAllocateSystem(void)
|
|||||||
OS_TPrintf("ARM7: MAIN arena extraLo = %p\n", extraLo);
|
OS_TPrintf("ARM7: MAIN arena extraLo = %p\n", extraLo);
|
||||||
OS_TPrintf("ARM7: MAIN arena extraHi = %p\n", extraHi);
|
OS_TPrintf("ARM7: MAIN arena extraHi = %p\n", extraHi);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// アリーナを 0 クリア
|
// アリーナを 0 クリア
|
||||||
MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo);
|
MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo);
|
||||||
MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo);
|
MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo);
|
||||||
|
|
||||||
// メモリ割り当て初期化
|
// メモリ割り当て初期化
|
||||||
if ((u32)basicLo < (u32)extraLo)
|
if ((u32)basicLo < (u32)extraLo)
|
||||||
{
|
{
|
||||||
@ -329,15 +329,15 @@ InitializeAllocateSystem(void)
|
|||||||
{
|
{
|
||||||
extraLo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, extraLo, basicHi, 1);
|
extraLo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, extraLo, basicHi, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ヒープ作成
|
// ヒープ作成
|
||||||
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, basicLo, basicHi);
|
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, basicLo, basicHi);
|
||||||
|
|
||||||
if (hh < 0)
|
if (hh < 0)
|
||||||
{
|
{
|
||||||
OS_Panic("ARM7: Failed to create MAIN heap.\n");
|
OS_Panic("ARM7: Failed to create MAIN heap.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// ヒープに拡張ブロックを追加
|
// ヒープに拡張ブロックを追加
|
||||||
OS_AddToHeap(OS_ARENA_MAIN_SUBPRIV, hh, extraLo, extraHi);
|
OS_AddToHeap(OS_ARENA_MAIN_SUBPRIV, hh, extraLo, extraHi);
|
||||||
}
|
}
|
||||||
@ -346,18 +346,18 @@ InitializeAllocateSystem(void)
|
|||||||
{
|
{
|
||||||
void* lo = (void*)OS_GetSubPrivArenaLo();
|
void* lo = (void*)OS_GetSubPrivArenaLo();
|
||||||
void* hi = (void*)OS_GetSubPrivArenaHi();
|
void* hi = (void*)OS_GetSubPrivArenaHi();
|
||||||
|
|
||||||
// アリーナを 0 クリア
|
// アリーナを 0 クリア
|
||||||
MI_CpuClear8(lo, (u32)hi - (u32)lo);
|
MI_CpuClear8(lo, (u32)hi - (u32)lo);
|
||||||
|
|
||||||
// メモリ割り当て初期化
|
// メモリ割り当て初期化
|
||||||
lo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1);
|
lo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1);
|
||||||
// アリーナ下位アドレスを設定
|
// アリーナ下位アドレスを設定
|
||||||
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, lo);
|
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, lo);
|
||||||
|
|
||||||
// ヒープ作成
|
// ヒープ作成
|
||||||
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, lo, hi);
|
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, lo, hi);
|
||||||
|
|
||||||
if (hh < 0)
|
if (hh < 0)
|
||||||
{
|
{
|
||||||
OS_Panic("ARM7: Failed to MAIN create heap.\n");
|
OS_Panic("ARM7: Failed to MAIN create heap.\n");
|
||||||
@ -368,7 +368,7 @@ InitializeAllocateSystem(void)
|
|||||||
// ヒープサイズの確認
|
// ヒープサイズの確認
|
||||||
{
|
{
|
||||||
u32 heapSize;
|
u32 heapSize;
|
||||||
|
|
||||||
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
||||||
OS_TPrintf("ARM7: MAIN heap size is %d\n", heapSize);
|
OS_TPrintf("ARM7: MAIN heap size is %d\n", heapSize);
|
||||||
}
|
}
|
||||||
@ -379,7 +379,7 @@ InitializeAllocateSystem(void)
|
|||||||
void* basicHi = (void*)OS_GetWramSubPrivArenaHi();
|
void* basicHi = (void*)OS_GetWramSubPrivArenaHi();
|
||||||
void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDWRAM_BSS_END, 32);
|
void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDWRAM_BSS_END, 32);
|
||||||
void* extraHi = (void*)MATH_ROUNDDOWN(HW_WRAM_A_HYB_END, 32);
|
void* extraHi = (void*)MATH_ROUNDDOWN(HW_WRAM_A_HYB_END, 32);
|
||||||
|
|
||||||
#if SDK_DEBUG
|
#if SDK_DEBUG
|
||||||
// debug information
|
// debug information
|
||||||
OS_TPrintf("ARM7: WRAM arena basicLo = %p\n", basicLo);
|
OS_TPrintf("ARM7: WRAM arena basicLo = %p\n", basicLo);
|
||||||
@ -387,11 +387,11 @@ InitializeAllocateSystem(void)
|
|||||||
OS_TPrintf("ARM7: WRAM arena extraLo = %p\n", extraLo);
|
OS_TPrintf("ARM7: WRAM arena extraLo = %p\n", extraLo);
|
||||||
OS_TPrintf("ARM7: WRAM arena extraHi = %p\n", extraHi);
|
OS_TPrintf("ARM7: WRAM arena extraHi = %p\n", extraHi);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// アリーナを 0 クリア
|
// アリーナを 0 クリア
|
||||||
MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo);
|
MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo);
|
||||||
MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo);
|
MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo);
|
||||||
|
|
||||||
// メモリ割り当て初期化
|
// メモリ割り当て初期化
|
||||||
if ((u32)basicLo < (u32)extraLo)
|
if ((u32)basicLo < (u32)extraLo)
|
||||||
{
|
{
|
||||||
@ -403,15 +403,15 @@ InitializeAllocateSystem(void)
|
|||||||
{
|
{
|
||||||
extraLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, extraLo, basicHi, 1);
|
extraLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, extraLo, basicHi, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ヒープ作成
|
// ヒープ作成
|
||||||
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, basicLo, basicHi);
|
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, basicLo, basicHi);
|
||||||
|
|
||||||
if (hh < 0)
|
if (hh < 0)
|
||||||
{
|
{
|
||||||
OS_Panic("ARM7: Failed to WRAM create heap.\n");
|
OS_Panic("ARM7: Failed to WRAM create heap.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// ヒープに拡張ブロックを追加
|
// ヒープに拡張ブロックを追加
|
||||||
OS_AddToHeap(OS_ARENA_WRAM_SUBPRIV, hh, extraLo, extraHi);
|
OS_AddToHeap(OS_ARENA_WRAM_SUBPRIV, hh, extraLo, extraHi);
|
||||||
}
|
}
|
||||||
@ -420,18 +420,18 @@ InitializeAllocateSystem(void)
|
|||||||
{
|
{
|
||||||
void* lo = (void*)OS_GetWramSubPrivArenaLo();
|
void* lo = (void*)OS_GetWramSubPrivArenaLo();
|
||||||
void* hi = (void*)OS_GetWramSubPrivArenaHi();
|
void* hi = (void*)OS_GetWramSubPrivArenaHi();
|
||||||
|
|
||||||
// アリーナを 0 クリア
|
// アリーナを 0 クリア
|
||||||
MI_CpuClear8(lo, (u32)hi - (u32)lo);
|
MI_CpuClear8(lo, (u32)hi - (u32)lo);
|
||||||
|
|
||||||
// メモリ割り当て初期化
|
// メモリ割り当て初期化
|
||||||
lo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, lo, hi, 1);
|
lo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, lo, hi, 1);
|
||||||
// アリーナ下位アドレスを設定
|
// アリーナ下位アドレスを設定
|
||||||
OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, lo);
|
OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, lo);
|
||||||
|
|
||||||
// ヒープ作成
|
// ヒープ作成
|
||||||
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, lo, hi);
|
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, lo, hi);
|
||||||
|
|
||||||
if (hh < 0)
|
if (hh < 0)
|
||||||
{
|
{
|
||||||
OS_Panic("ARM7: Failed to WRAM create heap.\n");
|
OS_Panic("ARM7: Failed to WRAM create heap.\n");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user