コード整理

メモリクリア範囲の変更 (TwlSDK待ちで再変更予定)
リセットパラメータの設定追加

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@176 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2007-11-14 12:13:08 +00:00
parent c2076e0e89
commit 3a622b99af
6 changed files with 303 additions and 174 deletions

View File

@ -324,8 +324,9 @@ INITi_InitCoprocessor(void)
; Region 0: IO_VRAM: Base = 0x04000000, Size = 64MB, I:NC NB / D:NC NB, I:RW / D:RW
; Region 1: MAIN_MEM: Base = 0x02000000, Size = 8MB*, I:Cach Buf / D:Cach Buf, I:RW / D:RW
; (* When hardware is not debugger, size will be reduced to 4MB in OS_InitArena() )
; Region 2: ARM7_RESERVE: Base = 0x027e0000, Size = 128KB, I:NC NB / D:NC NB, I:NA / D:NA
; (* When hardware is not debugger, base will be moved to 0x023e0000 in OS_InitArena() )
;// Region 2: ARM7_RESERVE: Base = 0x027e0000, Size = 128KB, I:NC NB / D:NC NB, I:NA / D:NA
;// (* When hardware is not debugger, base will be moved to 0x023e0000 in OS_InitArena() )
; Region 2: SHARED_WORK: Base = 0x027ff000, Size = 4KB, I:NC NB / D:NC NB, I:NA / D:RW
; Region 3: CARTRIDGE: Base = 0x08000000, Size = 128MB, I:NC NB / D:NC NB, I:NA / D:RW
; Region 4: DTCM: Base = 0x02fe0000, Size = 16KB, I:NC NB / D:NC NB, I:NA / D:RW
; Region 5: ITCM: Base = 0x01000000, Size = 16MB, I:NC NB / D:NC NB, I:RW / D:RW
@ -411,8 +412,10 @@ INITi_InitRegion(void)
@002: /* ハードウェアが NITRO の場合 */
/* (1) メインメモリ */
SET_PROTECTION_A(c1, HW_MAIN_MEM_MAIN, 8MB)
SET_PROTECTION_B(c1, HW_MAIN_MEM_MAIN, 8MB)
//SET_PROTECTION_A(c1, HW_MAIN_MEM_MAIN, 8MB)
//SET_PROTECTION_B(c1, HW_MAIN_MEM_MAIN, 8MB)
SET_PROTECTION_A(c1, HW_MAIN_MEM_MAIN, 32MB)
SET_PROTECTION_B(c1, HW_MAIN_MEM_MAIN, 32MB)
/* Size will be arranged in OS_InitArena(). */
/* (2) ARM7 専用メインメモリ空間 */
@ -421,8 +424,10 @@ INITi_InitRegion(void)
/* Base address will be moved in OS_InitArena(). */
/* (3) カートリッジ */
SET_PROTECTION_A(c3, HW_CTRDG_ROM, 128MB)
SET_PROTECTION_B(c3, HW_CTRDG_ROM, 128MB)
//SET_PROTECTION_A(c3, HW_CTRDG_ROM, 128MB)
//SET_PROTECTION_B(c3, HW_CTRDG_ROM, 128MB)
SET_PROTECTION_A(c3, HW_CTRDG_ROM, 32MB)
SET_PROTECTION_B(c3, HW_CTRDG_ROM, 32MB)
/* (7) ARM9/ARM7 共有メインメモリ空間 */
SET_PROTECTION_A(c7, HW_MAIN_MEM_SHARED, 4KB)
@ -433,15 +438,18 @@ INITi_InitRegion(void)
mcr p15, 0, r0, c2, c0, 1
/* データキャッシュ許可 */
mov r0, #REGION_BIT(0, 1, 0, 0, 0, 0, 1, 0)
//mov r0, #REGION_BIT(0, 1, 0, 0, 0, 0, 1, 0)
mov r0, #REGION_BIT(0, 1, 0, 1, 0, 0, 1, 0)
mcr p15, 0, r0, c2, c0, 0
/* ライトバッファ許可 */
mov r0, #REGION_BIT(0, 1, 0, 0, 0, 0, 0, 0)
//mov r0, #REGION_BIT(0, 1, 0, 0, 0, 0, 0, 0)
mov r0, #REGION_BIT(0, 1, 0, 1, 0, 0, 0, 0)
mcr p15, 0, r0, c3, c0, 0
/* 命令アクセス許可 */
ldr r0, =REGION_ACC(RW, RW, NA, NA, NA, RW, RO, NA)
//ldr r0, =REGION_ACC(RW, RW, NA, NA, NA, RW, RO, NA)
ldr r0, =REGION_ACC(RW, RW, NA, RW, NA, RW, RO, NA)
mcr p15, 0, r0, c5, c0, 3
/* データアクセス許可 */

View File

@ -27,8 +27,8 @@
:
OSi_BootCoreのコピー先決定
(ITCM,DTCM,STACK,TEXT,RODATA,DATAなど (OSi_BootCoreは残す))
OSi_BootCoreは次のプログラムですぐに壊されそうなところを使う
(ITCM,DTCM,STACK,STATICなど (OSBootCore, OSFromFirmBufは残す))
OSBootCoreはできれば次のプログラムですぐに壊されそうなところを使う
#endif
void OSi_BootCore( ROM_Header* rom_header );

View File

@ -15,6 +15,7 @@
$Author$
*---------------------------------------------------------------------------*/
#include <firm.h>
#include <twl/mcu.h>
#include <twl/os/ARM7/debugLED.h>
#define FATFS_HEAP_SIZE (64*1024) // FATFS用ヒープ (サイズ調整必要)
@ -32,11 +33,19 @@ static u8 step = 0x80;
#endif
/*
Profile
PROFILE_ENABLE
main.cかどこかにu32 profile[256]; u32 pf_cnt = 0;
*/
#ifndef SDK_FINALROM
#define PRFILE_MAX 128
u32 profile[PRFILE_MAX];
#define PROFILE_ENABLE
#ifdef SDK_FINALROM // FINALROMで無効化
#undef PROFILE_ENABLE
#endif
#ifdef PROFILE_ENABLE
#define PROFILE_MAX 128
u32 profile[PROFILE_MAX];
u32 pf_cnt = 0;
#endif
@ -55,6 +64,14 @@ static void PreInit(void)
{
OS_Terminate();
}
/*
(4)
*/
*(u32*)HW_RESET_PARAMETER_BUF = (u32)((MCUi_ReadRegister( MCU_REG_TEMP_ADDR + 0 ) << 0)
| (MCUi_ReadRegister( MCU_REG_TEMP_ADDR + 1 ) << 8)
| (MCUi_ReadRegister( MCU_REG_TEMP_ADDR + 2 ) << 16)
| (MCUi_ReadRegister( MCU_REG_TEMP_ADDR + 3 ) << 24));
}
/***************************************************************
@ -71,6 +88,57 @@ static void EraseAll(void)
#endif
}
/***************************************************************
Fatfs4nandInit
FATFS周りの初期化 for NAND
***************************************************************/
static BOOL Fatfs4nandInit(void)
{
/* FATFSライブラリ用にカレントヒープに設定 */
/* WRAM上のfatfsHeapをメインメモリヒープとして登録している */
{
OSHeapHandle hh;
u8 *lo = (u8*)fatfsHeap;
u8 *hi = (u8*)fatfsHeap + FATFS_HEAP_SIZE;
lo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1);
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, lo);
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, OS_GetSubPrivArenaLo(), hi);
OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
}
OS_SetDebugLED(++step);
if ( !FATFS_InitFIRM( &(OSi_GetFromFirmAddr()->SDNandContext) ) )
{
return FALSE;
}
#ifdef PROFILE_ENABLE
// 3: after FATFS
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
if ( !FATFS_MountDriveFIRM( DRIVE_NO, BOOT_DEVICE, PARTITION_NO ) )
{
return FALSE;
}
#ifdef PROFILE_ENABLE
// 4: after Mount
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
PM_BackLightOn( FALSE );
if ( !FATFS_OpenRecentMenu( DRIVE_NO ) )
{
return FALSE;
}
return TRUE;
}
void TwlSpMain( void )
{
// OS_InitDebugLED and OS_SetDebugLED are able to call after OS_Init
@ -83,14 +151,15 @@ void TwlSpMain( void )
#ifndef SDK_FINALROM
I2Ci_WriteRegister(I2C_SLAVE_DEBUG_LED, 0x01, ++step);
#endif
#ifdef PROFILE_ENABLE
// 0: before PXI
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_InitFIRM();
#ifndef SDK_FINALROM
#ifdef PROFILE_ENABLE
// 1: after PXI
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
@ -98,71 +167,53 @@ void TwlSpMain( void )
OS_SetDebugLED(++step);
PM_InitFIRM();
PM_BackLightOn( FALSE );
#ifndef SDK_FINALROM
#ifdef PROFILE_ENABLE
// 2: after PM
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
/* FATFSライブラリ用にカレントヒープに設定 */
if ( !Fatfs4nandInit() )
{
{
OSHeapHandle hh;
u8 *lo = (u8*)fatfsHeap;
u8 *hi = (u8*)fatfsHeap + FATFS_HEAP_SIZE;
lo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1);
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, lo);
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, OS_GetSubPrivArenaLo(), hi);
OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
}
goto end;
}
OS_SetDebugLED(++step);
if ( FATFS_InitFIRM( &(OSi_GetFromFirmAddr()->SDNandContext) ) )
{
#ifndef SDK_FINALROM
// 3: after FATFS
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#ifdef PROFILE_ENABLE
// 5: after Open
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
OS_SetDebugLED(++step);
if ( FATFS_MountDriveFIRM( DRIVE_NO, BOOT_DEVICE, PARTITION_NO ) )
PM_BackLightOn( FALSE );
if ( !FATFS_LoadHeader() && !FATFS_LoadStatic() )
{
goto end;
}
#ifdef PROFILE_ENABLE
// 127: before Boot
pf_cnt = PROFILE_MAX-1;
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
{
int i;
PXI_RecvID();
OS_TPrintf("\n[ARM7] Begin\n");
for (i = 0; i < PROFILE_MAX; i++)
{
BOOL result;
#ifndef SDK_FINALROM
// 4: after Mount
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
result = FATFS_OpenRecentMenu( DRIVE_NO );
if ( result )
{
#ifndef SDK_FINALROM
// 5: after Open
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
if ( FATFS_LoadHeader() && FATFS_LoadStatic() )
{
#ifndef SDK_FINALROM
// 127: before Boot
pf_cnt = PRFILE_MAX-1;
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
FATFS_Boot();
}
}
OS_TPrintf("0x%08X\n", profile[i]);
}
OS_TPrintf("\n[ARM7] End\n");
}
#endif
OS_SetDebugLED(++step);
PM_BackLightOn( TRUE ); // last chance
FATFS_Boot();
end:
OS_SetDebugLED( (u8)(0xF0 | step));
EraseAll();

View File

@ -17,7 +17,23 @@
#include <firm.h>
/* 鍵はどこへ? */
#define RSA_KEY_ADDR OSi_GetFromBromAddr()->rsa_pubkey[7]
#if 0
#define RSA_KEY_ADDR OSi_GetFromFirmAddr()->rsa_pubkey[7]
#else
#define RSA_KEY_ADDR rsa_key
static const u8 rsa_key[128] =
{
0xdf, 0x56, 0x30,
0xc9, 0xae, 0x05, 0x55, 0xe8, 0xdf, 0xbe, 0xe6, 0xb9, 0x30, 0xb9, 0x76, 0x93, 0xb4, 0xc2, 0x20,
0xe7, 0xae, 0x4c, 0x3e, 0xc3, 0xed, 0x27, 0xcf, 0x5d, 0x4f, 0xb5, 0x7d, 0xde, 0x38, 0xbc, 0xfe,
0x25, 0x32, 0xd8, 0x23, 0x98, 0x52, 0xb5, 0xda, 0xf7, 0x39, 0xdc, 0xb3, 0x0a, 0x94, 0x7a, 0x2b,
0x79, 0xe6, 0xe0, 0x4c, 0xbc, 0x21, 0xbd, 0x59, 0xb2, 0xc7, 0xf1, 0xc0, 0xf1, 0xfb, 0x29, 0x75,
0xa1, 0x21, 0x93, 0x01, 0x29, 0x1c, 0x9a, 0xe1, 0x2d, 0x55, 0xfc, 0x7b, 0xb8, 0xcb, 0x07, 0x33,
0xc5, 0x91, 0x0d, 0xc8, 0x45, 0x59, 0xef, 0xbe, 0x58, 0xc7, 0xc1, 0x1d, 0xd5, 0xf2, 0xcf, 0x1f,
0xe0, 0x6d, 0x21, 0x00, 0xcd, 0x42, 0xd8, 0x84, 0x85, 0xe3, 0xb2, 0x02, 0x1a, 0xa5, 0x89, 0x02,
0xa1, 0x96, 0xc6, 0xf7, 0x61, 0x68, 0x66, 0xe6, 0x65, 0x12, 0xb7, 0xf1, 0x49
};
#endif
#define RSA_HEAP_SIZE (4*1024) // RSA用ヒープサイズ (サイズ調整必要)
@ -36,8 +52,8 @@ static SVCSignHeapContext acPool;
#endif
#ifdef PROFILE_ENABLE
#define PRFILE_MAX 128
u32 profile[PRFILE_MAX];
#define PROFILE_MAX 128
u32 profile[PROFILE_MAX];
u32 pf_cnt = 0;
#endif
@ -52,7 +68,7 @@ static void PreInit(void)
*/
// SHARED領域クリア (ここだけでOK?)
MIi_CpuClearFast( 0, (void*)HW_PXI_SIGNAL_PARAM_ARM9, HW_MAIN_MEM_SHARED_END-HW_PXI_SIGNAL_PARAM_ARM9);
MIi_CpuClearFast( 0, (void*)HW_PXI_SIGNAL_PARAM_ARM9, HW_MMEMCHECKER_MAIN-HW_PXI_SIGNAL_PARAM_ARM9);
/*
FromBrom関連
@ -76,10 +92,15 @@ static void PostInit(void)
/*
*/
// (DTCMの手前までの領域を全クリア)
//MI_CpuClearFast( (void*)HW_DELIVER_ARG_BUF_END, SDK_SECTION_ARENA_DTCM_START-HW_DELIVER_ARG_BUF_END );
// (ARM9領域を全クリア)
MI_CpuClearFast( (void*)HW_DELIVER_ARG_BUF_END, HW_MAIN_MEM_MAIN_END-HW_DELIVER_ARG_BUF_END );
// ARM9—̈æðSƒNƒŠƒA
if ( OS_GetResetParameter() )
{
MI_CpuClearFast( (void*)HW_DELIVER_ARG_BUF_END, HW_MAIN_MEM_MAIN_END-HW_DELIVER_ARG_BUF_END );
}
else
{
MI_CpuClearFast( (void*)HW_MAIN_MEM_MAIN, HW_MAIN_MEM_MAIN_SIZE );
}
DC_FlushAll();
}
@ -121,6 +142,7 @@ void TwlMain( void )
OS_InitFIRM();
#ifdef PROFILE_ENABLE
OS_EnableIrq();
OS_InitTick();
// 1: after PXI
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
@ -130,13 +152,28 @@ void TwlMain( void )
PostInit();
#ifdef PROFILE_ENABLE
// 2: after PostInit
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
// load menu
if ( MI_LoadHeader( &acPool, RSA_KEY_ADDR ) && CheckHeader() && MI_LoadStatic() )
{
#ifdef PROFILE_ENABLE
// 127: before Boot
pf_cnt = PRFILE_MAX-1;
pf_cnt = PROFILE_MAX-1;
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
{
int i;
OS_TPrintf("\n[ARM9] Begin\n");
for (i = 0; i < PROFILE_MAX; i++)
{
OS_TPrintf("0x%08X\n", profile[i]);
}
OS_TPrintf("\n[ARM9] End\n");
PXI_NotifyID( FIRM_PXI_ID_NULL );
}
#endif
MI_Boot();

View File

@ -15,6 +15,7 @@
$Author$
*---------------------------------------------------------------------------*/
#include <firm.h>
#include <twl/mcu.h>
#include <twl/os/ARM7/debugLED.h>
#define FATFS_HEAP_SIZE (64*1024) // FATFS用ヒープ (サイズ調整必要)
@ -65,6 +66,13 @@ static void PreInit(void)
{
OS_Terminate();
}
/*
(4)
*/
*(u32*)HW_RESET_PARAMETER_BUF = (u32)((MCUi_ReadRegister( MCU_REG_TEMP_ADDR + 0 ) << 0)
| (MCUi_ReadRegister( MCU_REG_TEMP_ADDR + 1 ) << 8)
| (MCUi_ReadRegister( MCU_REG_TEMP_ADDR + 2 ) << 16)
| (MCUi_ReadRegister( MCU_REG_TEMP_ADDR + 3 ) << 24));
}
/***************************************************************
@ -81,6 +89,78 @@ static void EraseAll(void)
#endif
}
/***************************************************************
Fatfs4sdmcInit
FATFS周りの初期化 for SDカード
***************************************************************/
static BOOL Fatfs4sdmcInit(void)
{
BOOL result;
/* FATFSライブラリ用にカレントヒープを設定 */
/* WRAM上のfatfsHeapをメインメモリヒープとして登録している */
OSHeapHandle hh;
u8 *lo = (u8*)fatfsHeap;
u8 *hi = (u8*)fatfsHeap + FATFS_HEAP_SIZE;
lo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1);
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, lo);
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, OS_GetSubPrivArenaLo(), hi);
OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
OS_SetDebugLED(++step);
if ( !FATFS_InitFIRM( NULL ) )
{
return FALSE;
}
#ifndef SDK_FINALROM
// 3: after FATFS
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
PM_BackLightOn( FALSE );
if ( !FATFS_MountDriveFIRM( DRIVE_NO, BOOT_DEVICE, PARTITION_NO ) )
{
return FALSE;
}
#ifndef SDK_FINALROM
// 4: after Mount
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
PM_BackLightOn( FALSE );
switch ( PAD_Read() & PAD_KEYPORT_MASK )
{
case 0:
result = FATFS_OpenSpecifiedSrl( MENU_FILE );
break;
case PAD_BUTTON_A:
result = FATFS_OpenSpecifiedSrl( MENU_FILE_A );
break;
case PAD_BUTTON_B:
result = FATFS_OpenSpecifiedSrl( MENU_FILE_B );
break;
case PAD_BUTTON_L:
result = FATFS_OpenSpecifiedSrl( MENU_FILE_L );
break;
case PAD_BUTTON_R:
result = FATFS_OpenSpecifiedSrl( MENU_FILE_R );
break;
default:
OS_SetDebugLED( (u8)(PAD_Read() & PAD_KEYPORT_MASK) );
result = FALSE;
break;
}
return result;
}
void TwlSpMain( void )
{
// OS_InitDebugLED and OS_SetDebugLED are able to call after OS_Init
@ -100,7 +180,7 @@ void TwlSpMain( void )
OS_InitFIRM();
PRODUCTION_CHECK();
OS_EnableIrq(); // PMでOS_InitTick()を使っているので (他でも使ってる?)
OS_EnableIrq();
#ifndef SDK_FINALROM
//OS_EnableIrq();
@ -117,100 +197,49 @@ void TwlSpMain( void )
// 2: after PM
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
/* FATFSライブラリ用にカレントヒープを設定 */
/* WRAM上のfatfsHeapをメインメモリヒープとして登録している */
{
OSHeapHandle hh;
u8 *lo = (u8*)fatfsHeap;
u8 *hi = (u8*)fatfsHeap + FATFS_HEAP_SIZE;
lo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1);
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, lo);
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, OS_GetSubPrivArenaLo(), hi);
OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
}
OS_SetDebugLED(++step);
PRODUCTION_CHECK();
if ( FATFS_InitFIRM( NULL ) )
if ( !Fatfs4sdmcInit() )
{
#ifndef SDK_FINALROM
// 3: after FATFS
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
PM_BackLightOn( FALSE );
if ( FATFS_MountDriveFIRM( DRIVE_NO, BOOT_DEVICE, PARTITION_NO ) )
{
BOOL result;
#ifndef SDK_FINALROM
// 4: after Mount
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
PM_BackLightOn( FALSE );
switch ( PAD_Read() & PAD_KEYPORT_MASK )
{
case 0:
result = FATFS_OpenSpecifiedSrl( MENU_FILE );
break;
case PAD_BUTTON_A:
result = FATFS_OpenSpecifiedSrl( MENU_FILE_A );
break;
case PAD_BUTTON_B:
result = FATFS_OpenSpecifiedSrl( MENU_FILE_B );
break;
case PAD_BUTTON_L:
result = FATFS_OpenSpecifiedSrl( MENU_FILE_L );
break;
case PAD_BUTTON_R:
result = FATFS_OpenSpecifiedSrl( MENU_FILE_R );
break;
default:
OS_SetDebugLED( (u8)(PAD_Read() & PAD_KEYPORT_MASK) );
OS_Terminate();
break;
}
if ( result )
{
#ifndef SDK_FINALROM
// 5: after Open
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
PM_BackLightOn( FALSE );
if ( FATFS_LoadHeader() && FATFS_LoadStatic() )
{
#ifndef SDK_FINALROM
// 127: before Boot
pf_cnt = PROFILE_MAX-1;
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
{
int i;
PXI_RecvID();
OS_TPrintf("\n[ARM7] Begin\n");
for (i = 0; i < PROFILE_MAX; i++)
{
OS_TPrintf("0x%08X\n", profile[i]);
}
OS_TPrintf("\n[ARM7] End\n");
}
#endif
OS_SetDebugLED(++step);
PM_BackLightOn( TRUE ); // last chance
PRODUCTION_CHECK();
FATFS_Boot();
}
}
}
goto end;
}
#ifndef SDK_FINALROM
// 5: after Open
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
#endif
OS_SetDebugLED(++step);
PM_BackLightOn( FALSE );
if ( !FATFS_LoadHeader() || !FATFS_LoadStatic() )
{
goto end;
}
#ifndef SDK_FINALROM
// 127: before Boot
pf_cnt = PROFILE_MAX-1;
profile[pf_cnt++] = (u32)OS_TicksToMicroSeconds(OS_GetTick());
{
int i;
PXI_RecvID();
OS_TPrintf("\n[ARM7] Begin\n");
for (i = 0; i < PROFILE_MAX; i++)
{
OS_TPrintf("0x%08X\n", profile[i]);
}
OS_TPrintf("\n[ARM7] End\n");
}
#endif
OS_SetDebugLED(++step);
PRODUCTION_CHECK();
PM_BackLightOn( TRUE ); // last chance
FATFS_Boot();
end:
OS_SetDebugLED( (u8)(0xF0 | step));

View File

@ -55,7 +55,7 @@ static void PreInit(void)
*/
// SHARED領域クリア (ここだけでOK?)
MIi_CpuClearFast( 0, (void*)HW_PXI_SIGNAL_PARAM_ARM9, HW_MAIN_MEM_SHARED_END-HW_PXI_SIGNAL_PARAM_ARM9);
MIi_CpuClearFast( 0, (void*)HW_PXI_SIGNAL_PARAM_ARM9, HW_MMEMCHECKER_MAIN-HW_PXI_SIGNAL_PARAM_ARM9);
/*
FromBrom関連
@ -79,10 +79,15 @@ static void PostInit(void)
/*
*/
// (DTCMの手前までの領域を全クリア)
//MI_CpuClearFast( (void*)HW_DELIVER_ARG_BUF_END, SDK_SECTION_ARENA_DTCM_START-HW_DELIVER_ARG_BUF_END );
// (ARM9領域を全クリア)
MI_CpuClearFast( (void*)HW_DELIVER_ARG_BUF_END, HW_MAIN_MEM_MAIN_END-HW_DELIVER_ARG_BUF_END );
// ARM9領域を全クリア
if ( OS_GetResetParameter() )
{
MI_CpuClearFast( (void*)HW_DELIVER_ARG_BUF_END, HW_MAIN_MEM_MAIN_END-HW_DELIVER_ARG_BUF_END );
}
else
{
MI_CpuClearFast( (void*)HW_MAIN_MEM_MAIN, HW_MAIN_MEM_MAIN_SIZE );
}
DC_FlushAll();
}
@ -90,8 +95,7 @@ static void PostInit(void)
/***************************************************************
CheckHeader
32Bは固定値と思われ ()
TWLアプリとして問題ないかチェック
***************************************************************/
static BOOL CheckHeader(void)
{