From 0e509b8d49de8d2e24f5dcd28137927778930d9a Mon Sep 17 00:00:00 2001 From: shirait Date: Fri, 6 Jul 2007 05:07:05 +0000 Subject: [PATCH] small fix git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@179 4ee2a332-4b2b-5046-8439-1ba90f034370 --- build/libraries/devices/sdmc/ARM7/sdmc.c | 42 +++++++++------------- build/tests/fatfs/fatfs_sd/ARM7/main.lsf | 4 +-- build/tests/fatfs/fatfs_sd/ARM7/src/main.c | 11 +++--- include/twl/devices/sdmc/ARM7/sdmc.h | 4 +-- 4 files changed, 27 insertions(+), 34 deletions(-) diff --git a/build/libraries/devices/sdmc/ARM7/sdmc.c b/build/libraries/devices/sdmc/ARM7/sdmc.c index f4b31c7..7e08b32 100644 --- a/build/libraries/devices/sdmc/ARM7/sdmc.c +++ b/build/libraries/devices/sdmc/ARM7/sdmc.c @@ -105,10 +105,10 @@ static void SDCARD_Restore_port0(void); static void SDCARD_Restore_port1(void); static SDMC_ERR_CODE SDCARDi_ReadFifo(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info); -static SDMC_ERR_CODE SDCARDi_WriteFifo(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info); +static SDMC_ERR_CODE SDCARDi_WriteFifo( const void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info); static SDMC_ERR_CODE SDCARDi_Read(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info); -static SDMC_ERR_CODE SDCARDi_Write(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info); +static SDMC_ERR_CODE SDCARDi_Write( const void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info); int MMCP_SetBusWidth( BOOL b4bit); /* ビット幅の選択(MMCplus, eMMC, moviNAND) */ @@ -199,7 +199,6 @@ SDPortContext SDPort1Context; u32 ulSDCARD_Size; /* カード全セクタ数 */ -volatile s16 SDCARD_FPGA_Flag; /* FPGA処理完了フラグ */ volatile s16 SDCARD_EndFlag; /* 転送処理完了フラグ */ SDMC_ERR_CODE SDCARD_ErrStatus; /* エラーステータス */ @@ -228,14 +227,14 @@ void (*func_SDCARD_Out)(void); /* Returns: None *---------------------------------------------------------------------------*/ -static void MyCpuRecv32( u32* src, u32* dest, u16 size) +static void MyCpuRecv32( const u32* src, u32* dest, u16 size) { u32 i; for( i=0; i<(size/sizeof(u32)); i++) { *(u32*)dest++ = *(u32*)src; } } -static void MyCpuRecv16( u16* src, u16* dest, u16 size) +static void MyCpuRecv16( const u16* src, u16* dest, u16 size) { u32 i; for( i=0; i<(size/sizeof(u16)); i++) { @@ -393,12 +392,13 @@ SDMC_ERR_CODE sdmcInit( SDMC_DMA_NO dma_no, void (*func1)(),void (*func2)()) { SDMC_ERR_CODE api_result; - /**/ + /*--- DMA / CPU 選択 ---*/ if( (dma_no < 4) || (dma_no == SDMC_NOUSE_DMA)) { sdmc_dma_no = dma_no; }else{ return( SDMC_ERR_PARAM); } + /*----------------------*/ if( sdmc_tsk_created == FALSE) { /*---------- OS準備 ----------*/ @@ -412,8 +412,6 @@ SDMC_ERR_CODE sdmcInit( SDMC_DMA_NO dma_no, void (*func1)(),void (*func2)()) OS_InitMessageQueue( &sdmc_dtq, &sdmc_dtq_array[0], 1); OS_InitMessageQueue( &sdmc_result_dtq, &sdmc_result_dtq_array[0], 1); -// OS_InitThread(); //自分の優先度が16になる - /* SDスレッドの立ち上げ */ OS_CreateThread( &sdmc_tsk, SDCARD_Thread, NULL, (sd_stack+SD_STACK_SIZE / sizeof(u64)), SD_STACK_SIZE, SD_THREAD_PRIO); @@ -529,7 +527,7 @@ SDMC_ERR_CODE sdmcReset( void) irq_core_flag = OS_DisableInterrupts(); /* 割込み禁止 */ *SDIF_CNT_L = (SDIF_CNT_FCLR | SDIF_CNT_USEFIFO); //ラッパーレジスタ - *SDIF_CNT_L = 0x0000; //ラッパーレジスタ + *SDIF_CNT_L = 0x0000; *SDIF_FDS_L = 0; *SDIF_FSC_L = 1; SD_Init(); /* SD Card I/F 初期化処理 */ @@ -576,7 +574,7 @@ static SDMC_ERR_CODE SDCARD_Layer_Init(void) SD_SetFPGA(SD_CLK_CTRL,(SD_CLK_CTRL_128)); /* SDクロックの周波数 261KHz(初期化時は100〜400khz) */ SD_EnableClock(); /* SDカードのクロックをイネーブルにする */ - /* SD I/F部ダミー80クロック(1mSec)転送待ち(タイマーで待ちを実装しても良い) */ + /* SD I/F部ダミー80クロック(1mSec)転送待ち */ #if (TARGET_OS_CTR == 1) dly_tsk( 1); #else @@ -880,7 +878,7 @@ static SDMC_ERR_CODE i_sdmcMPInit( void) sdmcSelect( (u16)SDMC_PORT_NAND); SDCARD_ErrStatus = SDCARD_Layer_Init(); } - SDCARD_OutFlag = FALSE; /* 排出フラグをリセット */ + SDCARD_OutFlag = FALSE; /* 排出フラグをリセット */ SDCARD_TimerStop(); /* タイムアウト判定用タイマストップ */ SD_DisableClock(); /* SD-CLK Disable */ @@ -1139,7 +1137,6 @@ static SDMC_ERR_CODE SDCARDi_Read(void* buf,u32 bufsize,u32 offset,void(*func)(v ulSDCARD_RestSectorCount = bufsize; /* 残り転送セクタ数の設定 */ pSDCARD_BufferAddr = buf; /* データ格納バッファのアドレスを設定 */ - SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */ SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */ SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */ @@ -1359,7 +1356,6 @@ static void SYSFPGA_irq(void) 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 割込み禁止 */ - SDCARD_FPGA_Flag = TRUE; /* R/Wアクセス終了(IP処理完了)フラグセット */ // OS_TPrintf( "SYS\n"); SDCARD_TimerStop(); /* タイムアウト判定用タイマストップ */ @@ -1549,7 +1545,6 @@ static u16 i_sdmcSendSCR(void) pSDCARD_BufferAddr = SD_SCR; /* データ格納バッファのアドレスを設定 */ /* 転送前の準備処理 */ - SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */ SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */ SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */ @@ -1709,7 +1704,6 @@ static u16 SDCARD_SD_Status(void) pSDCARD_BufferAddr = SD_SDSTATUS; /* データ格納バッファのアドレスを設定 */ /* 転送前の準備処理 */ - SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */ SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */ SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */ @@ -1787,7 +1781,6 @@ int MMCP_SetBusWidth( BOOL b4bit) pSDCARD_info = NULL; ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1; pSDCARD_BufferAddr = &TestData; /* データ格納バッファのアドレスを設定 */ - SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */ SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */ SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */ @@ -1812,7 +1805,6 @@ int MMCP_SetBusWidth( BOOL b4bit) /**/ ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;/* 残りセクタサイズ、セクタカウントに1を設定 */ pSDCARD_BufferAddr = &Resid; /* データ格納バッファのアドレスを設定 */ - SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */ SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */ SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */ @@ -1895,7 +1887,7 @@ static u16 i_sdmcCheckWP(void) Returns: 0 : success > 0 : error *---------------------------------------------------------------------------*/ -SDMC_ERR_CODE sdmcWriteFifo(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info) +SDMC_ERR_CODE sdmcWriteFifo( const void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info) { SDCARDMsg SdMsg; OSMessage recv_dat; @@ -1905,7 +1897,7 @@ SDMC_ERR_CODE sdmcWriteFifo(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcR return( SDMC_ERR_PARAM); } - SdMsg.buf = buf; + SdMsg.buf = (void*)buf; SdMsg.bufsize = bufsize; SdMsg.offset = offset; SdMsg.func = func; @@ -1936,7 +1928,7 @@ SDMC_ERR_CODE sdmcWriteFifo(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcR Returns: 0 : success > 0 : error *---------------------------------------------------------------------------*/ -static SDMC_ERR_CODE SDCARDi_WriteFifo(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info) +static SDMC_ERR_CODE SDCARDi_WriteFifo( const void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info) { u32* DmaReg; SDMC_ERR_CODE result; @@ -1992,7 +1984,7 @@ static SDMC_ERR_CODE SDCARDi_WriteFifo(void* buf,u32 bufsize,u32 offset,void(*fu Returns: 0 : success > 0 : error *---------------------------------------------------------------------------*/ -SDMC_ERR_CODE sdmcWrite(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info) +SDMC_ERR_CODE sdmcWrite( const void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info) { SDCARDMsg SdMsg; OSMessage recv_dat; @@ -2002,7 +1994,7 @@ SDMC_ERR_CODE sdmcWrite(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResul return( SDMC_ERR_PARAM); } - SdMsg.buf = buf; + SdMsg.buf = (void*)buf; SdMsg.bufsize = bufsize; SdMsg.offset = offset; SdMsg.func = func; @@ -2033,7 +2025,7 @@ SDMC_ERR_CODE sdmcWrite(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResul Returns: 0 : success > 0 : error *---------------------------------------------------------------------------*/ -static SDMC_ERR_CODE SDCARDi_Write(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info) +static SDMC_ERR_CODE SDCARDi_Write( const void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info) { s16 nRetryCount; u32 ulResid; @@ -2056,9 +2048,8 @@ static SDMC_ERR_CODE SDCARDi_Write(void* buf,u32 bufsize,u32 offset,void(*func)( /* func_SDCARD_CallBack = func; */ pSDCARD_info = info; ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = bufsize; - pSDCARD_BufferAddr = buf; /* データ格納バッファのアドレスを設定 */ + pSDCARD_BufferAddr = (void*)buf; /* データ格納バッファのアドレスを設定 */ - SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */ SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */ SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */ @@ -2189,7 +2180,6 @@ static u16 i_sdmcGetResid(u32 *pResid) ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;/* 残りセクタサイズ、セクタカウントに1を設定 */ pSDCARD_BufferAddr = Resid; /* データ格納バッファのアドレスを設定 */ - SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */ SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */ SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスのクリア */ diff --git a/build/tests/fatfs/fatfs_sd/ARM7/main.lsf b/build/tests/fatfs/fatfs_sd/ARM7/main.lsf index 9eac241..c703615 100644 --- a/build/tests/fatfs/fatfs_sd/ARM7/main.lsf +++ b/build/tests/fatfs/fatfs_sd/ARM7/main.lsf @@ -19,7 +19,7 @@ Static $(TARGET_NAME) { - Address 0x02004000 + Address 0x0200B000 Library crt0.o StackSize 1024 512 } @@ -33,7 +33,7 @@ Static $(TARGET_NAME) Autoload MAIN { - Address 0x02020000 + Address 0x02010000 Object $(OBJS_STATIC) Library $(LLIBS) $(GLIBS) $(CW_LIBS) Object * (.wram) diff --git a/build/tests/fatfs/fatfs_sd/ARM7/src/main.c b/build/tests/fatfs/fatfs_sd/ARM7/src/main.c index d43eada..45dff0f 100644 --- a/build/tests/fatfs/fatfs_sd/ARM7/src/main.c +++ b/build/tests/fatfs/fatfs_sd/ARM7/src/main.c @@ -35,12 +35,15 @@ *---------------------------------------------------------------------------*/ static OSHeapHandle InitializeAllocateSystem(void); static void VBlankIntr(void); +void MY_SdTransfer( void* sd_adr, u32 size, BOOL read_flag); +void MY_SdTransferRewind( void); /*---------------------------------------------------------------------------* *---------------------------------------------------------------------------*/ u32 BlockBuf[(512*3)/4]; u32 BlockBuf2[(512*3)/4]; +u32 LargeBuf[1*1024*1024/4]; /*バッファオフセット*/ static u32 my_buf_offset = 0; @@ -203,11 +206,11 @@ void TwlSpMain(void) sdmcSelect( (u16)SDMC_PORT_CARD); DEBUG_BEGIN(); - result = sdmcReadFifo( (void*)BlockBuf, 2, 1, NULL, &SdResult); + result = sdmcReadFifo( (void*)LargeBuf, 2048, 1, NULL, &SdResult); + DEBUG_END(sdmcReadFifo); if( result != 0) { PRINTDEBUG( "sdmcReadFifo failed.\n"); }else{ - DEBUG_END(sdmcReadFifo); PRINTDEBUG( "sdmcReadFifo success.\n"); } @@ -215,11 +218,11 @@ void TwlSpMain(void) MI_DmaFill32( 2, BlockBuf2, 0x00FF00FF, 512*3); DEBUG_BEGIN(); - result = sdmcWriteFifo( (void*)0x02004000, 10000, 1, NULL, &SdResult); + result = sdmcWriteFifo( (void*)0x02004000, 2048, 1, NULL, &SdResult); + DEBUG_END(sdmcWriteFifo); if( result != 0) { PRINTDEBUG( "sdmcWriteFifo failed.\n"); }else{ - DEBUG_END(sdmcWriteFifo); PRINTDEBUG( "sdmcWriteFifo success.\n"); } diff --git a/include/twl/devices/sdmc/ARM7/sdmc.h b/include/twl/devices/sdmc/ARM7/sdmc.h index 2d26a17..f690ed9 100644 --- a/include/twl/devices/sdmc/ARM7/sdmc.h +++ b/include/twl/devices/sdmc/ARM7/sdmc.h @@ -181,9 +181,9 @@ SDMC_ERR_CODE sdmcReadFifo(void* buf,u32 bufsize,u32 offset,void(*func)(void) SDMC_ERR_CODE sdmcRead(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info); /* テスト用カードリード */ /*SD I/FのFIFOを使ってライトする(高速)*/ -SDMC_ERR_CODE sdmcWriteFifo(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info);/* テスト用カードライト */ +SDMC_ERR_CODE sdmcWriteFifo( const void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info);/* テスト用カードライト */ /*ライトする*/ -SDMC_ERR_CODE sdmcWrite(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info); /* テスト用カードライト */ +SDMC_ERR_CODE sdmcWrite( const void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info); /* テスト用カードライト */ u16 sdmcSelectedNo(void); SDMC_ERR_CODE sdmcSelect( u16 select);