mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新:Akabane Jumpei)
Boot Segment読みのレイテンシを修正(Latency1=0x1fff Latency2=0x3f) DSカードを読んだ場合は、RomHeaderバッファの先頭1ページ分以降はゼロクリアしておく。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@541 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
246692381f
commit
0ed02f72b9
@ -28,9 +28,11 @@ static void SetMCSCR(void);
|
|||||||
// 共通
|
// 共通
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: ReadBootSegNormal_DSType1
|
* Name: ReadBootSegNormal_DSType1
|
||||||
|
*
|
||||||
Description: DSカードType1のノーマルモードのBoot Segment読み込み
|
* Description: DSカードType1のノーマルモードのBoot Segment読み込み
|
||||||
|
*
|
||||||
|
* CT=240ns Latency1=0x1fff Latency2=0x3f Pagecount=8page
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void ReadBootSegNormal_DSType1(CardBootData *cbd)
|
void ReadBootSegNormal_DSType1(CardBootData *cbd)
|
||||||
{
|
{
|
||||||
@ -44,8 +46,8 @@ void ReadBootSegNormal_DSType1(CardBootData *cbd)
|
|||||||
// MCCNT0 レジスタ設定 (E = 1 I = 1 SEL = 0に)
|
// MCCNT0 レジスタ設定 (E = 1 I = 1 SEL = 0に)
|
||||||
reg_HOTSW_MCCNT0 = (u16)((reg_HOTSW_MCCNT0 & 0x0fff) | 0xc000);
|
reg_HOTSW_MCCNT0 = (u16)((reg_HOTSW_MCCNT0 & 0x0fff) | 0xc000);
|
||||||
|
|
||||||
// MCCNT1 レジスタ設定 (START = 1 PC = 100(8ページリード)に latency1 = 0x14)
|
// MCCNT1 レジスタ設定
|
||||||
reg_HOTSW_MCCNT1 = START_MASK | PC_MASK & (0x4 << PC_SHIFT) | (0x14 & LATENCY1_MASK);
|
reg_HOTSW_MCCNT1 = START_MASK | CT_MASK | PC_MASK & (0x4 << PC_SHIFT) | LATENCY2_MASK | LATENCY1_MASK;
|
||||||
|
|
||||||
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
|
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
|
||||||
OS_SleepThread(NULL);
|
OS_SleepThread(NULL);
|
||||||
|
|||||||
@ -33,9 +33,11 @@ static void SetMCSCR(void);
|
|||||||
// 共通
|
// 共通
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: ReadBootSegNormal_DSType2
|
* Name: ReadBootSegNormal_DSType2
|
||||||
|
*
|
||||||
Description: DSカードType1のノーマルモードのBoot Segment読み込み (Page0 ~ 7)
|
* Description: DSカードType2のノーマルモードのBoot Segment読み込み (Page0 ~ 7)
|
||||||
|
*
|
||||||
|
* CT=240ns Latency1=0x1fff Latency2=0x3f Pagecount=1page
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void ReadBootSegNormal_DSType2(CardBootData *cbd)
|
void ReadBootSegNormal_DSType2(CardBootData *cbd)
|
||||||
{
|
{
|
||||||
@ -69,8 +71,8 @@ void ReadBootSegNormal_DSType2(CardBootData *cbd)
|
|||||||
reg_HOTSW_MCCMD0 = *(u32 *)cndBE.b;
|
reg_HOTSW_MCCMD0 = *(u32 *)cndBE.b;
|
||||||
reg_HOTSW_MCCMD1 = *(u32 *)&cndBE.b[4];
|
reg_HOTSW_MCCMD1 = *(u32 *)&cndBE.b[4];
|
||||||
|
|
||||||
// MCCNT1 レジスタ設定 (START = 1 PC = 001(1ページリード)に latency1 = 0x5fe)
|
// MCCNT1 レジスタ設定
|
||||||
reg_HOTSW_MCCNT1 = START_MASK | PC_MASK & (0x1 << PC_SHIFT) | (0x5fe & LATENCY1_MASK);
|
reg_HOTSW_MCCNT1 = START_MASK | CT_MASK | PC_MASK & (0x1 << PC_SHIFT) | LATENCY2_MASK | LATENCY1_MASK;
|
||||||
|
|
||||||
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
|
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
|
||||||
OS_SleepThread(NULL);
|
OS_SleepThread(NULL);
|
||||||
|
|||||||
@ -310,6 +310,10 @@ BOOL HOTSW_Boot(void)
|
|||||||
OS_TPrintf("TWL Card.\n");
|
OS_TPrintf("TWL Card.\n");
|
||||||
s_cbData.twlFlg = TRUE;
|
s_cbData.twlFlg = TRUE;
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
// NTRカードの場合はRomHeaderバッファの1ページ目以降をクリアしておく。
|
||||||
|
MI_CpuClearFast((void *)(SYSM_CARD_ROM_HEADER_BAK + PAGE_SIZE), SYSM_CARD_ROM_HEADER_SIZE - PAGE_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
// SecureコマンドのPNG_ONコマンドetc用のレイテンシを求める(Latency1とLatency2を足す)
|
// SecureコマンドのPNG_ONコマンドetc用のレイテンシを求める(Latency1とLatency2を足す)
|
||||||
s_cbData.secureLatency = AddLatency2ToLatency1(s_cbData.pBootSegBuf->rh.s.secure_cmd_param);
|
s_cbData.secureLatency = AddLatency2ToLatency1(s_cbData.pBootSegBuf->rh.s.secure_cmd_param);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user