From 7ed96f4434ab4d363a82a21788d55f47bf8e9f15 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Tue, 11 Dec 2007 12:46:31 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=BBhyena.TWL=E3=81=A7RTC=E3=83=AA?= =?UTF-8?q?=E3=82=BB=E3=83=83=E3=83=88=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=82=92=E8=A1=8C=E3=81=86=E3=82=88=E3=81=86=E5=A4=89=E6=9B=B4?= =?UTF-8?q?=E3=80=82=20=E3=83=BB=E5=90=8C=E3=81=98=E3=81=8F=E3=80=81SCFG?= =?UTF-8?q?=E3=83=AC=E3=82=B8=E3=82=B9=E3=82=BF=E3=81=AE=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E3=82=92WRAM=E3=81=AE=E3=82=B7=E3=82=B9=E3=83=86=E3=83=A0?= =?UTF-8?q?=E9=A0=98=E5=9F=9F=E3=81=AB=E3=82=B3=E3=83=94=E3=83=BC=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E5=A4=89=E6=9B=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@346 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/components/hyena.TWL/src/main.c | 38 ++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/build/components/hyena.TWL/src/main.c b/build/components/hyena.TWL/src/main.c index 4e6679bf..ff3ced94 100644 --- a/build/components/hyena.TWL/src/main.c +++ b/build/components/hyena.TWL/src/main.c @@ -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に退避している値をチェックする。