mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
SDK5447のracoon.TWLコンポーネントコードとマージする。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1126 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
c7512bd914
commit
c46e0210b4
@ -39,8 +39,12 @@ LCFILE_SPEC = $(TARGET_NAME).lsf
|
|||||||
LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template
|
LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template
|
||||||
LDRES_TEMPLATE = $(ROOT)/build/components/racoon.TWL/racoon.response.template
|
LDRES_TEMPLATE = $(ROOT)/build/components/racoon.TWL/racoon.response.template
|
||||||
|
|
||||||
|
# crt0.oは、ランチャー向けに特殊ビルドしたものを使用
|
||||||
CRT0_O = $(OBJDIR)/crt0.LTD.o
|
CRT0_O = $(OBJDIR)/crt0.LTD.o
|
||||||
|
|
||||||
|
# スタック不足防止の為、インライン展開せずにコンパイルする
|
||||||
|
CCFLAGS_OPT = -O4 -inline off
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||||
include $(TWLSDK_ROOT)/build/libraries/reboot/commondefs.reboot
|
include $(TWLSDK_ROOT)/build/libraries/reboot/commondefs.reboot
|
||||||
@ -52,8 +56,7 @@ CCFLAGS += -DSDK_NOCRYPTO
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef TWLSDK_NOCRYPTO
|
ifndef TWLSDK_NOCRYPTO
|
||||||
MAKELCF_FLAGS += -DUSE_CRYPTO_LIBS='libsea_sp$(TWL_LIBSUFFIX).a libcrypto_sp$(TWL_LIBSUFFIX).a'
|
MAKELCF_FLAGS += -DUSE_CRYPTO_LIBS='libaes_sp$(TWL_LIBSUFFIX).a'
|
||||||
MACRO_FLAGS += -DSDK_SEA
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
MACRO_FLAGS += -DSDK_SYSMENU_BUILD
|
MACRO_FLAGS += -DSDK_SYSMENU_BUILD
|
||||||
|
|||||||
@ -44,7 +44,7 @@ Autoload WRAM
|
|||||||
libspi_sp$(LIBSUFFIX).a \
|
libspi_sp$(LIBSUFFIX).a \
|
||||||
libpm_sp$(LIBSUFFIX).a \
|
libpm_sp$(LIBSUFFIX).a \
|
||||||
libmath_sp$(LIBSUFFIX).a \
|
libmath_sp$(LIBSUFFIX).a \
|
||||||
libscfg_sp$(LIBSUFFIX).a \
|
libscfg_sp$(LIBSUFFIX).a \
|
||||||
libtp_sp$(LIBSUFFIX).a \
|
libtp_sp$(LIBSUFFIX).a \
|
||||||
libmic_sp$(LIBSUFFIX).a \
|
libmic_sp$(LIBSUFFIX).a \
|
||||||
libfs_sp$(LIBSUFFIX).a \
|
libfs_sp$(LIBSUFFIX).a \
|
||||||
@ -56,21 +56,12 @@ Autoload WRAM
|
|||||||
libtpex_sp$(LIBSUFFIX).a \
|
libtpex_sp$(LIBSUFFIX).a \
|
||||||
libmicex_sp$(LIBSUFFIX).a \
|
libmicex_sp$(LIBSUFFIX).a \
|
||||||
libmcu_sp$(LIBSUFFIX).a \
|
libmcu_sp$(LIBSUFFIX).a \
|
||||||
libboot_sp$(LIBSUFFIX).a \
|
|
||||||
libreboot_sp$(LIBSUFFIX).a \
|
|
||||||
libhotsw_sp$(LIBSUFFIX).a \
|
|
||||||
libreloc_info_sp$(LIBSUFFIX).a \
|
|
||||||
libsysmenu_sp$(LIBSUFFIX).a \
|
|
||||||
libsysmmcu_sp$(LIBSUFFIX).a \
|
|
||||||
libaes_sp.firm.LTD.a
|
|
||||||
|
|
||||||
Library libsdio_sp$(LIBSUFFIX).a
|
Library libsdio_sp$(LIBSUFFIX).a
|
||||||
|
|
||||||
Library libnvram_sp$(LIBSUFFIX).a
|
Library libnvram_sp$(LIBSUFFIX).a
|
||||||
Library librtc_sp$(LIBSUFFIX).a
|
Library librtc_sp$(LIBSUFFIX).a
|
||||||
|
|
||||||
Library libsea_sp$(LIBSUFFIX).a
|
|
||||||
Library libcrypto_sp$(LIBSUFFIX).a
|
|
||||||
|
|
||||||
Object * (.etable)
|
Object * (.etable)
|
||||||
Object * (.wram)
|
Object * (.wram)
|
||||||
@ -141,52 +132,73 @@ Autoload WRAM
|
|||||||
Object OBJECT( WaitLoop_BbpAccess , libwl_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( WaitLoop_BbpAccess , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( WaitLoop_RfAccess , libwl_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( WaitLoop_RfAccess , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
|
||||||
# Object OBJECT( s_ar_cookie_mem , libathdrv_sp$(LIBSUFFIX).a ) (.bss)
|
#####
|
||||||
# Object OBJECT( nin_ar , libathdrv_sp$(LIBSUFFIX).a ) (.bss)
|
# Sub-routines in TWL WIRELESS Driver , that should be on WRAM.
|
||||||
|
Object OBJECT( HTCSendPktCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( a_netbuf_alloc_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( HTCIssueSend, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( a_netbuf_register_rx_callback , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( HTCTrySend, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( nin_driver_tx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( HTCSendPkt, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( nin_tx_queue_full , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( HTCProcessCreditRpt, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( nin_tx_complete , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( DevRecvPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( nin_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( HTCProcessRecvHeader, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( ar6000_bitrate_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( HTCRecvCompleteHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( ar6000_channelList_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( HTCRecvMessagePendingHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( ar6000_txPwr_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( HTCAddReceivePkt, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( ar6000_gpio_intr_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( AR6KFreeIOPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( ar6000_gpio_data_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( AR6KAllocIOPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( ar6000_gpio_ack_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( DevRWCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( nin_drv_BmiWriteSocReg , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( DevGetEventAsyncHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( ar6000_control_tx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( DevCheckPendingRecvMsgsAsync, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( nin_drv_BmiReadMemory , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( DevDsrHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( nin_drv_BmiWriteMemory , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( HIFReadWrite, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( wmi_dix_2_dot3 , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( hifRWCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( wmi_control_rx_xtnd , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( hifIRQHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( wmi_control_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( HIFAckInterrupt, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( wmi_cmd_send , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( ar6000_credit_distribute, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( wmi_cmd_send_xtnd , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( a_netbuf_alloc, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HIFReadWrite , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( a_netbuf_alloc_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTCAddReceivePkt , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( a_netbuf_put, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTCUnblockRecv , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( a_netbuf_push, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTCFlushRecvBuffers , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( a_netbuf_pull, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTCSendPktCompletionHandler , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( a_netbuf_free, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTCIssueSend , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( a_netbuf_to_data, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTCTrySend , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( a_netbuf_to_len, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTC_PACKET_DEQUEUE , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( a_netbuf_headroom, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTCSendPkt , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( nin_drv_return_netbuf, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTCFlushSendPkts , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( ath_queue_remove_from_head, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTCControlTxComplete , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( ath_queue_insert_tail, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTCControlRecv , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( ar6000_alloc_cookie, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( HTC_ALLOC_CONTROL_TX , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( nin_driver_tx, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( _ath_delete_timer , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( nin_tx_complete, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( _ath_untimeout , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( wmi_dix_2_dot3, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( _ath_timeout_ms , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( wmi_data_hdr_add, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( _ath_init_timer , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( wmi_data_hdr_remove, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( ath_timer_task , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( nin_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
Object OBJECT( timer_wakeup_function , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( ar6000_ibss_map_epid, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( DL_ListInsertTail, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( DL_ListRemove, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( wmi_control_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( wmi_cmd_send, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( ar6000_control_tx, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( wmi_implicit_create_pstream, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( HTCAllocControlBuffer, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( HTCFreeControlBuffer, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( BMILZData, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( bmiBufferSend, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
Object OBJECT( BMIWriteMemory, libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
|
||||||
Object OBJECT( wpa_sm_rx_eapol , libwpa_sp$(LIBSUFFIX).a ) (.text)
|
Object OBJECT( wpa_sm_rx_eapol , libwpa_sp$(LIBSUFFIX).a ) (.text)
|
||||||
|
|
||||||
|
Library libboot_sp$(LIBSUFFIX).a \
|
||||||
|
libreboot_sp$(LIBSUFFIX).a \
|
||||||
|
libhotsw_sp$(LIBSUFFIX).a \
|
||||||
|
libreloc_info_sp$(LIBSUFFIX).a \
|
||||||
|
libsysmenu_sp$(LIBSUFFIX).a \
|
||||||
|
libsysmmcu_sp$(LIBSUFFIX).a \
|
||||||
|
libaes_sp.firm.LTD.a
|
||||||
|
|
||||||
|
Library libathdrv_sp$(LIBSUFFIX).a (.bss)
|
||||||
|
Library libathdrv_sp$(LIBSUFFIX).a (.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
#--------
|
#--------
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Project: TwlSDK - components - mongoose.TWL
|
Project: TwlIPL - components - hyena.TWL
|
||||||
File: main.c
|
File: main.c
|
||||||
|
|
||||||
Copyright 2007 Nintendo. All rights reserved.
|
Copyright 2007 Nintendo. All rights reserved.
|
||||||
@ -32,22 +32,27 @@
|
|||||||
#include <nitro/gx.h>
|
#include <nitro/gx.h>
|
||||||
#include <twl/os/common/codecmode.h>
|
#include <twl/os/common/codecmode.h>
|
||||||
#include <twl/cdc.h>
|
#include <twl/cdc.h>
|
||||||
|
#include <twl/snd/ARM7/sndex_api.h>
|
||||||
#include <twl/aes.h>
|
#include <twl/aes.h>
|
||||||
#include <twl/mcu.h>
|
#include <twl/mcu.h>
|
||||||
#include <twl/hw/common/mmap_wramEnv.h>
|
#include <twl/hw/common/mmap_wramEnv.h>
|
||||||
#include <sysmenu.h>
|
#include <sysmenu.h>
|
||||||
#include <sysmenu/mcu.h>
|
#include <sysmenu/mcu.h>
|
||||||
#include <firm/memorymap.h>
|
#include <firm/memorymap.h>
|
||||||
#include "nvram_sp.h"
|
|
||||||
#include "pm_pmic.h"
|
#include "pm_pmic.h"
|
||||||
#include "internal_api.h"
|
#include "internal_api.h"
|
||||||
#include <twl/sea.h>
|
#include "nvram_sp.h"
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
定数定義
|
定数定義
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
/* [TODO] Work around. Should be defined in wm_sp.h */
|
/* [TODO] Work around. Should be defined in wm_sp.h */
|
||||||
#define WM_WL_HEAP_SIZE 0x2100
|
#define WM_WL_HEAP_SIZE 0x2100
|
||||||
|
#define ATH_DRV_HEAP_SIZE 0x5800 /* TBD */
|
||||||
|
#define WPA_HEAP_SIZE 0x0000 /* TBD */
|
||||||
|
|
||||||
|
#define MEM_TYPE_WRAM 0
|
||||||
|
#define MEM_TYPE_MAIN 1
|
||||||
|
|
||||||
/* Priorities of each threads */
|
/* Priorities of each threads */
|
||||||
#define THREAD_PRIO_SPI 2
|
#define THREAD_PRIO_SPI 2
|
||||||
@ -78,14 +83,17 @@
|
|||||||
static void ResetRTC( void );
|
static void ResetRTC( void );
|
||||||
static void ReadLauncherParameter( void );
|
static void ReadLauncherParameter( void );
|
||||||
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(void);
|
#ifdef SDK_TWLHYB
|
||||||
static void InitializeCdc(void);
|
static OSHeapHandle InitializeAllocateSystemCoreEx(u8 memType);
|
||||||
|
#endif
|
||||||
static void DummyThread(void* arg);
|
static void DummyThread(void* arg);
|
||||||
static void ReadUserInfo(void);
|
static void ReadUserInfo(void);
|
||||||
static void VBlankIntr(void);
|
static void VBlankIntr(void);
|
||||||
|
static void InitializeFatfs(void);
|
||||||
|
static void InitializeNwm(OSHeapHandle drvHeapHandle, OSHeapHandle wpaHeapHandle);
|
||||||
|
static void InitializeCdc(void);
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
外部シンボル参照
|
外部シンボル参照
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
@ -103,7 +111,7 @@ extern void SDK_LTDAUTOLOAD_LTDMAIN_BSS_END(void);
|
|||||||
void
|
void
|
||||||
TwlSpMain(void)
|
TwlSpMain(void)
|
||||||
{
|
{
|
||||||
OSHeapHandle heapHandle;
|
OSHeapHandle wramHeapHandle, mainHeapHandle;
|
||||||
|
|
||||||
// SYSMワークのクリア
|
// SYSMワークのクリア
|
||||||
MI_CpuClear32( SYSMi_GetWork(), sizeof(SYSM_work) );
|
MI_CpuClear32( SYSMi_GetWork(), sizeof(SYSM_work) );
|
||||||
@ -116,7 +124,6 @@ TwlSpMain(void)
|
|||||||
|
|
||||||
// OS 初期化
|
// OS 初期化
|
||||||
OS_Init();
|
OS_Init();
|
||||||
OS_InitTick();
|
|
||||||
PrintDebugInfo();
|
PrintDebugInfo();
|
||||||
|
|
||||||
// ランチャーバージョンを格納(今のところ、最低でもマウント情報登録前には格納する必要あり)
|
// ランチャーバージョンを格納(今のところ、最低でもマウント情報登録前には格納する必要あり)
|
||||||
@ -139,15 +146,12 @@ TwlSpMain(void)
|
|||||||
SYSMi_GetWork()->flags.common.isARM9Start = TRUE; // [TODO:] HW_RED_RESERVEDはNANDファームでクリアしておいて欲しい
|
SYSMi_GetWork()->flags.common.isARM9Start = TRUE; // [TODO:] HW_RED_RESERVEDはNANDファームでクリアしておいて欲しい
|
||||||
|
|
||||||
// ヒープ領域設定
|
// ヒープ領域設定
|
||||||
{
|
OS_SetSubPrivArenaHi( (void*)SYSM_OWN_ARM7_MMEM_ADDR_END ); // メモリ配置をいじっているので、アリーナHiも変更しないとダメ!!
|
||||||
void *wram = OS_GetWramSubPrivArenaHi();
|
OS_SetWramSubPrivArenaHi( (void*)(SYSM_OWN_ARM7_WRAM_ADDR_END - HW_FIRM_FROM_FIRM_BUF_SIZE) ); // この時点では鍵をつぶさないように
|
||||||
void *mmem = OS_GetSubPrivArenaHi();
|
OS_TPrintf( "MMEM SUBPRV ARENA HI : %08x -> %08x\n", OS_GetSubPrivArenaHi(), OS_GetSubPrivArenaHi() );
|
||||||
OS_SetSubPrivArenaHi( (void*)SYSM_OWN_ARM7_MMEM_ADDR_END ); // メモリ配置をいじっているので、アリーナHiも変更しないとダメ!!
|
OS_TPrintf( "WRAM SUBPRV ARENA HI : %08x -> %08x\n", OS_GetWramSubPrivArenaHi(), OS_GetWramSubPrivArenaHi() );
|
||||||
OS_SetWramSubPrivArenaHi( (void*)(SYSM_OWN_ARM7_WRAM_ADDR_END - HW_FIRM_FROM_FIRM_BUF_SIZE) ); // この時点では鍵をつぶさないように
|
wramHeapHandle = InitializeAllocateSystem(MEM_TYPE_WRAM);
|
||||||
OS_TPrintf( "MMEM SUBPRV ARENA HI : %08x -> %08x\n", mmem, OS_GetSubPrivArenaHi() );
|
mainHeapHandle = InitializeAllocateSystem(MEM_TYPE_MAIN);
|
||||||
OS_TPrintf( "WRAM SUBPRV ARENA HI : %08x -> %08x\n", wram, OS_GetWramSubPrivArenaHi() );
|
|
||||||
}
|
|
||||||
heapHandle = InitializeAllocateSystem();
|
|
||||||
|
|
||||||
// ボタン入力サーチ初期化
|
// ボタン入力サーチ初期化
|
||||||
(void)PAD_InitXYButton();
|
(void)PAD_InitXYButton();
|
||||||
@ -168,15 +172,10 @@ TwlSpMain(void)
|
|||||||
|
|
||||||
if (OS_IsRunOnTwl() == TRUE)
|
if (OS_IsRunOnTwl() == TRUE)
|
||||||
{
|
{
|
||||||
OSTick start = OS_GetTick();
|
|
||||||
InitializeFatfs(); // FATFS 初期化
|
InitializeFatfs(); // FATFS 初期化
|
||||||
OS_TPrintf( "FATFS init time = %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
InitializeNwm(mainHeapHandle, mainHeapHandle); // NWM 初期化
|
||||||
InitializeNwm(); // NWM 初期化
|
|
||||||
#ifndef SDK_NOCRYPTO
|
#ifndef SDK_NOCRYPTO
|
||||||
AES_Init(); // AES 初期化
|
AES_Init(); // AES 初期化
|
||||||
#ifdef SDK_SEA
|
|
||||||
SEA_Init();
|
|
||||||
#endif // ifdef SDK_SEA
|
|
||||||
#endif
|
#endif
|
||||||
MCU_InitIrq(THREAD_PRIO_MCU); // MCU 初期化
|
MCU_InitIrq(THREAD_PRIO_MCU); // MCU 初期化
|
||||||
}
|
}
|
||||||
@ -203,7 +202,7 @@ TwlSpMain(void)
|
|||||||
RTC_Init(THREAD_PRIO_RTC);
|
RTC_Init(THREAD_PRIO_RTC);
|
||||||
|
|
||||||
// 旧無線初期化
|
// 旧無線初期化
|
||||||
WVR_Begin(heapHandle);
|
WVR_Begin(wramHeapHandle);
|
||||||
|
|
||||||
// SPI 初期化
|
// SPI 初期化
|
||||||
SPI_Init(THREAD_PRIO_SPI);
|
SPI_Init(THREAD_PRIO_SPI);
|
||||||
@ -231,6 +230,7 @@ TwlSpMain(void)
|
|||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
OS_Halt();
|
OS_Halt();
|
||||||
|
|
||||||
//---- check reset
|
//---- check reset
|
||||||
if (OS_IsResetOccurred())
|
if (OS_IsResetOccurred())
|
||||||
{
|
{
|
||||||
@ -281,7 +281,6 @@ void ReadLauncherParameter( void )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: PrintDebugInfo
|
Name: PrintDebugInfo
|
||||||
Description: ARM7 コンポーネントの情報をデバッグ出力する。
|
Description: ARM7 コンポーネントの情報をデバッグ出力する。
|
||||||
@ -321,9 +320,10 @@ InitializeFatfs(void)
|
|||||||
(void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX);
|
(void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX);
|
||||||
OS_WakeupThreadDirect(&thread);
|
OS_WakeupThreadDirect(&thread);
|
||||||
|
|
||||||
|
|
||||||
// FATFSライブラリの初期化
|
// FATFSライブラリの初期化
|
||||||
#ifndef SDK_NOCRYPTO
|
#ifndef SDK_NOCRYPTO
|
||||||
if(!FATFS_Init( FATFS_DMA_4, FATFS_DMA_NOT_USE, THREAD_PRIO_FATFS))
|
if(!FATFS_Init( FATFS_DMA_4, FATFS_DMA_5, THREAD_PRIO_FATFS))
|
||||||
#else
|
#else
|
||||||
if (FATFS_Init(FATFS_DMA_NOT_USE, FATFS_DMA_NOT_USE, THREAD_PRIO_FATFS))
|
if (FATFS_Init(FATFS_DMA_NOT_USE, FATFS_DMA_NOT_USE, THREAD_PRIO_FATFS))
|
||||||
#endif
|
#endif
|
||||||
@ -344,27 +344,21 @@ InitializeFatfs(void)
|
|||||||
Returns: None.
|
Returns: None.
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
InitializeNwm(void)
|
InitializeNwm(OSHeapHandle drvHeapHandle, OSHeapHandle wpaHeapHandle)
|
||||||
{
|
{
|
||||||
NwmspInit nwmInit;
|
NwmspInit nwmInit;
|
||||||
|
|
||||||
OSHeapHandle heapHandle;
|
|
||||||
void* Lo = (void*)OS_GetSubPrivArenaLo();
|
|
||||||
void* Hi = (void*)OS_GetSubPrivArenaHi();
|
|
||||||
heapHandle = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, Lo, Hi);
|
|
||||||
|
|
||||||
/* [TODO] 確保したヒープ領域が新無線一式が必要としているメモリ量以上かのチェックが必要 */
|
|
||||||
|
|
||||||
nwmInit.dmaNo = NWM_DMANO;
|
nwmInit.dmaNo = NWM_DMANO;
|
||||||
nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMMAND;
|
nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMMAND;
|
||||||
nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT;
|
nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT;
|
||||||
nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO;
|
nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO;
|
||||||
nwmInit.drvHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */
|
nwmInit.drvHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */
|
||||||
nwmInit.drvHeap.handle = heapHandle;
|
nwmInit.drvHeap.handle = drvHeapHandle;
|
||||||
#ifdef WPA_BUILT_IN /* WPA が組み込まれる場合、以下のメンバが追加される */
|
#ifdef WPA_BUILT_IN /* WPA が組み込まれる場合、以下のメンバが追加される */
|
||||||
|
|
||||||
nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA;
|
nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA;
|
||||||
nwmInit.wpaHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */
|
nwmInit.wpaHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */
|
||||||
nwmInit.wpaHeap.handle = heapHandle;
|
nwmInit.wpaHeap.handle = wpaHeapHandle;
|
||||||
#endif
|
#endif
|
||||||
NWMSP_Init(&nwmInit);
|
NWMSP_Init(&nwmInit);
|
||||||
|
|
||||||
@ -385,6 +379,19 @@ InitializeCdc(void)
|
|||||||
OSThread thread;
|
OSThread thread;
|
||||||
u32 stack[18];
|
u32 stack[18];
|
||||||
|
|
||||||
|
// ※ランチャーでは必要なし
|
||||||
|
#if 0
|
||||||
|
// ランチャー経由で起動した場合はCODECは既に初期化されているため
|
||||||
|
// コンポーネントがCODECを初期化する必要はありません。
|
||||||
|
// 将来的にはバッサリと切る必要がありますが、
|
||||||
|
// 暫定的にI2Sが有効かどうかでCODECが初期化済みかどうかを判定します。
|
||||||
|
if (reg_SND_SMX_CNT & REG_SND_SMX_CNT_E_MASK)
|
||||||
|
{
|
||||||
|
CDC_InitLib();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// ダミースレッド作成
|
// ダミースレッド作成
|
||||||
OS_CreateThread(&thread, DummyThread, NULL,
|
OS_CreateThread(&thread, DummyThread, NULL,
|
||||||
(void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX);
|
(void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX);
|
||||||
@ -392,7 +399,7 @@ InitializeCdc(void)
|
|||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
// CODEC 初期化
|
// CODEC 初期化
|
||||||
CDC_InitForFirstBoot();
|
CDC_InitForFirstBoot(); // ※ランチャー特殊処理。
|
||||||
CDC_InitMic();
|
CDC_InitMic();
|
||||||
// CDCi_DumpRegisters();
|
// CDCi_DumpRegisters();
|
||||||
#else
|
#else
|
||||||
@ -430,13 +437,147 @@ DummyThread(void* arg)
|
|||||||
Arguments: None.
|
Arguments: None.
|
||||||
Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。
|
Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static OSHeapHandle
|
static OSHeapHandle InitializeAllocateSystem(u8 memType)
|
||||||
InitializeAllocateSystem(void)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
OSHeapHandle hh;
|
OSHeapHandle hh;
|
||||||
|
|
||||||
#ifdef SDK_TWLHYB
|
#ifdef SDK_TWLHYB
|
||||||
if (OS_IsRunOnTwl() == TRUE)
|
if( OS_IsRunOnTwl() == TRUE)
|
||||||
|
{
|
||||||
|
hh = InitializeAllocateSystemCoreEx(memType); /* Hybrid を TWL で動作させる */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
hh = InitializeAllocateSystemCore(memType); /* Hybrid を DS で動作させる or Limited */
|
||||||
|
}
|
||||||
|
|
||||||
|
return hh;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: InitializeAllocateSystemCore
|
||||||
|
Description: メモリ割当てシステムを初期化する。
|
||||||
|
Hybrid を DS で動作させた場合、Limited を TWL で動作させた場合に動作
|
||||||
|
Arguments: None.
|
||||||
|
Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static OSHeapHandle InitializeAllocateSystemCore(u8 memType)
|
||||||
|
{
|
||||||
|
OSHeapHandle hh;
|
||||||
|
|
||||||
|
/* MAIN */
|
||||||
|
if(memType == MEM_TYPE_MAIN)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
void* lo = (void*)OS_GetSubPrivArenaLo();
|
||||||
|
void* hi = (void*)OS_GetSubPrivArenaHi();
|
||||||
|
|
||||||
|
// アリーナを 0 クリア
|
||||||
|
MI_CpuClear8(lo, (u32)hi - (u32)lo);
|
||||||
|
|
||||||
|
// メモリ割り当て初期化
|
||||||
|
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("ARM7: Failed to MAIN create heap.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// カレントヒープに設定
|
||||||
|
(void)OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
||||||
|
// ヒープサイズの確認
|
||||||
|
{
|
||||||
|
u32 heapSize;
|
||||||
|
|
||||||
|
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
||||||
|
|
||||||
|
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
|
||||||
|
{
|
||||||
|
OS_Panic("ARM7: Failed to MAIN create heap.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef SDK_TWLLTD
|
||||||
|
{
|
||||||
|
if ((ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE) > heapSize)
|
||||||
|
{
|
||||||
|
OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
OS_TPrintf("ARM7: MAIN heap size is %d\n", heapSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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("ARM7: Failed to WRAM 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 MAIN create heap.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WM_WL_HEAP_SIZE > heapSize)
|
||||||
|
{
|
||||||
|
OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE);
|
||||||
|
}
|
||||||
|
OS_TPrintf("ARM7: WRAM heap size is %d\n", heapSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return hh;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef SDK_TWLHYB
|
||||||
|
#include <twl/ltdwram_begin.h>
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
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* basicLo = (void*)OS_GetSubPrivArenaLo();
|
||||||
void* basicHi = (void*)OS_GetSubPrivArenaHi();
|
void* basicHi = (void*)OS_GetSubPrivArenaHi();
|
||||||
@ -450,7 +591,6 @@ 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);
|
||||||
@ -480,38 +620,18 @@ InitializeAllocateSystem(void)
|
|||||||
u32 heapSize;
|
u32 heapSize;
|
||||||
|
|
||||||
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
||||||
if ((ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE) > heapSize)
|
|
||||||
|
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
|
||||||
{
|
{
|
||||||
OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE);
|
OS_Panic("ARM7: Failed to MAIN create heap.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
OS_TPrintf("ARM7: MAIN heap size is %d (before AddToHead)\n", heapSize);
|
OS_TPrintf("ARM7: MAIN heap size is %d (before AddToHead)\n", heapSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ヒープに拡張ブロックを追加
|
// ヒープに拡張ブロックを追加
|
||||||
OS_AddToHeap(OS_ARENA_MAIN_SUBPRIV, hh, extraLo, extraHi);
|
OS_AddToHeap(OS_ARENA_MAIN_SUBPRIV, hh, extraLo, extraHi);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
void* lo = (void*)OS_GetSubPrivArenaLo();
|
|
||||||
void* hi = (void*)OS_GetSubPrivArenaHi();
|
|
||||||
|
|
||||||
// アリーナを 0 クリア
|
|
||||||
MI_CpuClear8(lo, (u32)hi - (u32)lo);
|
|
||||||
|
|
||||||
// メモリ割り当て初期化
|
|
||||||
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("ARM7: Failed to MAIN create heap.\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// カレントヒープに設定
|
// カレントヒープに設定
|
||||||
(void)OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
(void)OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
||||||
// ヒープサイズの確認
|
// ヒープサイズの確認
|
||||||
@ -519,10 +639,22 @@ InitializeAllocateSystem(void)
|
|||||||
u32 heapSize;
|
u32 heapSize;
|
||||||
|
|
||||||
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
||||||
|
|
||||||
|
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
|
||||||
|
{
|
||||||
|
OS_Panic("ARM7: Failed to MAIN create heap.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE) > heapSize)
|
||||||
|
{
|
||||||
|
OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE);
|
||||||
|
}
|
||||||
OS_TPrintf("ARM7: MAIN heap size is %d\n", heapSize);
|
OS_TPrintf("ARM7: MAIN heap size is %d\n", heapSize);
|
||||||
}
|
}
|
||||||
#ifdef SDK_TWLHYB
|
}
|
||||||
if (OS_IsRunOnTwl() == TRUE)
|
|
||||||
|
if(memType == MEM_TYPE_WRAM)
|
||||||
|
{
|
||||||
{
|
{
|
||||||
void* basicLo = (void*)OS_GetWramSubPrivArenaLo();
|
void* basicLo = (void*)OS_GetWramSubPrivArenaLo();
|
||||||
void* basicHi = (void*)OS_GetWramSubPrivArenaHi();
|
void* basicHi = (void*)OS_GetWramSubPrivArenaHi();
|
||||||
@ -566,6 +698,12 @@ InitializeAllocateSystem(void)
|
|||||||
u32 heapSize;
|
u32 heapSize;
|
||||||
|
|
||||||
heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
||||||
|
|
||||||
|
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
|
||||||
|
{
|
||||||
|
OS_Panic("ARM7: Failed to WRAM create heap.\n");
|
||||||
|
}
|
||||||
|
|
||||||
if (WM_WL_HEAP_SIZE > heapSize)
|
if (WM_WL_HEAP_SIZE > heapSize)
|
||||||
{
|
{
|
||||||
OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE);
|
OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE);
|
||||||
@ -576,28 +714,6 @@ InitializeAllocateSystem(void)
|
|||||||
// ヒープに拡張ブロックを追加
|
// ヒープに拡張ブロックを追加
|
||||||
OS_AddToHeap(OS_ARENA_WRAM_SUBPRIV, hh, extraLo, extraHi);
|
OS_AddToHeap(OS_ARENA_WRAM_SUBPRIV, hh, extraLo, extraHi);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
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("ARM7: Failed to WRAM create heap.\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// カレントヒープに設定
|
// カレントヒープに設定
|
||||||
(void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
(void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
||||||
@ -607,15 +723,24 @@ InitializeAllocateSystem(void)
|
|||||||
u32 heapSize;
|
u32 heapSize;
|
||||||
|
|
||||||
heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
||||||
|
|
||||||
|
if( heapSize <= 0) /* ヒープ領域の確保に失敗 */
|
||||||
|
{
|
||||||
|
OS_Panic("ARM7: Failed to WRAM create heap.\n");
|
||||||
|
}
|
||||||
|
|
||||||
if (WM_WL_HEAP_SIZE > heapSize)
|
if (WM_WL_HEAP_SIZE > heapSize)
|
||||||
{
|
{
|
||||||
OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE);
|
OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE);
|
||||||
}
|
}
|
||||||
OS_TPrintf("ARM7: WRAM heap size is %d\n", heapSize);
|
OS_TPrintf("ARM7: WRAM heap size is %d\n", heapSize);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return hh;
|
return hh;
|
||||||
}
|
}
|
||||||
|
#include <twl/ltdwram_end.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef WM_PRECALC_ALLOWEDCHANNEL
|
#ifdef WM_PRECALC_ALLOWEDCHANNEL
|
||||||
extern u16 WMSP_GetAllowedChannel(u16 bitField);
|
extern u16 WMSP_GetAllowedChannel(u16 bitField);
|
||||||
@ -683,4 +808,3 @@ VBlankIntr(void)
|
|||||||
PM_SelfBlinkProc();
|
PM_SelfBlinkProc();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user