mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
fix SD driver (new fifo empty flag)
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@176 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
parent
a2c8036766
commit
7b1d5b2e2c
@ -26,6 +26,8 @@
|
|||||||
|
|
||||||
#define ADD_CHECK 1
|
#define ADD_CHECK 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
グローバル
|
グローバル
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
@ -573,6 +575,8 @@ u16 SD_MultiReadBlock(u32 ulOffset)
|
|||||||
SD_TransReadyFPGA(); /* INFOレジスタ初期化 */
|
SD_TransReadyFPGA(); /* INFOレジスタ初期化 */
|
||||||
if( !SDCARD_UseFifoFlag) { /* FIFOを使わないとき */
|
if( !SDCARD_UseFifoFlag) { /* FIFOを使わないとき */
|
||||||
SD_AndFPGA(SD_INFO2_MASK,(~SD_INFO2_MASK_BRE)); /* SDカードからのデータ読出し要求割込み許可*/
|
SD_AndFPGA(SD_INFO2_MASK,(~SD_INFO2_MASK_BRE)); /* SDカードからのデータ読出し要求割込み許可*/
|
||||||
|
}else{
|
||||||
|
SD_OrFPGA(SD_INFO2_MASK, SD_INFO2_MASK_BRE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 読み込み開始アドレス(オフセット)設定 */
|
/* 読み込み開始アドレス(オフセット)設定 */
|
||||||
@ -851,10 +855,14 @@ s16 SD_FPGA_irq(void)
|
|||||||
if( SD_CheckFPGAReg( *SDIF_CNT_L, (u16)SDIF_CNT_FFIE)) { /* FULL割り込み許可のとき */
|
if( SD_CheckFPGAReg( *SDIF_CNT_L, (u16)SDIF_CNT_FFIE)) { /* FULL割り込み許可のとき */
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}else{
|
}else{
|
||||||
|
#if (SD_FIFO_EMPTY_FLAG_NEW == 1) //FIFO Emptyフラグ仕様変更後
|
||||||
|
return FALSE;
|
||||||
|
#else //FIFO Emptyフラグ仕様変更前
|
||||||
if(!SD_CheckFPGAReg(SD_INFO2_MASK,SD_INFO2_MASK_BWE)){ /* SDカードからのデータ書込み要求あり? */
|
if(!SD_CheckFPGAReg(SD_INFO2_MASK,SD_INFO2_MASK_BWE)){ /* SDカードからのデータ書込み要求あり? */
|
||||||
SD_AndFPGA(SD_INFO2,(~SD_INFO2_BWE)); /* SD用バッファ制御 Write Enable リセット*/
|
SD_AndFPGA(SD_INFO2,(~SD_INFO2_BWE)); /* SD用バッファ制御 Write Enable リセット*/
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}else{ /*--- FIFOを使わないとき ---*/
|
}else{ /*--- FIFOを使わないとき ---*/
|
||||||
if(!SD_CheckFPGAReg(SD_INFO2_MASK,SD_INFO2_MASK_BRE)){ /* SDカードからのデータ読出し要求あり? */
|
if(!SD_CheckFPGAReg(SD_INFO2_MASK,SD_INFO2_MASK_BRE)){ /* SDカードからのデータ読出し要求あり? */
|
||||||
@ -1161,9 +1169,16 @@ u16 SD_MultiWriteBlock(u32 ulOffset)
|
|||||||
PRINTDEBUG( " CMD25 (WRITE_MULTIPLE_BLOCK)\n");
|
PRINTDEBUG( " CMD25 (WRITE_MULTIPLE_BLOCK)\n");
|
||||||
|
|
||||||
SD_TransReadyFPGA(); /* INFOレジスタ初期化 */
|
SD_TransReadyFPGA(); /* INFOレジスタ初期化 */
|
||||||
// if( !SDCARD_UseFifoFlag) { /* FIFOを使わないとき */
|
|
||||||
|
#if (SD_FIFO_EMPTY_FLAG_NEW == 1) // FIFO Emptyフラグ仕様変更後
|
||||||
|
if( SDCARD_UseFifoFlag) { /* FIFOを使うとき */
|
||||||
|
SD_OrFPGA( SD_INFO2_MASK, SD_INFO2_MASK_BWE); /* SDカードからのデータ書込み要求割込み禁止 */
|
||||||
|
}else{
|
||||||
SD_AndFPGA(SD_INFO2_MASK,(~SD_INFO2_MASK_BWE)); /* SDカードからのデータ書込み要求割込み許可 */
|
SD_AndFPGA(SD_INFO2_MASK,(~SD_INFO2_MASK_BWE)); /* SDカードからのデータ書込み要求割込み許可 */
|
||||||
// }
|
}
|
||||||
|
#else // FIFO Emptyフラグ仕様変更前
|
||||||
|
SD_AndFPGA(SD_INFO2_MASK,(~SD_INFO2_MASK_BWE)); /* SDカードからのデータ書込み要求割込み許可 */
|
||||||
|
#endif
|
||||||
|
|
||||||
/* 書き込み開始オフセット設定 */
|
/* 書き込み開始オフセット設定 */
|
||||||
SD_SetFPGA(SD_ARG0,(((LELONG *)&ulOffset)->dt2word.low));
|
SD_SetFPGA(SD_ARG0,(((LELONG *)&ulOffset)->dt2word.low));
|
||||||
|
|||||||
@ -80,6 +80,7 @@ u64 sd_stack[SD_STACK_SIZE / sizeof(u64)];
|
|||||||
u64 sd_intr_stack[SD_STACK_SIZE / sizeof(u64)];
|
u64 sd_intr_stack[SD_STACK_SIZE / sizeof(u64)];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
u16 sdmc_dma_no = SDMC_NOUSE_DMA;
|
||||||
/* drsdmc.cでも参照 */
|
/* drsdmc.cでも参照 */
|
||||||
SdmcSpec sdmc_current_spec; //TODO:ポート切り替え時、Port0とPort1に保存するように
|
SdmcSpec sdmc_current_spec; //TODO:ポート切り替え時、Port0とPort1に保存するように
|
||||||
|
|
||||||
@ -134,8 +135,8 @@ static void SDCARD_Dmy_Handler( void); /*
|
|||||||
static void SDCARD_Timer_irq(void* arg); /* タイムアウト割り込みハンドラ */
|
static void SDCARD_Timer_irq(void* arg); /* タイムアウト割り込みハンドラ */
|
||||||
static void SDCARD_irq_Handler( void); /* SD-IPからの割り込みハンドラ */
|
static void SDCARD_irq_Handler( void); /* SD-IPからの割り込みハンドラ */
|
||||||
static void SDCARD_FPGA_irq(void); /* カードリードライト割り込み処理 */
|
static void SDCARD_FPGA_irq(void); /* カードリードライト割り込み処理 */
|
||||||
static void SDCARD_ATC0_irq(void); /* ATC0転送完了割り込み処理 */
|
|
||||||
static void SYSFPGA_irq(void); /* SYSFPGAエラー割り込み処理 */
|
static void SYSFPGA_irq(void); /* SYSFPGAエラー割り込み処理 */
|
||||||
|
static void SDCARD_ReadyToEnd( void);
|
||||||
|
|
||||||
/*ポート1は無線固定なのでポート選択関数は公開しない*/
|
/*ポート1は無線固定なのでポート選択関数は公開しない*/
|
||||||
static u16 i_sdmcSelectedNo(void); /* カードポートの選択 */
|
static u16 i_sdmcSelectedNo(void); /* カードポートの選択 */
|
||||||
@ -198,7 +199,6 @@ SDPortContext SDPort1Context;
|
|||||||
|
|
||||||
u32 ulSDCARD_Size; /* カード全セクタ数 */
|
u32 ulSDCARD_Size; /* カード全セクタ数 */
|
||||||
|
|
||||||
volatile s16 SDCARD_ATC0_Flag; /* 全ATC完了フラグ */
|
|
||||||
volatile s16 SDCARD_FPGA_Flag; /* FPGA処理完了フラグ */
|
volatile s16 SDCARD_FPGA_Flag; /* FPGA処理完了フラグ */
|
||||||
volatile s16 SDCARD_EndFlag; /* 転送処理完了フラグ */
|
volatile s16 SDCARD_EndFlag; /* 転送処理完了フラグ */
|
||||||
|
|
||||||
@ -356,7 +356,7 @@ static void i_sdmcDisable( void)
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void SDCARD_irq_Handler( void)
|
void SDCARD_irq_Handler( void)
|
||||||
{
|
{
|
||||||
PRINTDEBUG( "SD irq!\n");
|
// OS_TPrintf( "SD irq!\n");
|
||||||
OS_SetIrqCheckFlag( OS_IE_SD);
|
OS_SetIrqCheckFlag( OS_IE_SD);
|
||||||
// sdmc_intr_wakeup_count++;
|
// sdmc_intr_wakeup_count++;
|
||||||
// OS_WakeupThreadDirect( &sdmc_intr_tsk);
|
// OS_WakeupThreadDirect( &sdmc_intr_tsk);
|
||||||
@ -393,6 +393,9 @@ SDMC_ERR_CODE sdmcInit( SDMC_DMA_NO dma_no, void (*func1)(),void (*func2)())
|
|||||||
{
|
{
|
||||||
SDMC_ERR_CODE api_result;
|
SDMC_ERR_CODE api_result;
|
||||||
|
|
||||||
|
/**/
|
||||||
|
sdmc_dma_no = dma_no;
|
||||||
|
|
||||||
if( sdmc_tsk_created == FALSE) {
|
if( sdmc_tsk_created == FALSE) {
|
||||||
/*---------- OS準備 ----------*/
|
/*---------- OS準備 ----------*/
|
||||||
if( !OS_IsAlarmAvailable()) { /* アラームチェック(OS_InitAlarm済みか?) */
|
if( !OS_IsAlarmAvailable()) { /* アラームチェック(OS_InitAlarm済みか?) */
|
||||||
@ -1029,7 +1032,7 @@ static SDMC_ERR_CODE SDCARDi_ReadFifo(void* buf,u32 bufsize,u32 offset,void(*fun
|
|||||||
*(SDIF_CNT) = (*(SDIF_CNT) & (~SDIF_CNT_FEIE)) | SDIF_CNT_FFIE;
|
*(SDIF_CNT) = (*(SDIF_CNT) & (~SDIF_CNT_FEIE)) | SDIF_CNT_FFIE;
|
||||||
*(SDIF_FDS) = (u16)SDCARD_SectorSize; /* FIFOのデータサイズ */
|
*(SDIF_FDS) = (u16)SDCARD_SectorSize; /* FIFOのデータサイズ */
|
||||||
*(SDIF_FSC) = bufsize;
|
*(SDIF_FSC) = bufsize;
|
||||||
*(SDIF_CNT) |= SDIF_CNT_USEFIFO; /* FIFO使用フラグON */
|
*(SDIF_CNT) |= (SDIF_CNT_FCLR | SDIF_CNT_USEFIFO); /* FIFO使用フラグON */
|
||||||
CC_EXT_MODE = CC_EXT_MODE_DMA; /* DMAモードON */
|
CC_EXT_MODE = CC_EXT_MODE_DMA; /* DMAモードON */
|
||||||
|
|
||||||
result = SDCARDi_Read( buf, bufsize, offset, func, info);
|
result = SDCARDi_Read( buf, bufsize, offset, func, info);
|
||||||
@ -1108,7 +1111,6 @@ static SDMC_ERR_CODE SDCARDi_Read(void* buf,u32 bufsize,u32 offset,void(*func)(v
|
|||||||
ulSDCARD_RestSectorCount = bufsize; /* 残り転送セクタ数の設定 */
|
ulSDCARD_RestSectorCount = bufsize; /* 残り転送セクタ数の設定 */
|
||||||
pSDCARD_BufferAddr = buf; /* データ格納バッファのアドレスを設定 */
|
pSDCARD_BufferAddr = buf; /* データ格納バッファのアドレスを設定 */
|
||||||
|
|
||||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC処理完了フラグクリア */
|
|
||||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||||
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
||||||
@ -1197,16 +1199,17 @@ static void SDCARD_FPGA_irq(void)
|
|||||||
/* FIFOを使わないとき:BREかBWEかを調べ、INFO2の当該割り込み要求フラグをクリアする */
|
/* FIFOを使わないとき:BREかBWEかを調べ、INFO2の当該割り込み要求フラグをクリアする */
|
||||||
bRead = SD_FPGA_irq();
|
bRead = SD_FPGA_irq();
|
||||||
|
|
||||||
if( ulSDCARD_RestSectorCount) { /* 残りセクタ数が有る時 */
|
|
||||||
ulSDCARD_RestSectorCount--; /* 残りセクタ数をデクリメント */
|
|
||||||
|
|
||||||
/*--- SDカードからのリード時 ---*/
|
/*--- SDカードからのリード時 ---*/
|
||||||
if(bRead){
|
if(bRead){
|
||||||
|
if( ulSDCARD_RestSectorCount > 0) {
|
||||||
|
// if( ulSDCARD_RestSectorCount == 1) { TTT();}
|
||||||
if( SDCARD_UseFifoFlag) { /*--- FIFOを使うとき ---*/
|
if( SDCARD_UseFifoFlag) { /*--- FIFOを使うとき ---*/
|
||||||
MyCpuRecv32( (u32*)SDIF_FI, (u32*)pSDCARD_BufferAddr, SDCARD_SectorSize);
|
MyCpuRecv32( (u32*)SDIF_FI, (u32*)pSDCARD_BufferAddr, SDCARD_SectorSize);
|
||||||
}else{ /*--- FIFOを使わないとき ---*/
|
}else{ /*--- FIFOを使わないとき ---*/
|
||||||
MyCpuRecv16( (u16*)SD_BUF0, pSDCARD_BufferAddr, SDCARD_SectorSize);
|
MyCpuRecv16( (u16*)SD_BUF0, pSDCARD_BufferAddr, SDCARD_SectorSize);
|
||||||
}
|
}
|
||||||
|
ulSDCARD_RestSectorCount--; /* 残りセクタ数をデクリメント */
|
||||||
|
}
|
||||||
if( ulSDCARD_RestSectorCount <= 0) { /* 要求セクタ数リード完了したか? */
|
if( ulSDCARD_RestSectorCount <= 0) { /* 要求セクタ数リード完了したか? */
|
||||||
if(SD_CheckFPGAReg(SD_STOP,SD_STOP_SEC_ENABLE)){ /* SD_SECCNTレジスタがEnableか? */
|
if(SD_CheckFPGAReg(SD_STOP,SD_STOP_SEC_ENABLE)){ /* SD_SECCNTレジスタがEnableか? */
|
||||||
// SD_DisableSeccnt(); /* SD_SECCNTレジスタ無効設定 */
|
// SD_DisableSeccnt(); /* SD_SECCNTレジスタ無効設定 */
|
||||||
@ -1215,11 +1218,15 @@ static void SDCARD_FPGA_irq(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{ /*--- SDカードへのライト時 ---*/
|
}else{ /*--- SDカードへのライト時 ---*/
|
||||||
|
if( ulSDCARD_RestSectorCount > 0) {
|
||||||
|
if( ulSDCARD_RestSectorCount == 1) { SDCARD_ReadyToEnd();}
|
||||||
if( SDCARD_UseFifoFlag) { /*--- FIFOを使うとき ---*/
|
if( SDCARD_UseFifoFlag) { /*--- FIFOを使うとき ---*/
|
||||||
MI_CpuSend32( pSDCARD_BufferAddr, SDIF_FI, SDCARD_SectorSize);
|
MI_CpuSend32( pSDCARD_BufferAddr, SDIF_FI, SDCARD_SectorSize);
|
||||||
}else{ /*--- FIFOを使わないとき ---*/
|
}else{ /*--- FIFOを使わないとき ---*/
|
||||||
MI_CpuSend16( pSDCARD_BufferAddr, SD_BUF0, SDCARD_SectorSize);
|
MI_CpuSend16( pSDCARD_BufferAddr, SD_BUF0, SDCARD_SectorSize);
|
||||||
}
|
}
|
||||||
|
ulSDCARD_RestSectorCount--; /* 残りセクタ数をデクリメント */
|
||||||
|
}
|
||||||
if( ulSDCARD_RestSectorCount <= 0){ /* 要求セクタ数ライト完了? */
|
if( ulSDCARD_RestSectorCount <= 0){ /* 要求セクタ数ライト完了? */
|
||||||
if( SDCARD_UseFifoFlag) { /* FIFOを使用するときは */
|
if( SDCARD_UseFifoFlag) { /* FIFOを使用するときは */
|
||||||
while( (*SDIF_CNT & SDIF_CNT_NEMP)) {}; /* FIFOにデータが残っているうちは終了しない */
|
while( (*SDIF_CNT & SDIF_CNT_NEMP)) {}; /* FIFOにデータが残っているうちは終了しない */
|
||||||
@ -1232,47 +1239,27 @@ static void SDCARD_FPGA_irq(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* リード/ライト共通処理 */
|
/* リード/ライト共通処理 */
|
||||||
SDCARD_ATC0_irq(); /* 転送完了後の処理 */
|
SDCARD_TimerStart(SDCARD_RW_TIMEOUT); /* タイムアウト判定用タイマスタート(4000msec) */
|
||||||
pSDCARD_BufferAddr+=(512/2); /* 書込みデータのバッファアドレスをインクリメント */
|
pSDCARD_BufferAddr+=(512/2); /* 書込みデータのバッファアドレスをインクリメント */
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: SDCARD_ATC0_irq
|
Name: SDCARD_ReadyToEnd
|
||||||
|
|
||||||
Description:
|
Description:
|
||||||
カードとの転送終了時に行う処理。
|
カードとの最終セクタ転送前に行う処理。
|
||||||
|
|
||||||
Arguments: None
|
Arguments: None
|
||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static void SDCARD_ATC0_irq(void)
|
static void SDCARD_ReadyToEnd( void)
|
||||||
{
|
{
|
||||||
/*--- 残りセクタ数が 0 のとき ---*/
|
*(SDIF_CNT) = (*(SDIF_CNT) & (~(SDIF_CNT_FFIE | SDIF_CNT_FEIE)));
|
||||||
if( ulSDCARD_RestSectorCount == 0) {
|
SD_OrFPGA( SD_INFO2_MASK, SD_INFO2_MASK_BWE); /* SDカードからのデータ書込み要求割込み禁止 */
|
||||||
SDCARD_ATC0_Flag = TRUE; /* 全ATC完了フラグセット */
|
SD_OrFPGA( SD_INFO2_MASK, SD_INFO2_MASK_BRE); /* SDカードからのデータ書込み要求割込み禁止 */
|
||||||
|
|
||||||
/* 転送完了 */
|
|
||||||
if( SDCARD_FPGA_Flag) { /* 転送終了時の割り込み処理(SYSFPGA_irq)が完了している? */
|
|
||||||
SDCARD_TimerStop(); /* タイムアウト判定用タイマストップ */
|
SDCARD_TimerStop(); /* タイムアウト判定用タイマストップ */
|
||||||
SD_TransEndFPGA(); /* 転送終了処理(割り込みマスクを禁止に戻す) */
|
|
||||||
if( SDCARD_EndFlag == FALSE) { /* 転送処理完了フラグが立っていない? */
|
|
||||||
SDCARD_EndFlag = TRUE; /* 転送処理完了フラグをセット */
|
|
||||||
if( pSDCARD_info) {
|
|
||||||
pSDCARD_info->result = SDCARD_ErrStatus; /* SdmcResultInfo に情報設定 */
|
|
||||||
pSDCARD_info->resid = (ulSDCARD_SectorCount - ulSDCARD_RestSectorCount) *
|
|
||||||
SDCARD_SectorSize; /* SdmcResultInfo に処理セクタ数設定 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else{ /*--- 残りセクタ数が 0 でないとき ---*/
|
|
||||||
SDCARD_TimerStop(); /* タイムアウト判定用タイマストップ */
|
|
||||||
#if TIMEOUT
|
|
||||||
SDCARD_TimerStart(SDCARD_RW_TIMEOUT); /* タイムアウト判定用タイマスタート(4000msec) */
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
@ -1345,7 +1332,8 @@ static void SYSFPGA_irq(void)
|
|||||||
if( SD_INFO_ERROR_VALUE & SD_INFO1_MASK_ALL_END) { /* R/W access all end 割込み発生か? */
|
if( SD_INFO_ERROR_VALUE & SD_INFO1_MASK_ALL_END) { /* R/W access all end 割込み発生か? */
|
||||||
SD_OrFPGA( SD_INFO1_MASK, SD_INFO1_MASK_ALL_END); /* INFO1の access all end 割込み禁止 */
|
SD_OrFPGA( SD_INFO1_MASK, SD_INFO1_MASK_ALL_END); /* INFO1の access all end 割込み禁止 */
|
||||||
SDCARD_FPGA_Flag = TRUE; /* R/Wアクセス終了(IP処理完了)フラグセット */
|
SDCARD_FPGA_Flag = TRUE; /* R/Wアクセス終了(IP処理完了)フラグセット */
|
||||||
if( SDCARD_ATC0_Flag) { /* 転送完了処理(SDCARD_ATC0_irq)が完了しているか? */
|
|
||||||
|
// OS_TPrintf( "SYS\n");
|
||||||
SDCARD_TimerStop(); /* タイムアウト判定用タイマストップ */
|
SDCARD_TimerStop(); /* タイムアウト判定用タイマストップ */
|
||||||
SD_TransEndFPGA(); /* 転送終了処理(割り込みマスクを禁止に戻す) */
|
SD_TransEndFPGA(); /* 転送終了処理(割り込みマスクを禁止に戻す) */
|
||||||
if( SDCARD_EndFlag == FALSE) { /* 転送が終了していないか? */
|
if( SDCARD_EndFlag == FALSE) { /* 転送が終了していないか? */
|
||||||
@ -1356,8 +1344,9 @@ static void SYSFPGA_irq(void)
|
|||||||
SDCARD_SectorSize; /* SdmcResultInfo に処理セクタ数設定 */
|
SDCARD_SectorSize; /* SdmcResultInfo に処理セクタ数設定 */
|
||||||
}
|
}
|
||||||
} /* 転送が終了済みのとき */
|
} /* 転送が終了済みのとき */
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} /* 全ATC完了フラグ OFF の場合 */
|
|
||||||
if( SDCARD_ErrStatus != SDMC_NORMAL) { /* エラーが発生している場合 */
|
if( SDCARD_ErrStatus != SDMC_NORMAL) { /* エラーが発生している場合 */
|
||||||
SDCARD_TimerStop(); /* タイムアウト判定用タイマストップ */
|
SDCARD_TimerStop(); /* タイムアウト判定用タイマストップ */
|
||||||
if( SDCARD_EndFlag == FALSE) { /* 転送が終了していないか? */
|
if( SDCARD_EndFlag == FALSE) { /* 転送が終了していないか? */
|
||||||
@ -1532,7 +1521,6 @@ static u16 i_sdmcSendSCR(void)
|
|||||||
pSDCARD_BufferAddr = SD_SCR; /* データ格納バッファのアドレスを設定 */
|
pSDCARD_BufferAddr = SD_SCR; /* データ格納バッファのアドレスを設定 */
|
||||||
|
|
||||||
/* 転送前の準備処理 */
|
/* 転送前の準備処理 */
|
||||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
|
||||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||||
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
||||||
@ -1693,7 +1681,6 @@ static u16 SDCARD_SD_Status(void)
|
|||||||
pSDCARD_BufferAddr = SD_SDSTATUS; /* データ格納バッファのアドレスを設定 */
|
pSDCARD_BufferAddr = SD_SDSTATUS; /* データ格納バッファのアドレスを設定 */
|
||||||
|
|
||||||
/* 転送前の準備処理 */
|
/* 転送前の準備処理 */
|
||||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
|
||||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||||
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
||||||
@ -1772,7 +1759,6 @@ int MMCP_SetBusWidth( BOOL b4bit)
|
|||||||
pSDCARD_info = NULL;
|
pSDCARD_info = NULL;
|
||||||
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;
|
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;
|
||||||
pSDCARD_BufferAddr = &TestData; /* データ格納バッファのアドレスを設定 */
|
pSDCARD_BufferAddr = &TestData; /* データ格納バッファのアドレスを設定 */
|
||||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
|
||||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||||
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
||||||
@ -1798,7 +1784,6 @@ int MMCP_SetBusWidth( BOOL b4bit)
|
|||||||
/**/
|
/**/
|
||||||
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;/* 残りセクタサイズ、セクタカウントに1を設定 */
|
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;/* 残りセクタサイズ、セクタカウントに1を設定 */
|
||||||
pSDCARD_BufferAddr = &Resid; /* データ格納バッファのアドレスを設定 */
|
pSDCARD_BufferAddr = &Resid; /* データ格納バッファのアドレスを設定 */
|
||||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
|
||||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||||
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
||||||
@ -1923,11 +1908,17 @@ static SDMC_ERR_CODE SDCARDi_WriteFifo(void* buf,u32 bufsize,u32 offset,void(*fu
|
|||||||
{
|
{
|
||||||
SDMC_ERR_CODE result;
|
SDMC_ERR_CODE result;
|
||||||
|
|
||||||
|
#if (SD_FIFO_EMPTY_FLAG_NEW == 1)
|
||||||
|
/* FIFO Full割り込み無効、FIFO Empty割り込み有効 */
|
||||||
|
*(SDIF_CNT) = (*(SDIF_CNT) & (~SDIF_CNT_FFIE)) | SDIF_CNT_FEIE;
|
||||||
|
#else
|
||||||
/* FIFO割り込み禁止 */
|
/* FIFO割り込み禁止 */
|
||||||
*(SDIF_CNT) = (*(SDIF_CNT) & (~(SDIF_CNT_FFIE | SDIF_CNT_FEIE)));
|
*(SDIF_CNT) = (*(SDIF_CNT) & (~(SDIF_CNT_FFIE | SDIF_CNT_FEIE)));
|
||||||
|
#endif
|
||||||
|
|
||||||
*(SDIF_FDS) = (u16)SDCARD_SectorSize; /* FIFOのデータサイズ */
|
*(SDIF_FDS) = (u16)SDCARD_SectorSize; /* FIFOのデータサイズ */
|
||||||
*(SDIF_FSC) = bufsize;
|
*(SDIF_FSC) = bufsize;
|
||||||
*(SDIF_CNT) |= SDIF_CNT_USEFIFO; /* FIFO使用フラグON */
|
*(SDIF_CNT) |= (SDIF_CNT_FCLR | SDIF_CNT_USEFIFO); /* FIFO使用フラグON */
|
||||||
CC_EXT_MODE = CC_EXT_MODE_DMA; /* DMAモードON */
|
CC_EXT_MODE = CC_EXT_MODE_DMA; /* DMAモードON */
|
||||||
|
|
||||||
result = SDCARDi_Write( buf, bufsize, offset, func, info);
|
result = SDCARDi_Write( buf, bufsize, offset, func, info);
|
||||||
@ -2015,7 +2006,6 @@ static SDMC_ERR_CODE SDCARDi_Write(void* buf,u32 bufsize,u32 offset,void(*func)(
|
|||||||
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = bufsize;
|
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = bufsize;
|
||||||
pSDCARD_BufferAddr = buf; /* データ格納バッファのアドレスを設定 */
|
pSDCARD_BufferAddr = buf; /* データ格納バッファのアドレスを設定 */
|
||||||
|
|
||||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
|
||||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||||
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
||||||
@ -2027,6 +2017,16 @@ static SDMC_ERR_CODE SDCARDi_Write(void* buf,u32 bufsize,u32 offset,void(*func)(
|
|||||||
/* IPのSD_SECCNTレジスタ有効化、転送セクタ数設定(自動CMD12発行のため) */
|
/* IPのSD_SECCNTレジスタ有効化、転送セクタ数設定(自動CMD12発行のため) */
|
||||||
SD_EnableSeccnt( ulSDCARD_RestSectorCount);
|
SD_EnableSeccnt( ulSDCARD_RestSectorCount);
|
||||||
|
|
||||||
|
|
||||||
|
#if (SD_FIFO_EMPTY_FLAG_NEW == 1)
|
||||||
|
if( SDCARD_UseFifoFlag) { /*--- FIFOを使うとき ---*/
|
||||||
|
ulSDCARD_RestSectorCount--;
|
||||||
|
MI_CpuSend32( pSDCARD_BufferAddr, SDIF_FI, SDCARD_SectorSize);
|
||||||
|
pSDCARD_BufferAddr += (512/2);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*--- ライトコマンド発行 ---*/
|
/*--- ライトコマンド発行 ---*/
|
||||||
if( SDCARD_SDHCFlag) {
|
if( SDCARD_SDHCFlag) {
|
||||||
SD_MultiWriteBlock( offset); /* ライトコマンド発行(引数:オフセット) */
|
SD_MultiWriteBlock( offset); /* ライトコマンド発行(引数:オフセット) */
|
||||||
@ -2137,7 +2137,6 @@ static u16 i_sdmcGetResid(u32 *pResid)
|
|||||||
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;/* 残りセクタサイズ、セクタカウントに1を設定 */
|
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;/* 残りセクタサイズ、セクタカウントに1を設定 */
|
||||||
pSDCARD_BufferAddr = Resid; /* データ格納バッファのアドレスを設定 */
|
pSDCARD_BufferAddr = Resid; /* データ格納バッファのアドレスを設定 */
|
||||||
|
|
||||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
|
||||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||||
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */
|
||||||
@ -2417,10 +2416,15 @@ static void SDCARD_Thread( void* arg)
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static void SDCARD_Intr_Thread( void* arg)
|
static void SDCARD_Intr_Thread( void* arg)
|
||||||
{
|
{
|
||||||
|
static i = 0;
|
||||||
u16 sd_info1;//, sd_info2;
|
u16 sd_info1;//, sd_info2;
|
||||||
OSIntrMode enabled;
|
OSIntrMode enabled;
|
||||||
|
|
||||||
|
OS_EnableInterrupts();
|
||||||
|
OS_EnableIrq();
|
||||||
|
|
||||||
while( 1) {
|
while( 1) {
|
||||||
|
i++;
|
||||||
PRINTDEBUG( "Slp sdIntr\n");
|
PRINTDEBUG( "Slp sdIntr\n");
|
||||||
|
|
||||||
OS_WaitIrq( FALSE, OS_IE_SD);
|
OS_WaitIrq( FALSE, OS_IE_SD);
|
||||||
@ -2428,37 +2432,42 @@ static void SDCARD_Intr_Thread( void* arg)
|
|||||||
(void)OS_ClearIrqCheckFlag( OS_IE_SD);
|
(void)OS_ClearIrqCheckFlag( OS_IE_SD);
|
||||||
*(vu16*)CTR_INT_IF = CTR_IE_SD_MASK; /*SD割り込みのIF解除*/
|
*(vu16*)CTR_INT_IF = CTR_IE_SD_MASK; /*SD割り込みのIF解除*/
|
||||||
|
|
||||||
PRINTDEBUG( "sdIntr waked\n");
|
// OS_TPrintf( "sdIntr waked\n");
|
||||||
|
|
||||||
|
|
||||||
|
while( 1) {
|
||||||
/*--- FIFOを使うとき ---*/
|
/*--- FIFOを使うとき ---*/
|
||||||
if( SDCARD_UseFifoFlag) {
|
if( SDCARD_UseFifoFlag) {
|
||||||
sd_info1 = SD_INFO1;
|
sd_info1 = SD_INFO1;
|
||||||
if( ((*SDIF_CNT & SDIF_CNT_FULL)&&(*SDIF_CNT & SDIF_CNT_FFIE)) ||
|
if( (((*SDIF_CNT & SDIF_CNT_FULL)&&(*SDIF_CNT & SDIF_CNT_FFIE)) ||
|
||||||
((!(*SDIF_CNT & SDIF_CNT_NEMP))&&(*SDIF_CNT & SDIF_CNT_FEIE))) {
|
((!(*SDIF_CNT & SDIF_CNT_NEMP))&&(*SDIF_CNT & SDIF_CNT_FEIE)))
|
||||||
|
){
|
||||||
|
|
||||||
PRINTDEBUG( ">>>SD Intr(FIFO)\n");// Full or Empty)\n");
|
// OS_TPrintf( ">>>SD Intr(FIFO) %d\n", i);// Full or Empty)\n");
|
||||||
OS_DisableIrqMask( OS_IE_SD);
|
OS_DisableIrqMask( OS_IE_SD);
|
||||||
SDCARD_FPGA_irq(); /*カードからのリードライト要求割り込み*/
|
SDCARD_FPGA_irq(); /*カードからのリードライト要求割り込み*/
|
||||||
OS_EnableIrqMask( OS_IE_SD);
|
OS_EnableIrqMask( OS_IE_SD);
|
||||||
|
// break;
|
||||||
|
|
||||||
|
#if (SD_FIFO_EMPTY_FLAG_NEW == 1)
|
||||||
|
#else
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
/*----- FIFO-EmptyFlag未修正の場合、Writeの1回目はBWE割り込みに頼る必要がある -----*/
|
/*----- FIFO-EmptyFlag未修正の場合、Writeの1回目はBWE割り込みに頼る必要がある -----*/
|
||||||
if( SD_CheckFPGAReg( SD_INFO2, (SD_INFO2_MASK_BRE | SD_INFO2_MASK_BWE))) {
|
if( SD_CheckFPGAReg( SD_INFO2, (SD_INFO2_MASK_BRE | SD_INFO2_MASK_BWE))) {
|
||||||
PRINTDEBUG ( ">>>SD Intr(R/W Req)\n");
|
// OS_TPrintf( ">>>SD Intr(R/W Req)\n");
|
||||||
//ここで自動的にラッパーのFIFO<->SD_BUF0間で通信が行われる
|
//ここで自動的にラッパーのFIFO<->SD_BUF0間で通信が行われる
|
||||||
OS_DisableIrqMask( OS_IE_SD);
|
OS_DisableIrqMask( OS_IE_SD);
|
||||||
SDCARD_FPGA_irq();
|
SDCARD_FPGA_irq();
|
||||||
OS_EnableIrqMask( OS_IE_SD);
|
OS_EnableIrqMask( OS_IE_SD);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
/*----------*/
|
/*----------*/
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIFO割り込みとALLEND割り込みがほぼ同時の場合に対応 */
|
/* ALL_END */
|
||||||
if( SD_CheckFPGAReg( sd_info1, SD_INFO1_ALL_END)) {
|
sd_info1 = SD_INFO1;
|
||||||
PRINTDEBUG( ">>>SD Intr(End or Err)\n");
|
if( (SD_CheckFPGAReg( sd_info1, SD_INFO1_ALL_END))&&(ulSDCARD_RestSectorCount<=0)) {
|
||||||
|
// OS_TPrintf( ">>>SD Intr(End or Err) %d\n", i);
|
||||||
(void)OS_ClearIrqCheckFlag( OS_IE_SD);
|
(void)OS_ClearIrqCheckFlag( OS_IE_SD);
|
||||||
*(vu16*)CTR_INT_IF = CTR_IE_SD_MASK; /*SD割り込みのIF解除*/
|
*(vu16*)CTR_INT_IF = CTR_IE_SD_MASK; /*SD割り込みのIF解除*/
|
||||||
OS_DisableIrqMask( OS_IE_SD);
|
OS_DisableIrqMask( OS_IE_SD);
|
||||||
@ -2470,7 +2479,9 @@ static void SDCARD_Intr_Thread( void* arg)
|
|||||||
PRINTDEBUG( "wakeup\n");
|
PRINTDEBUG( "wakeup\n");
|
||||||
OS_WakeupThreadDirect( &sdmc_tsk);
|
OS_WakeupThreadDirect( &sdmc_tsk);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
/*--- FIFOを使わないとき ---*/
|
/*--- FIFOを使わないとき ---*/
|
||||||
}else{
|
}else{
|
||||||
if( SD_CheckFPGAReg( SD_INFO2, (SD_INFO2_MASK_BRE | SD_INFO2_MASK_BWE))) {
|
if( SD_CheckFPGAReg( SD_INFO2, (SD_INFO2_MASK_BRE | SD_INFO2_MASK_BWE))) {
|
||||||
@ -2490,6 +2501,8 @@ static void SDCARD_Intr_Thread( void* arg)
|
|||||||
OS_WakeupThreadDirect( &sdmc_tsk);
|
OS_WakeupThreadDirect( &sdmc_tsk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,6 +38,8 @@
|
|||||||
*********************************************/
|
*********************************************/
|
||||||
#define SD_DEBUG_PRINT_ON 0 /* デバッグ表示 */
|
#define SD_DEBUG_PRINT_ON 0 /* デバッグ表示 */
|
||||||
|
|
||||||
|
#define SD_FIFO_EMPTY_FLAG_NEW 1 /* FIFOエンプティフラグ仕様変更前/後 */
|
||||||
|
|
||||||
#define WP_ena 1 /* ライトプロテクトのチェック有効 */
|
#define WP_ena 1 /* ライトプロテクトのチェック有効 */
|
||||||
#define TIMEOUT 1 /* FPGA Timeout none = FALSE */
|
#define TIMEOUT 1 /* FPGA Timeout none = FALSE */
|
||||||
#define SCR 1 /* Send SCR Command = TRUE */
|
#define SCR 1 /* Send SCR Command = TRUE */
|
||||||
|
|||||||
@ -23,6 +23,13 @@
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
#define PRINTDEBUG OS_TPrintf
|
#define PRINTDEBUG OS_TPrintf
|
||||||
|
|
||||||
|
|
||||||
|
#define DEBUG_DECLARE OSTick begin
|
||||||
|
#define DEBUG_BEGIN() (begin=OS_GetTick())
|
||||||
|
#define DEBUG_END(str) OS_TPrintf( "\n%s was consumed %d msec.\n", #str, (int)OS_TicksToMilliSeconds(OS_GetTick()-begin))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
内部関数定義
|
内部関数定義
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
@ -88,6 +95,7 @@ void TwlSpMain(void)
|
|||||||
SdmcResultInfo SdResult;
|
SdmcResultInfo SdResult;
|
||||||
PCFD fd;
|
PCFD fd;
|
||||||
CHKDISK_STATS dstat;
|
CHKDISK_STATS dstat;
|
||||||
|
DEBUG_DECLARE;
|
||||||
|
|
||||||
// OS初期化
|
// OS初期化
|
||||||
OS_Init();
|
OS_Init();
|
||||||
@ -192,6 +200,31 @@ void TwlSpMain(void)
|
|||||||
/*----------------------------*/
|
/*----------------------------*/
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
sdmcSelect( (u16)SDMC_PORT_CARD);
|
||||||
|
DEBUG_BEGIN();
|
||||||
|
result = sdmcReadFifo( (void*)BlockBuf, 2, 1, NULL, &SdResult);
|
||||||
|
if( result != 0) {
|
||||||
|
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||||
|
}else{
|
||||||
|
DEBUG_END(sdmcReadFifo);
|
||||||
|
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
MI_DmaFill32( 2, BlockBuf, 0x55AA55AA, 512*3);
|
||||||
|
MI_DmaFill32( 2, BlockBuf2, 0x00FF00FF, 512*3);
|
||||||
|
|
||||||
|
DEBUG_BEGIN();
|
||||||
|
result = sdmcWriteFifo( (void*)0x02004000, 2, 1, NULL, &SdResult);
|
||||||
|
if( result != 0) {
|
||||||
|
PRINTDEBUG( "sdmcWriteFifo failed.\n");
|
||||||
|
}else{
|
||||||
|
DEBUG_END(sdmcWriteFifo);
|
||||||
|
PRINTDEBUG( "sdmcWriteFifo success.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*デバイスドライバの登録*/
|
/*デバイスドライバの登録*/
|
||||||
PRINTDEBUG( "attach start\n");
|
PRINTDEBUG( "attach start\n");
|
||||||
if( sdmcRtfsAttach( 4) == FALSE) { //sdmcをEドライブにする
|
if( sdmcRtfsAttach( 4) == FALSE) { //sdmcをEドライブにする
|
||||||
@ -223,7 +256,9 @@ void TwlSpMain(void)
|
|||||||
PRINTDEBUG( "pc_set_default_drive (E) success\n");
|
PRINTDEBUG( "pc_set_default_drive (E) success\n");
|
||||||
/**/
|
/**/
|
||||||
PRINTDEBUG( "pc_check_disk start. please wait.\n");
|
PRINTDEBUG( "pc_check_disk start. please wait.\n");
|
||||||
|
DEBUG_BEGIN();
|
||||||
pc_check_disk( (byte*)"E:", &dstat, 0, 1, 1);
|
pc_check_disk( (byte*)"E:", &dstat, 0, 1, 1);
|
||||||
|
DEBUG_END(pc_check_disk);
|
||||||
PRINTDEBUG( "pc_check_disk end.\n");
|
PRINTDEBUG( "pc_check_disk end.\n");
|
||||||
}else{
|
}else{
|
||||||
/*NANDからブロックライト/リード*/
|
/*NANDからブロックライト/リード*/
|
||||||
@ -265,10 +300,11 @@ void TwlSpMain(void)
|
|||||||
PRINTDEBUG( "po_close success.\n");
|
PRINTDEBUG( "po_close success.\n");
|
||||||
/*----------*/
|
/*----------*/
|
||||||
|
|
||||||
|
DEBUG_BEGIN();
|
||||||
if( pc_regression_test( (u8*)"E:", FALSE) == FALSE) {
|
if( pc_regression_test( (u8*)"E:", FALSE) == FALSE) {
|
||||||
PRINTDEBUG( "pc_regression_test failed.\n");
|
PRINTDEBUG( "pc_regression_test failed.\n");
|
||||||
}else{
|
}else{
|
||||||
|
DEBUG_END(pc_regression_test);
|
||||||
PRINTDEBUG( "pc_regression_test success.\n");
|
PRINTDEBUG( "pc_regression_test success.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,10 +25,10 @@ typedef enum {
|
|||||||
DMA”Ô<EFBFBD>†
|
DMA”Ô<EFBFBD>†
|
||||||
*********************************************/
|
*********************************************/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SDMC_USE_DMA_0 = 0,
|
SDMC_USE_DMA_4 = 0,
|
||||||
SDMC_USE_DMA_1 = 1,
|
SDMC_USE_DMA_5 = 1,
|
||||||
SDMC_USE_DMA_2 = 2,
|
SDMC_USE_DMA_6 = 2,
|
||||||
SDMC_USE_DMA_3 = 3,
|
SDMC_USE_DMA_7 = 3,
|
||||||
SDMC_NOUSE_DMA = 0xFF
|
SDMC_NOUSE_DMA = 0xFF
|
||||||
}SDMC_DMA_NO;
|
}SDMC_DMA_NO;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user