mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・TWLアプリのカードブートができるよう変更。(とりあえずNTRカードでのブートに対応)
・カード抜けチェック対応のため、カード起動時にHW_BOOT_CHECK_INFO_BUFとHW_RED_RESERVEDに現在のカードのカードIDをセットするよう変更。 ・カードBでのブートに対応するため、カード起動時にカードスロットA,Bをスワップするよう変更。 ・boot.hのヘッダ整理。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@256 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
dd39d49b2d
commit
692a886831
@ -62,12 +62,14 @@ SYSMENU_LIBS ?= \
|
||||
libsettings$(TWL_LIBSUFFIX).a \
|
||||
libmbloader$(TWL_LIBSUFFIX).a \
|
||||
libacsign$(TWL_LIBSUFFIX).a \
|
||||
libboot$(TWL_LIBSUFFIX).a \
|
||||
# libcardboot$(TWL_LIBSUFFIX).a
|
||||
|
||||
else # ($(CODEGEN_PROC),ARM7)
|
||||
|
||||
SYSMENU_LIBS ?= \
|
||||
libmbloader_sp$(TWL_LIBSUFFIX).a \
|
||||
libboot_sp$(TWL_LIBSUFFIX).a \
|
||||
libcardboot_sp$(TWL_LIBSUFFIX).a
|
||||
|
||||
endif
|
||||
|
||||
@ -34,11 +34,7 @@
|
||||
#include <twl/cdc.h>
|
||||
#include <twl/aes.h>
|
||||
#include <twl/mcu.h>
|
||||
#include <sysmenu/boot/common/boot.h>
|
||||
#include <sysmenu/sysmenu_lib/common/sysmenu_work.h>
|
||||
|
||||
#include <sysmenu/card/common/blowfish.h>
|
||||
#include <sysmenu/card/common/Card.h>
|
||||
#include <sysmenu.h>
|
||||
#include "nvram_sp.h"
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
|
||||
@ -16,8 +16,7 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <sysmenu/boot/common/boot.h>
|
||||
#include <sysmenu/memorymap.h>
|
||||
#include <sysmenu.h>
|
||||
//#include "loader.h"
|
||||
//#include "mb_child.h"
|
||||
|
||||
|
||||
@ -16,13 +16,13 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <sysmenu/boot/common/boot.h>
|
||||
#include <sysmenu.h>
|
||||
#include "reboot.h"
|
||||
//#include "loader.h"
|
||||
//#include "mb_child.h"
|
||||
|
||||
|
||||
// define data-------------------------------------------------------
|
||||
#define MAINP_SEND_IF 0x2000
|
||||
#define reg_MI_MC_SWP (*(REGType8v *) ( REG_MC1_ADDR + 1 ) )
|
||||
|
||||
// extern data-------------------------------------------------------
|
||||
|
||||
@ -50,20 +50,17 @@ BOOL BOOT_WaitStart( void )
|
||||
SYSM_OWN_ARM7_MMEM_ADDR, SYSM_OWN_ARM7_MMEM_ADDR_END - SYSM_OWN_ARM7_MMEM_ADDR,
|
||||
SYSM_OWN_ARM9_MMEM_ADDR, SYSM_OWN_ARM9_MMEM_ADDR_END - SYSM_OWN_ARM9_MMEM_ADDR,
|
||||
SYSM_OWN_ARM7_WRAM_ADDR, SYSM_OWN_ARM7_WRAM_ADDR_END - SYSM_OWN_ARM7_WRAM_ADDR,
|
||||
|
||||
// HW_PRV_WRAM_END - 0x600, 0x600,
|
||||
SYSM_OWN_ARM7_WRAM_ADDR, SYSM_OWN_ARM7_WRAM_ADDR_END - SYSM_OWN_ARM7_WRAM_ADDR,
|
||||
#ifdef ISDBG_MB_CHILD_
|
||||
HW_PRV_WRAM_END - 0x600, (HW_PRV_WRAM_END - HW_PRV_WRAM_SYSRV_SIZE) - (HW_PRV_WRAM_END - 0x600),
|
||||
HW_PRV_WRAM_END - 0x600 + 0x20, HW_PRV_WRAM_END - (HW_PRV_WRAM_END - 0x600 + 0x20),
|
||||
#endif
|
||||
//SYSM_BOOTCODE_ARM7_ADDR, ClearMemory - SYSM_BOOTCODE_ARM7_ADDR,
|
||||
// 0x02fff000, 0x800,
|
||||
// 0xda0, 0x60,
|
||||
// 0xf80, 0x80,
|
||||
|
||||
HW_MAIN_MEM_SHARED, HW_RED_RESERVED - HW_MAIN_MEM_SHARED,
|
||||
HW_ARENA_INFO_BUF, HW_ROM_HEADER_BUF - HW_ARENA_INFO_BUF,
|
||||
HW_PXI_SIGNAL_PARAM_ARM9, HW_MAIN_MEM_SYSTEM_END - HW_PXI_SIGNAL_PARAM_ARM9,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
(void)OS_DisableIrq(); // ここで割り込み禁止にしないとダメ。
|
||||
(void)OS_SetIrqMask(0); // SDKバージョンのサーチに時間がかかると、ARM9がHALTにかかってしまい、ARM7のサウンドスレッドがARM9にFIFOでデータ送信しようとしてもFIFOが一杯で送信できない状態で無限ループに入ってしまう。
|
||||
/*
|
||||
@ -74,11 +71,11 @@ BOOL BOOT_WaitStart( void )
|
||||
InsertWLPatch();
|
||||
}
|
||||
*/
|
||||
|
||||
BOOTi_ClearREG_RAM(); // ARM7側のメモリ&レジスタクリア。
|
||||
reg_MI_MBK9 = 0; // 全WRAMのロック解除
|
||||
reg_PXI_MAINPINTF = MAINP_SEND_IF | 0x0100; // ARM9に対してブートするようIRQで要求+ARM7のステートを1にする。
|
||||
// BOOT_Core(); // never return
|
||||
|
||||
|
||||
// SDK共通リブート
|
||||
OS_Boot( (void *)*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x34), clr_list );
|
||||
}
|
||||
@ -89,11 +86,16 @@ static void BOOTi_ClearREG_RAM( void )
|
||||
{
|
||||
int i ;
|
||||
|
||||
// SVC_CpuClearFast(0x0000, IPL2_PRV_WRAM_ARENA_LO, RETURN_FROM_MAIN_ARM7_FUNCP - IPL2_PRV_WRAM_ARENA_LO );
|
||||
// アリーナのクリア
|
||||
for( i = 0; i <= MI_DMA_MAX_NUM; i++ ) { // DMAの停止
|
||||
MI_StopDma( (u16)i );
|
||||
}
|
||||
|
||||
#ifdef DEBUG_USED_CARD_SLOT_B_
|
||||
reg_MI_MC_SWP = 0x80; // カードスロットのスワップ
|
||||
#endif
|
||||
*(u32 *)HW_BOOT_CHECK_INFO_BUF = SYSMi_GetWork()->nCardID; // カード抜けチェックバッファにカードIDをセット
|
||||
*(u32 *)HW_RED_RESERVED = SYSMi_GetWork()->nCardID;
|
||||
|
||||
// レジスタのクリア
|
||||
SVC_CpuClearFast( 0x0000, (void*)(HW_REG_BASE + 0x0b0), (0x13c - 0x0b0) );
|
||||
// DMA0SAD ~ RCNT1
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <sysmenu/boot/common/boot.h>
|
||||
#include <sysmenu.h>
|
||||
//#include <nitro/mb.h>
|
||||
//#include "IPL2_work.h"
|
||||
//#include "define.h"
|
||||
|
||||
@ -17,12 +17,9 @@
|
||||
|
||||
#include <twl.h>
|
||||
#include <twl/os/common/format_rom.h>
|
||||
#include <sysmenu/boot/common/boot.h>
|
||||
#include <sysmenu.h>
|
||||
#include <firm/format/wram_regs.h>
|
||||
#include "reboot.h"
|
||||
//#include <nitro/mb.h>
|
||||
//#include "IPL2_work.h"
|
||||
//#include "define.h"
|
||||
|
||||
|
||||
// define data-------------------------------------------------------
|
||||
@ -38,8 +35,6 @@
|
||||
static void BOOTi_ClearREG_RAM( void );
|
||||
static void BOOTi_StartBOOT( void );
|
||||
|
||||
static void ResetCP15( void );
|
||||
|
||||
// global variables--------------------------------------------------
|
||||
|
||||
// static variables--------------------------------------------------
|
||||
@ -102,12 +97,7 @@ void BOOT_Ready( void )
|
||||
reg_GX_VRAMCNT_D = pWRAMREGS->main_vrambnk_d;
|
||||
reg_GX_VRAMCNT_WRAM = pWRAMREGS->main_wrambnk_01;
|
||||
}
|
||||
|
||||
//BOOT_Core(); // never return
|
||||
|
||||
// プロテクションユニットの初期化
|
||||
ResetCP15();
|
||||
|
||||
|
||||
// SDK共通リブート
|
||||
OS_Boot( (void *)*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x24), clr_list );
|
||||
}
|
||||
@ -143,32 +133,3 @@ static void BOOTi_ClearREG_RAM( void )
|
||||
// クリアしていないレジスタは、VCOUNT, PIFCNT, MC-, EXMEMCNT, IME, RBKCNT1, PAUSE, POWLCDCNT, 全3D系。
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
// システム制御コプロセッサ リセット
|
||||
//-----------------------------------------------------------------------
|
||||
#include <twl/code32.h>
|
||||
asm static void ResetCP15( void )
|
||||
{
|
||||
// プロテクションユニット&キャッシュ&ITCM無効。DTCMは有効(スタックをクリアするため)
|
||||
ldr r0, = C1_DTCM_ENABLE | C1_EXCEPT_VEC_UPPER | C1_SB1_BITSET
|
||||
mcr p15, 0, r0, c1, c0, 0
|
||||
|
||||
// ITCMの割り当てを解除
|
||||
mov r0, #0
|
||||
mcr p15, 0, r0, c6, c5, 0
|
||||
|
||||
// DTCMの割り当てを解除
|
||||
// mov r0,#0
|
||||
// mcr p15, 0, r0, c9, c1, 0
|
||||
|
||||
// キャッシュ無効化
|
||||
mov r0, #0
|
||||
mcr p15, 0, r0, c7, c5, 0 // 命令キャッシュ
|
||||
mcr p15, 0, r0, c7, c6, 0 // データキャッシュ
|
||||
|
||||
// ライトバッファ エンプティ待ち
|
||||
mcr p15, 0, r0, c7, c10, 4
|
||||
|
||||
bx lr
|
||||
}
|
||||
#include <twl/codereset.h>
|
||||
|
||||
@ -267,7 +267,9 @@ BOOL Card_Boot(void)
|
||||
// ※最終的にはカードIDをHW_BOOT_CHECK_INFO_BUFに入れないと、アプリ起動後のカード抜け処理が上手く動作しないので注意。
|
||||
// 今はスロットBを使用しているので、ノーケアでOK.
|
||||
// *(u32 *)HW_BOOT_CHECK_INFO_BUF = s_cbData.id_gam;
|
||||
|
||||
// *(u32 *)HW_RED_RESERVED = s_cbData.id_gam;
|
||||
SYSMi_GetWork()->nCardID = s_cbData.id_gam;
|
||||
|
||||
OS_TPrintf("-----------------------------------------------\n\n");
|
||||
}
|
||||
else{
|
||||
|
||||
@ -17,7 +17,6 @@
|
||||
|
||||
#include <twl.h>
|
||||
#include <sysmenu.h>
|
||||
#include <sysmenu/boot/common/boot.h>
|
||||
#include "sysmenu_define.h"
|
||||
#include "spi.h"
|
||||
|
||||
@ -63,7 +62,71 @@ static TWLBannerFile s_bannerBuf[ LAUNCHER_TITLE_LIST_NUM ] ATTRIBUTE_ALIGN(32);
|
||||
|
||||
|
||||
// const data------------------------------------------------------------------
|
||||
#if 0
|
||||
typedef enum RomSegmentName {
|
||||
ROM_HEADER = 0,
|
||||
ARM9_STATIC,
|
||||
ARM7_STATIC,
|
||||
ARM9_LTD_STATIC,
|
||||
ARM7_LTD_STATIC
|
||||
}RomSegmentName;
|
||||
|
||||
typedef struct RomSegmentRange {
|
||||
u32 start;
|
||||
u32 end;
|
||||
}RomSegmentRange;
|
||||
|
||||
typedef struct RomReloadInfo {
|
||||
void *pSrc;
|
||||
void *pDst;
|
||||
u32 length;
|
||||
BOOL revCopy;
|
||||
}RomReloadInfo;
|
||||
|
||||
static RomSegmentRange romSegmentRange[] = {
|
||||
{ HW_TWL_ROM_HEADER_BUF, HW_TWL_ROM_HEADER_BUF_END },
|
||||
{ SYSM_NTR_ARM9_LOAD_MMEM, SYSM_NTR_ARM9_LOAD_MMEM_END },
|
||||
{ SYSM_NTR_ARM7_LOAD_MMEM, SYSM_NTR_ARM7_LOAD_MMEM_END },
|
||||
{ SYSM_TWL_ARM9_LTD_LOAD_MMEM, SYSM_TWL_ARM9_LTD_LOAD_MMEM_END },
|
||||
{ SYSM_TWL_ARM7_LTD_LOAD_MMEM, SYSM_TWL_ARM7_LTD_LOAD_MMEM_END },
|
||||
};
|
||||
|
||||
|
||||
static RomReloadInfo romReloadInfo[] = {
|
||||
|
||||
};
|
||||
|
||||
static BOOL SYSMi_OutOfRangeRomSegment( u32 start, u32 length, RomSegmentRange *pRange, ReloadInfo *pReload )
|
||||
{
|
||||
BOOL isReload = FALSE;
|
||||
u32 end = (u32)start + length;
|
||||
|
||||
if( start < pRange->start ) {
|
||||
if( end <= pRange->start ) {
|
||||
isReload = TRUE;
|
||||
pReload->revCopy = FALSE;
|
||||
}else {
|
||||
isReload = TRUE;
|
||||
pReload->revCopy = TRUE;
|
||||
}
|
||||
}else if( start <= pRange->end ) {
|
||||
if( end <= pRange->end ) {
|
||||
if(u32)( pRange->start + length ) )
|
||||
}else if( end > pRange->end ) {
|
||||
isReload = TRUE;
|
||||
pReload->revCopy = FALSE;
|
||||
}
|
||||
}else if( start > pRange->end ) {
|
||||
isReload = TRUE;
|
||||
}
|
||||
|
||||
if( isReload ) {
|
||||
pReload->pDst = (void *)start;
|
||||
pReload->pSrc = (void *)pRange->start;
|
||||
pReload->length = length;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
|
||||
@ -45,18 +45,17 @@ SRCS_LOGO = logoDemo.c logoData.c
|
||||
SRCS = main.c launcher.c \
|
||||
$(addprefix $(LOGO_DIR)/, $(SRCS_LOGO)) \
|
||||
$(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c \
|
||||
$(BG_DIR)/BGData_Launcher.c
|
||||
$(BG_DIR)/BGData_Launcher.c
|
||||
|
||||
LINCLUDES = $(MISC_DIR)/include \
|
||||
$(SRCDIR)/$(LOGO_DIR)
|
||||
|
||||
LLIBRARIES += libnam$(TWL_LIBSUFFIX).a \
|
||||
libese$(TWL_LIBSUFFIX).a \
|
||||
libboot$(TWL_LIBSUFFIX).a
|
||||
libese$(TWL_LIBSUFFIX).a
|
||||
|
||||
ADDRESS_DTCM = 0x0e000000
|
||||
|
||||
DEFAULT_COMP_ARM7 = hyena
|
||||
DEFAULT_COMP_ARM7 = hyena
|
||||
|
||||
MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)'
|
||||
|
||||
@ -69,7 +68,7 @@ INSTALL_DIR = $(SDK_NMENU_DATADIR)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
do-build : $(FONT_OBJS) $(TARGETS)
|
||||
do-build : $(TARGETS)
|
||||
|
||||
|
||||
include $(TWLIPL_ROOT)/build/buildtools/modulerules
|
||||
|
||||
Binary file not shown.
@ -28,6 +28,7 @@
|
||||
|
||||
#include <sysmenu/sysmenu_lib.h>
|
||||
#include <sysmenu/banner.h>
|
||||
#include <sysmenu/boot.h>
|
||||
#include <sysmenu/settings.h>
|
||||
#include <sysmenu/memorymap.h>
|
||||
#include <sysmenu/card.h>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL
|
||||
File: boot.h
|
||||
File: boot_api.h
|
||||
|
||||
Copyright 2007 Nintendo. All rights reserved.
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#if !defined(_SYSMENU_BOOT_H_)
|
||||
#define _SYSMENU_BOOT_H_
|
||||
#define _SYSMENU_BOOT_API_H_
|
||||
|
||||
#include <sysmenu/memorymap.h>
|
||||
|
||||
@ -80,4 +80,4 @@ void BOOT_Ready( void );
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _SYSMENU_BOOT_H_ */
|
||||
#endif /* _SYSMENU_BOOT_API_H_ */
|
||||
@ -115,11 +115,11 @@ typedef struct SYSM_work {
|
||||
u16 cardHeaderCrc16_bak; // カード検出時に算出したROMヘッダCRC16(ARM7側ライブラリでダイレクトに書き換わる側)
|
||||
OSLockWord lockCardRsc; // カードリソース排他制御用
|
||||
int cloneBootMode;
|
||||
u32 nCardID; // カードID
|
||||
|
||||
ResetParam resetParam;
|
||||
|
||||
// NTR-IPL2のレガシー 最終的には消すと思う
|
||||
u32 nCardID;
|
||||
BOOL enableCardNormalOnly;
|
||||
u8 rtcStatus;
|
||||
}SYSM_work;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user