mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
SD/NANDとのデータ転送をユーザ関数で行える手段を追加
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@110 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
parent
384ba7db4e
commit
a3c0852954
@ -843,7 +843,7 @@ u16 MMCP_BusTest( BOOL readflag)
|
||||
Returns: TRUE : BRE割り込み発生
|
||||
FALSE : BWE割り込み発生
|
||||
*---------------------------------------------------------------------------*/
|
||||
s16 SD_FPGA_irq(void)
|
||||
BOOL SD_FPGA_irq(void)
|
||||
{
|
||||
/*--- FIFOを使うとき ---*/
|
||||
if( SDCARD_UseFifoFlag) {
|
||||
|
||||
@ -325,7 +325,7 @@ u16 MMCP_WriteBusWidth(s16 b4bit);
|
||||
u16 MMCP_BusTest( BOOL readflag);
|
||||
|
||||
|
||||
s16 SD_FPGA_irq(void); /* カード転送要求時のFPGAの制御 */
|
||||
BOOL SD_FPGA_irq(void); /* カード転送要求時のFPGAの制御 */
|
||||
void SD_StopTransmission(void); /* カード転送終了をFPGAに通知する。 */
|
||||
void SD_TransEndFPGA(void); /* カード転送の終了処理(割り込みマスクを戻す) */
|
||||
u16 SD_CheckStatus(BOOL bRead); /* Normal response command カードステータスのチェック */
|
||||
|
||||
@ -160,6 +160,10 @@ u16 SDCARD_WP_TEMPORARY; /*
|
||||
|
||||
u16* pSDCARD_BufferAddr; /* 保存用データ格納バッファアドレス */
|
||||
|
||||
sdmcTransferFunction SDCARD_USR_TRANSFER_FUNC = NULL; /* ユーザ転送関数 */
|
||||
//sdmcTransferFunction CURRENT_TRANSFER_FUNC; /* カレント転送関数 */
|
||||
|
||||
BOOL SDCARD_DataFlag; /* データフラグ(転送種別) */
|
||||
u32 ulSDCARD_SectorCount; /* 転送セクタ数 */
|
||||
u32 ulSDCARD_RestSectorCount; /* 残り転送セクタ数 */
|
||||
u32 SDCARD_SectorSize; /* セクタサイズ デフォルト 512bytes */
|
||||
@ -1005,6 +1009,8 @@ SDMC_ERR_CODE sdmcReadFifo(void* buf,u32 bufsize,u32 offset,void(*func)(void),Sd
|
||||
#endif
|
||||
SDMC_ERR_CODE api_result; //SDCARD関数の返り値
|
||||
|
||||
SDCARD_USR_TRANSFER_FUNC = NULL; //ライブラリ内部関数によるリード
|
||||
|
||||
SdMsg.buf = buf;
|
||||
SdMsg.bufsize = bufsize;
|
||||
SdMsg.offset = offset;
|
||||
@ -1023,6 +1029,41 @@ SDMC_ERR_CODE sdmcReadFifo(void* buf,u32 bufsize,u32 offset,void(*func)(void),Sd
|
||||
return api_result;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: sdmcReadFifoDirect
|
||||
|
||||
Description: read from card.
|
||||
ラッパーのFIFOを使用してカードからの読み出し。
|
||||
|
||||
Arguments: buf : 読み出したデータを格納するためのバッファのアドレス
|
||||
bufsize : 読み出しサイズ(セクタ数)
|
||||
offset : 読み出し開始オフセット(セクタ番号)
|
||||
info : 実行結果を格納するための構造体へのアドレス
|
||||
|
||||
Returns: 0 : success
|
||||
> 0 : error
|
||||
*---------------------------------------------------------------------------*/
|
||||
SDMC_ERR_CODE sdmcReadFifoDirect(sdmcTransferFunction usr_func,
|
||||
u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info)
|
||||
{
|
||||
SDCARDMsg SdMsg;
|
||||
SDMC_ERR_CODE api_result; //SDCARD関数の返り値
|
||||
|
||||
SDCARD_USR_TRANSFER_FUNC = usr_func; //User関数による直接リード
|
||||
|
||||
SdMsg.buf = NULL;
|
||||
SdMsg.bufsize = bufsize;
|
||||
SdMsg.offset = offset;
|
||||
SdMsg.func = func;
|
||||
SdMsg.info = info;
|
||||
SdMsg.operation = SD_OPERATION_READ_WITH_FIFO;
|
||||
|
||||
api_result = SDCARD_Thread( &SdMsg);
|
||||
|
||||
return api_result;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SDCARDi_ReadFifo
|
||||
|
||||
@ -1057,6 +1098,7 @@ static SDMC_ERR_CODE SDCARDi_ReadFifo(void* buf,u32 bufsize,u32 offset,void(*fun
|
||||
return result;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: sdmcRead
|
||||
|
||||
@ -1098,6 +1140,7 @@ SDMC_ERR_CODE sdmcRead(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcRe
|
||||
|
||||
return api_result;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SDCARDi_Read
|
||||
@ -1129,6 +1172,7 @@ static SDMC_ERR_CODE SDCARDi_Read(void* buf,u32 bufsize,u32 offset,void(*func)(v
|
||||
ulSDCARD_RestSectorCount = bufsize; /* 残り転送セクタ数の設定 */
|
||||
pSDCARD_BufferAddr = buf; /* データ格納バッファのアドレスを設定 */
|
||||
|
||||
SDCARD_DataFlag = TRUE;
|
||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC処理完了フラグクリア */
|
||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||
@ -1192,6 +1236,23 @@ static SDMC_ERR_CODE SDCARDi_Read(void* buf,u32 bufsize,u32 offset,void(*func)(v
|
||||
return SDCARD_ErrStatus;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: sdmcSetTransferFunction
|
||||
|
||||
Description:
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
/*
|
||||
void sdmcSetTransferFunction( sdmcTransferFunction usr_func)
|
||||
{
|
||||
SDCARD_USR_TRANSFER_FUNC = usr_func;
|
||||
}*/
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SDCARD_FPGA_irq
|
||||
|
||||
@ -1221,15 +1282,39 @@ static void SDCARD_FPGA_irq(void)
|
||||
TransCount = (u16)(SDCARD_SectorSize/2); /* 転送カウント設定 (16bit転送なのでセクタサイズの半分) */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*-------- ユーザ関数(データ転送、Fifoモード時に有効) --------*/
|
||||
if(( SDCARD_DataFlag == TRUE)&&( SDCARD_USR_TRANSFER_FUNC != NULL)&&
|
||||
( SDCARD_UseFifoFlag)) {
|
||||
SDCARD_USR_TRANSFER_FUNC( (void*)SDIF_FI, SDCARD_SectorSize, bRead);
|
||||
TransCount = 0;
|
||||
/*転送終了*/
|
||||
if( ulSDCARD_RestSectorCount <= 0) { /* 要求セクタ数リード完了したか? */
|
||||
if( bRead == FALSE) {
|
||||
if( SDCARD_UseFifoFlag) { /* FIFOを使用するときは */
|
||||
while( (*SDIF_CNT & SDIF_CNT_NEMP)) {}; /* FIFOにデータが残っているうちは終了しない */
|
||||
}
|
||||
}
|
||||
if(SD_CheckFPGAReg(SD_STOP,SD_STOP_SEC_ENABLE)){ /* SD_SECCNTレジスタがEnableか? */
|
||||
if( bRead) {
|
||||
SD_DisableSeccnt(); /* SD_SECCNTレジスタ無効設定 */
|
||||
}
|
||||
}else{ /* SD_SECCNTレジスタがDisableのとき */
|
||||
SD_StopTransmission(); /* カード転送終了をFPGAに通知(CMD12発行) */
|
||||
}
|
||||
}
|
||||
SDCARD_ATC0_irq(); /* 転送完了後の処理 */
|
||||
|
||||
}else{
|
||||
|
||||
/*--- SDカードからのリード時 ---*/
|
||||
if(bRead){
|
||||
if( sdmc_dma_no != SDMC_NOUSE_DMA) {
|
||||
if( TransCount != 0) {
|
||||
if( SDCARD_UseFifoFlag) {
|
||||
MI_DmaRecv32( sdmc_dma_no, (void*)SDIF_FI, pSDCARD_BufferAddr, SDCARD_SectorSize);//TransCount*4);
|
||||
MI_DmaRecv32( sdmc_dma_no, (void*)SDIF_FI, pSDCARD_BufferAddr, SDCARD_SectorSize);
|
||||
}else{
|
||||
MI_DmaRecv16( sdmc_dma_no, (void*)SD_BUF0, pSDCARD_BufferAddr, SDCARD_SectorSize);//TransCount*2);
|
||||
MI_DmaRecv16( sdmc_dma_no, (void*)SD_BUF0, pSDCARD_BufferAddr, SDCARD_SectorSize);
|
||||
}
|
||||
TransCount = 0;
|
||||
/*転送終了*/
|
||||
@ -1318,6 +1403,7 @@ static void SDCARD_FPGA_irq(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1620,6 +1706,7 @@ static u16 i_sdmcSendSCR(void)
|
||||
pSDCARD_BufferAddr = SD_SCR; /* データ格納バッファのアドレスを設定 */
|
||||
|
||||
/* 転送前の準備処理 */
|
||||
SDCARD_DataFlag = FALSE;
|
||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||
@ -1775,6 +1862,7 @@ static u16 SDCARD_SD_Status(void)
|
||||
pSDCARD_BufferAddr = SD_SDSTATUS; /* データ格納バッファのアドレスを設定 */
|
||||
|
||||
/* 転送前の準備処理 */
|
||||
SDCARD_DataFlag = FALSE;
|
||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||
@ -1849,6 +1937,7 @@ int MMCP_SetBusWidth( BOOL b4bit)
|
||||
pSDCARD_info = NULL;
|
||||
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;
|
||||
pSDCARD_BufferAddr = &TestData; /* データ格納バッファのアドレスを設定 */
|
||||
SDCARD_DataFlag = FALSE;
|
||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||
@ -1875,6 +1964,7 @@ int MMCP_SetBusWidth( BOOL b4bit)
|
||||
/**/
|
||||
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;/* 残りセクタサイズ、セクタカウントに1を設定 */
|
||||
pSDCARD_BufferAddr = &Resid; /* データ格納バッファのアドレスを設定 */
|
||||
SDCARD_DataFlag = FALSE;
|
||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||
@ -1934,8 +2024,8 @@ static u16 i_sdmcCheckWP(void)
|
||||
return SDCARD_ErrStatus;
|
||||
}
|
||||
else if (SD_port_number == SDCARD_PORT1) /* ポート1のとき */
|
||||
{
|
||||
if(!(SD_CheckFPGAReg(EXT_WP,EXT_WP_PORT1))) { //WPフラグが立っていないか?
|
||||
{ /*TWLのポート1はライトプロテクトビットが常に0(プロテクト状態)なので反転して評価*/
|
||||
if((SD_CheckFPGAReg(EXT_WP,EXT_WP_PORT1))) { //WPフラグが立っていないか?
|
||||
SDCARD_ErrStatus |= SDMC_ERR_WP; //エラーフラグのWPエラービットを立てる
|
||||
}else{ //WPフラグが立っていたとき
|
||||
SDCARD_ErrStatus &= ~SDMC_ERR_WP; //エラーフラグのWPエラービットを落とす
|
||||
@ -1969,6 +2059,8 @@ SDMC_ERR_CODE sdmcWriteFifo(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcR
|
||||
#endif
|
||||
SDMC_ERR_CODE api_result;
|
||||
|
||||
SDCARD_USR_TRANSFER_FUNC = NULL; //ライブラリ内部関数によるリード
|
||||
|
||||
SdMsg.buf = buf;
|
||||
SdMsg.bufsize = bufsize;
|
||||
SdMsg.offset = offset;
|
||||
@ -1987,6 +2079,42 @@ SDMC_ERR_CODE sdmcWriteFifo(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcR
|
||||
return api_result;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: sdmcWriteFifoDirect
|
||||
|
||||
Description: write to card.
|
||||
ラッパーのFIFOを使用してカードへの書き込み。
|
||||
|
||||
Arguments: buf : 書き込みデータが格納されているバッファのアドレス
|
||||
bufsize : 書き込むサイズ(セクタ数)
|
||||
offset : 書き込み開始オフセット(セクタ番号)
|
||||
info : 実行結果を格納するための構造体へのアドレス
|
||||
|
||||
Returns: 0 : success
|
||||
> 0 : error
|
||||
*---------------------------------------------------------------------------*/
|
||||
SDMC_ERR_CODE sdmcWriteFifoDirect(sdmcTransferFunction usr_func,
|
||||
u32 bufsize,u32 offset,void(*func)(),SdmcResultInfo *info)
|
||||
{
|
||||
SDCARDMsg SdMsg;
|
||||
OSMessage recv_dat;
|
||||
SDMC_ERR_CODE api_result;
|
||||
|
||||
SDCARD_USR_TRANSFER_FUNC = usr_func; //User関数による直接リード
|
||||
|
||||
SdMsg.buf = NULL;
|
||||
SdMsg.bufsize = bufsize;
|
||||
SdMsg.offset = offset;
|
||||
SdMsg.func = func;
|
||||
SdMsg.info = info;
|
||||
SdMsg.operation = SD_OPERATION_WRITE_WITH_FIFO;
|
||||
|
||||
api_result = SDCARD_Thread( &SdMsg);
|
||||
|
||||
return api_result;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SDCARDi_WriteFifo
|
||||
|
||||
@ -2020,7 +2148,7 @@ static SDMC_ERR_CODE SDCARDi_WriteFifo(void* buf,u32 bufsize,u32 offset,void(*fu
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: sdmcWrite
|
||||
|
||||
@ -2062,6 +2190,7 @@ SDMC_ERR_CODE sdmcWrite(void* buf,u32 bufsize,u32 offset,void(*func)(),SdmcResul
|
||||
|
||||
return api_result;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SDCARDi_Write
|
||||
@ -2102,6 +2231,7 @@ static SDMC_ERR_CODE SDCARDi_Write(void* buf,u32 bufsize,u32 offset,void(*func)(
|
||||
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = bufsize;
|
||||
pSDCARD_BufferAddr = buf; /* データ格納バッファのアドレスを設定 */
|
||||
|
||||
SDCARD_DataFlag = TRUE;
|
||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||
@ -2224,6 +2354,7 @@ static u16 i_sdmcGetResid(u32 *pResid)
|
||||
ulSDCARD_RestSectorCount = ulSDCARD_SectorCount = 1;/* 残りセクタサイズ、セクタカウントに1を設定 */
|
||||
pSDCARD_BufferAddr = Resid; /* データ格納バッファのアドレスを設定 */
|
||||
|
||||
SDCARD_DataFlag = FALSE;
|
||||
SDCARD_ATC0_Flag = FALSE; /* 全ATC完了フラグクリア */
|
||||
SDCARD_FPGA_Flag = FALSE; /* FPGA処理完了フラグクリア */
|
||||
SDCARD_EndFlag = FALSE; /* 転送処理完了フラグクリア */
|
||||
|
||||
@ -32,9 +32,28 @@ static void VBlankIntr(void);
|
||||
/*---------------------------------------------------------------------------*
|
||||
|
||||
*---------------------------------------------------------------------------*/
|
||||
u32 BlockBuf[512/4];
|
||||
u32 BlockBuf2[512/4];
|
||||
u32 BlockBuf[(512*3)/4];
|
||||
u32 BlockBuf2[(512*3)/4];
|
||||
|
||||
/*バッファオフセット*/
|
||||
static u32 my_buf_offset = 0;
|
||||
|
||||
/*ユーザ転送関数*/
|
||||
void MY_SdTransfer( void* sd_adr, u32 size, BOOL read_flag)
|
||||
{
|
||||
if( read_flag) { //リード
|
||||
MI_DmaRecv32( 2, sd_adr, (void*)((u32)BlockBuf2 + my_buf_offset), size);
|
||||
}else{ //ライト
|
||||
MI_DmaSend32( 2, (void*)((u32)BlockBuf + my_buf_offset), sd_adr, size);
|
||||
}
|
||||
my_buf_offset += size;
|
||||
}
|
||||
|
||||
/*バッファオフセットのリセット関数*/
|
||||
void MY_SdTransferRewind( void)
|
||||
{
|
||||
my_buf_offset = 0;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: TwlSpMain
|
||||
@ -80,9 +99,12 @@ void TwlSpMain(void)
|
||||
/**/
|
||||
PRINTDEBUG("Sample program starts.\n");
|
||||
// rtfs_init();
|
||||
|
||||
MI_DmaFill32( 2, BlockBuf, 0x55AA55AA, 512*3);
|
||||
MI_DmaFill32( 2, BlockBuf2, 0x00FF00FF, 512*3);
|
||||
|
||||
/*SDドライバ初期化*/
|
||||
result = sdmcInit( SDMC_USE_DMA_2, NULL, NULL);
|
||||
result = sdmcInit( SDMC_NOUSE_DMA, NULL, NULL);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcInit : failed\n");
|
||||
while( 1) {};
|
||||
@ -90,7 +112,8 @@ void TwlSpMain(void)
|
||||
PRINTDEBUG( "sdmcInit : success\n");
|
||||
}
|
||||
|
||||
/*--- SDからブロックリード ---*/
|
||||
#if 0
|
||||
/*--- SDへブロックライト/リード ---*/
|
||||
result = sdmcSelect( (u16)SDMC_PORT_CARD);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcSelect failed.\n");
|
||||
@ -98,15 +121,22 @@ void TwlSpMain(void)
|
||||
PRINTDEBUG( "sdmcSelect success.\n");
|
||||
}
|
||||
|
||||
result = sdmcReadFifo( BlockBuf, 1, 0, NULL, &SdResult);
|
||||
result = sdmcWriteFifo( BlockBuf, 3, 10, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcWriteFifo failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcWriteFifo success.\n");
|
||||
}
|
||||
|
||||
result = sdmcReadFifo( BlockBuf2, 3, 10, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
}
|
||||
/*----------------------------*/
|
||||
|
||||
/*NANDからブロックリード*/
|
||||
#else
|
||||
/*NANDからブロックライト/リード*/
|
||||
result = sdmcSelect( (u16)SDMC_PORT_NAND);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcSelect failed.\n");
|
||||
@ -114,72 +144,24 @@ void TwlSpMain(void)
|
||||
PRINTDEBUG( "sdmcSelect success.\n");
|
||||
}
|
||||
|
||||
result = sdmcReadFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||
MY_SdTransferRewind();
|
||||
result = sdmcWriteFifoDirect( (sdmcTransferFunction)&MY_SdTransfer, 3, 10, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
PRINTDEBUG( "sdmcWriteFifoDirect failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
PRINTDEBUG( "sdmcWriteFifoDirect success.\n");
|
||||
}
|
||||
|
||||
MY_SdTransferRewind();
|
||||
result = sdmcReadFifoDirect( (sdmcTransferFunction)&MY_SdTransfer, 3, 10, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifoDirect failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcReadFifoDirect success.\n");
|
||||
}
|
||||
/*----------------------------*/
|
||||
|
||||
|
||||
/*--- SDからブロックリード ---*/
|
||||
result = sdmcSelect( (u16)SDMC_PORT_CARD);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcSelect failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcSelect success.\n");
|
||||
}
|
||||
|
||||
result = sdmcReadFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
}
|
||||
/*----------------------------*/
|
||||
|
||||
/*NANDからブロックリード*/
|
||||
result = sdmcSelect( (u16)SDMC_PORT_NAND);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcSelect failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcSelect success.\n");
|
||||
}
|
||||
|
||||
result = sdmcReadFifo( BlockBuf, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
}
|
||||
/*----------------------------*/
|
||||
|
||||
|
||||
/*SDへブロックライト*/
|
||||
/* MI_CpuFill8( BlockBuf2, 0xA5, 512);
|
||||
result = sdmcWriteFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcWriteFifo failed.\n");
|
||||
}
|
||||
PRINTDEBUG( "sdmcWriteFifo success.\n");
|
||||
*/
|
||||
|
||||
/*SDからブロックリード*/
|
||||
/* result = sdmcReadFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
}
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
*/
|
||||
|
||||
/*SDへブロックライト*/
|
||||
/* result = sdmcWriteFifo( BlockBuf, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcWriteFifo failed.\n");
|
||||
}
|
||||
PRINTDEBUG( "sdmcWriteFifo success.\n");
|
||||
*/
|
||||
#endif
|
||||
/*デバイスドライバの登録*/
|
||||
/* if( sdmcRtfsAttach( 4) == FALSE) { //sdmcをEドライブにする
|
||||
PRINTDEBUG( "sdmcRtfsAttach failed.\n");
|
||||
|
||||
@ -101,6 +101,14 @@ BOOL sdmcRtfsAttach( int driveno);
|
||||
BOOL sdmcCheckMedia( void);
|
||||
|
||||
|
||||
/*********************************************
|
||||
データ転送関数の登録関連
|
||||
*********************************************/
|
||||
typedef void (*sdmcTransferFunction)( void* sd_adr, u32 size, BOOL read_flag);
|
||||
|
||||
//void sdmcSetTransferFunction( sdmcTransferFunction usr_func);
|
||||
|
||||
|
||||
/*********************************************
|
||||
基本API
|
||||
*********************************************/
|
||||
@ -111,14 +119,20 @@ SDMC_ERR_CODE sdmcGetStatus(u16 *status); /*
|
||||
u32 sdmcGetCardSize(void); /* カード全サイズの取得 */
|
||||
|
||||
/*SD I/FのFIFOを使ってリードする(高速)*/
|
||||
SDMC_ERR_CODE sdmcReadFifo(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info);/* テスト用カードリード */
|
||||
SDMC_ERR_CODE sdmcReadFifo(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info);
|
||||
SDMC_ERR_CODE sdmcReadFifoDirect( sdmcTransferFunction usr_func,
|
||||
u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info);
|
||||
|
||||
|
||||
/*リードする*/
|
||||
SDMC_ERR_CODE sdmcRead(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info); /* テスト用カードリード */
|
||||
//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(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info);
|
||||
SDMC_ERR_CODE sdmcWriteFifoDirect(sdmcTransferFunction usr_func,
|
||||
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(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info);
|
||||
|
||||
/*ポート選択*/
|
||||
u16 sdmcSelectedNo(void);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user