mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・hyena.TWLでRTCリセットチェックを行うよう変更。
・同じく、SCFGレジスタの内容をWRAMのシステム領域にコピーするよう変更。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@346 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
950de4a028
commit
7ed96f4434
@ -67,6 +67,7 @@
|
||||
内部関数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void SetSCFGWork( void );
|
||||
static void ResetRTC( void );
|
||||
static void ReadResetParameter( void );
|
||||
static void PrintDebugInfo(void);
|
||||
static OSHeapHandle InitializeAllocateSystem(void);
|
||||
@ -96,27 +97,30 @@ void
|
||||
TwlSpMain(void)
|
||||
{
|
||||
OSHeapHandle heapHandle;
|
||||
|
||||
|
||||
// SYSMワークのクリア
|
||||
MI_CpuClear32( SYSMi_GetWork(), sizeof(SYSM_work) );
|
||||
|
||||
|
||||
// MMEMサイズチェックは、ARM7の_start内でやっているので、ノーケアでOK.
|
||||
// SCFGレジスタ→HWi_WSYS04 etc.→system shared領域への値セットは、ランチャー起動時点では行われていないので、
|
||||
// ランチャー自身がこれらの値を使うには、自身でこれらの値をセットしてやる必要がある。
|
||||
// ランチャーからアプリを起動する際には、reboot.cが値を再セットしてくれる。
|
||||
// SetSCFGWork(); // [TODO]未デバッグ
|
||||
SetSCFGWork(); // [TODO]未デバッグ
|
||||
|
||||
// OS 初期化
|
||||
OS_Init();
|
||||
OS_InitTick();
|
||||
PrintDebugInfo();
|
||||
|
||||
// NVRAM からユーザー情報読み出し
|
||||
ReadUserInfo();
|
||||
|
||||
// Cold/Hotスタート判定
|
||||
ReadResetParameter();
|
||||
|
||||
// RTCリセット
|
||||
ResetRTC(); // 330usくらい
|
||||
|
||||
// NVRAM からユーザー情報読み出し
|
||||
ReadUserInfo();
|
||||
|
||||
// [TODO:] カード電源ONして、ROMヘッダのみリード&チェックくらいはやっておきたい
|
||||
|
||||
SYSMi_GetWork()->isARM9Start = TRUE; // [TODO:] HW_RED_RESERVEDはNANDファームでクリアしておいて欲しい
|
||||
@ -201,7 +205,7 @@ TwlSpMain(void)
|
||||
}
|
||||
|
||||
|
||||
// システム領域(WRAM & MMEM)にSCFG情報をセット
|
||||
// システム領域(WRAM & MMEM)にSCFG情報をセット [TODO:]最終的にNANDファームからブートされたらいらないかも
|
||||
static void SetSCFGWork( void )
|
||||
{
|
||||
// SCFGレジスタが有効な場合のみセット
|
||||
@ -229,6 +233,26 @@ static void SetSCFGWork( void )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// RTCのリセットチェック
|
||||
static void ResetRTC( void )
|
||||
{
|
||||
// ランチャーでリセットを検出するためにこの処理をしているが、RTC_Init内でも同じことをしているので、ちょっと無駄。
|
||||
RTCRawStatus1 stat1;
|
||||
RTCRawStatus2 stat2;
|
||||
RTC_ReadStatus1( &stat1 );
|
||||
RTC_ReadStatus2( &stat2 );
|
||||
// リセット、電源投入、電源電圧低下、ICテストの各フラグを確認
|
||||
if ( stat1.reset || stat1.poc || stat1.bld || stat2.test )
|
||||
{
|
||||
// リセット実行
|
||||
stat1.reset = 1;
|
||||
RTC_WriteStatus1( &stat1 );
|
||||
SYSMi_GetWork()->isResetRTC = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static BOOL IsEnableJTAG( void )
|
||||
{
|
||||
// SCFGレジスタが無効になっていたら、SCFGレジスタの値は"0"になるので、WRAMに退避している値をチェックする。
|
||||
|
||||
Loading…
Reference in New Issue
Block a user