update ex_dma test.

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@49 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
nakasima 2007-04-27 02:34:35 +00:00
parent e7582616d7
commit 67c6cebc03
4 changed files with 294 additions and 240 deletions

View File

@ -18,7 +18,7 @@
static u32 intervalTable[] = static u32 intervalTable[] =
{ {
2, 4, 8, 16, 1, 1, 1, 1,
}; };
//================================================================================ //================================================================================

View File

@ -16,6 +16,8 @@
#include <twl.h> #include <twl.h>
#define MY_DMA_MMEM ((t_TestBuf *)HW_MAIN_MEM_SUB)
#define MY_TEST_LOOPS 2 // (sizeof(copyfillArg)/sizeof(t_CommonArg))
#define ONE_BUF_SIZE 0x2004 #define ONE_BUF_SIZE 0x2004
typedef struct typedef struct
@ -41,17 +43,26 @@ t_TestBuf testBuf __attribute__ ((aligned (32)));
t_CommonArg copyfillArg[] = t_CommonArg copyfillArg[] =
{ {
{ testBuf.src, testBuf.dest, "DmaCopy success.\n", "DmaFill success on WRAM.\n", }, { testBuf.src, testBuf.dest, "DmaCopy success on WRAM -> WRAM.\n", NULL, },
{ MY_DMA_MMEM->src, testBuf.dest, "DmaCopy success on MAIN_MEM -> WRAM.\n", "DmaFill success on WRAM.\n", },
{ testBuf.src, MY_DMA_MMEM->dest, "DmaCopy success on WRAM -> MAIN_MEM.\n", NULL, },
{ MY_DMA_MMEM->src, MY_DMA_MMEM->dest, "DmaCopy success on MAIN_MEM -> MAIN_MEM.\n", "DmaFill success on MAIN_MEM.\n", },
}; };
t_CommonArg stopArg[] = t_CommonArg stopArg[] =
{ {
{ testBuf.src, testBuf.dest, "Stopping DmaCopy success.\n", "Stopping DmaFill success on WRAM.\n", }, { testBuf.src, testBuf.dest, "Stopping DmaCopy success on WRAM -> WRAM.\n", NULL, },
{ MY_DMA_MMEM->src, testBuf.dest, "Stopping DmaCopy success on MAIN_MEM -> WRAM.\n", "Stopping DmaFill success on WRAM.\n", },
{ testBuf.src, MY_DMA_MMEM->dest, "Stopping DmaCopy success on WRAM -> MAIN_MEM.\n", NULL, },
{ MY_DMA_MMEM->src, MY_DMA_MMEM->dest, "Stopping DmaCopy success on MAIN_MEM -> MAIN_MEM.\n", "Stopping DmaFill success on MAIN_MEM.\n", },
}; };
t_CommonArg copyfillAsyncArg[] = t_CommonArg copyfillAsyncArg[] =
{ {
{ testBuf.src, testBuf.dest, "DmaCopyAsync success.\n", "DmaFillAsync success on WRAM.\n", }, { testBuf.src, testBuf.dest, "DmaCopyAsync success on WRAM -> WRAM.\n", NULL, },
{ MY_DMA_MMEM->src, testBuf.dest, "DmaCopyAsync success on MAIN_MEM -> WRAM.\n", "DmaFillAsync success on WRAM.\n", },
{ testBuf.src, MY_DMA_MMEM->dest, "DmaCopyAsync success on WRAM -> MAIN_MEM.\n", NULL, },
{ MY_DMA_MMEM->src, MY_DMA_MMEM->dest, "DmaCopyAsync success on MAIN_MEM -> MAIN_MEM.\n", "DmaFillAsync success on MAIN_MEM.\n", },
}; };
u32 exDmaIntrCount[MI_EXDMA_CH_NUM]; u32 exDmaIntrCount[MI_EXDMA_CH_NUM];
@ -130,33 +141,40 @@ static BOOL CheckDmaCopyAndFill( t_CommonArg *arg, u32 data )
src[i][ii] = (u16)(ii+i-data); src[i][ii] = (u16)(ii+i-data);
} }
} }
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
char *str = NULL;
MIi_ExDmaCopy( ch, s, d, ONE_BUF_SIZE ); if ( copyStr )
if ( i == 3 ) {
for (i=0; i<4; i++)
{ {
str = copyStr; u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
char *str = NULL;
MIi_ExDmaCopy( ch, s, d, ONE_BUF_SIZE );
if ( i == 3 )
{
str = copyStr;
}
c_ercd |= CheckDmaCopy( ch, s, d, str );
} }
c_ercd |= CheckDmaCopy( ch, s, d, str );
} }
for (i=0; i<4; i++) if ( fillStr )
{ {
u32 ch = i + MI_EXDMA_CH_MIN; for (i=0; i<4; i++)
u16 *d = dest[i];
char *str = NULL;
MIi_ExDmaFill( ch, d, data+i, ONE_BUF_SIZE );
if ( i == 3 )
{ {
str = fillStr; u32 ch = i + MI_EXDMA_CH_MIN;
u16 *d = dest[i];
char *str = NULL;
MIi_ExDmaFill( ch, d, data+i, ONE_BUF_SIZE );
if ( i == 3 )
{
str = fillStr;
}
f_ercd |= CheckDmaFill( ch, d, data+i, str );
} }
f_ercd |= CheckDmaFill( ch, d, data+i, str );
} }
return c_ercd | f_ercd; return c_ercd | f_ercd;
@ -178,72 +196,79 @@ static BOOL CheckDmaCopyAndFillAsync( t_CommonArg *arg, u32 data )
src[i][ii] = (u16)(ii+i-data); src[i][ii] = (u16)(ii+i-data);
} }
} }
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
MIi_ExDmaCopyAsync( ch, s, d, ONE_BUF_SIZE ); if ( copyStr )
}
for (i=0; i<4; i++)
{ {
u32 ch = i + MI_EXDMA_CH_MIN; for (i=0; i<4; i++)
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{ {
OS_TPrintf( "warning: DmaCopyAsync isn't busy dmaNo = %d.\n", ch ); u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
MIi_ExDmaCopyAsync( ch, s, d, ONE_BUF_SIZE );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{
OS_TPrintf( "warning: DmaCopyAsync isn't busy dmaNo = %d.\n", ch );
}
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
MIi_WaitExDma( ch );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
char *str = NULL;
if ( i == 3 )
{
str = copyStr;
}
c_ercd |= CheckDmaCopy( ch, s, d, str );
} }
} }
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
MIi_WaitExDma( ch );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
char *str = NULL;
if ( i == 3 ) if ( fillStr )
{
for (i=0; i<4; i++)
{ {
str = copyStr; u32 ch = i + MI_EXDMA_CH_MIN;
u16 *d = dest[i];
MIi_ExDmaFillAsync( ch, d, data+i, ONE_BUF_SIZE );
} }
c_ercd |= CheckDmaCopy( ch, s, d, str ); for (i=0; i<4; i++)
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *d = dest[i];
MIi_ExDmaFillAsync( ch, d, data+i, ONE_BUF_SIZE );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{ {
OS_TPrintf( "warning: DmaFillAsync isn't busy dmaNo = %d.\n", ch ); u32 ch = i + MI_EXDMA_CH_MIN;
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{
OS_TPrintf( "warning: DmaFillAsync isn't busy dmaNo = %d.\n", ch );
}
} }
} for (i=0; i<4; i++)
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
MIi_WaitExDma( ch );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *d = dest[i];
char *str = NULL;
if ( i == 3 )
{ {
str = fillStr; u32 ch = i + MI_EXDMA_CH_MIN;
MIi_WaitExDma( ch );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *d = dest[i];
char *str = NULL;
if ( i == 3 )
{
str = fillStr;
}
f_ercd |= CheckDmaFill( ch, d, data+i, str );
} }
f_ercd |= CheckDmaFill( ch, d, data+i, str );
} }
return c_ercd | f_ercd; return c_ercd | f_ercd;
@ -258,53 +283,59 @@ static BOOL CheckDmaStop( t_CommonArg *arg )
BOOL c_ercd = TRUE, f_ercd = TRUE; BOOL c_ercd = TRUE, f_ercd = TRUE;
u32 i; u32 i;
for (i=0; i<4; i++) if ( copyStr )
{ {
u32 ch = i + MI_EXDMA_CH_MIN; for (i=0; i<4; i++)
u16 *s = src[i];
u16 *d = dest[i];
MIi_ExDmaCopyAsync( ch, s, d, ONE_BUF_SIZE );
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{ {
OS_TPrintf( "warning: DmaCopyAsync isn't busy dmaNo = %d.\n", ch ); u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
MIi_ExDmaCopyAsync( ch, s, d, ONE_BUF_SIZE );
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{
OS_TPrintf( "warning: DmaCopyAsync isn't busy dmaNo = %d.\n", ch );
}
MIi_StopExDma( ch );
if ( MIi_IsExDmaBusy( ch ) == TRUE )
{
OS_TPrintf( "error: Stopping DmaCopy failed dmaNo = %d.\n", ch );
c_ercd = FALSE;
// break;
}
} }
MIi_StopExDma( ch ); if ( c_ercd == TRUE )
if ( MIi_IsExDmaBusy( ch ) == TRUE )
{ {
OS_TPrintf( "error: Stopping DmaCopy failed dmaNo = %d.\n", ch ); OS_TPrintf( copyStr );
c_ercd = FALSE;
// break;
} }
} }
if ( c_ercd == TRUE )
{
OS_TPrintf( copyStr );
}
for (i=0; i<4; i++) if ( fillStr )
{ {
u32 ch = i + MI_EXDMA_CH_MIN; for (i=0; i<4; i++)
u16 *d = dest[i];
MIi_ExDmaFillAsync( ch, d, i, ONE_BUF_SIZE );
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{ {
OS_TPrintf( "warning: DmaFillAsync isn't busy dmaNo = %d.\n", ch ); u32 ch = i + MI_EXDMA_CH_MIN;
} u16 *d = dest[i];
MIi_StopExDma( ch );
if ( MIi_IsExDmaBusy( ch ) == TRUE ) MIi_ExDmaFillAsync( ch, d, i, ONE_BUF_SIZE );
{ if ( MIi_IsExDmaBusy( ch ) == FALSE )
OS_TPrintf( "error: Stopping DmaFill failed dmaNo = %d.\n", ch ); {
f_ercd = FALSE; OS_TPrintf( "warning: DmaFillAsync isn't busy dmaNo = %d.\n", ch );
// break; }
MIi_StopExDma( ch );
if ( MIi_IsExDmaBusy( ch ) == TRUE )
{
OS_TPrintf( "error: Stopping DmaFill failed dmaNo = %d.\n", ch );
f_ercd = FALSE;
// break;
}
}
if ( f_ercd == TRUE )
{
OS_TPrintf( fillStr );
} }
}
if ( f_ercd == TRUE )
{
OS_TPrintf( fillStr );
} }
return c_ercd | f_ercd; return c_ercd | f_ercd;
@ -318,21 +349,21 @@ static void TestDmaFuncs( void )
// sync copy and fill test // sync copy and fill test
OS_TPrintf( "\nChecking DmaCopy and DmaFill ....\n" ); OS_TPrintf( "\nChecking DmaCopy and DmaFill ....\n" );
for (i=0; i<1; i++) for (i=0; i<MY_TEST_LOOPS; i++)
{ {
(void)CheckDmaCopyAndFill( &copyfillArg[i], i ); (void)CheckDmaCopyAndFill( &copyfillArg[i], i );
} }
// async copy and fill test // async copy and fill test
OS_TPrintf( "\nChecking DmaCopyAsync and DmaFillAsync ....\n" ); OS_TPrintf( "\nChecking DmaCopyAsync and DmaFillAsync ....\n" );
for (i=0; i<1; i++) for (i=0; i<MY_TEST_LOOPS; i++)
{ {
(void)CheckDmaCopyAndFillAsync( &copyfillAsyncArg[i], i ); (void)CheckDmaCopyAndFillAsync( &copyfillAsyncArg[i], i );
} }
// stop test // stop test
OS_TPrintf( "\nChecking DmaStop ....\n" ); OS_TPrintf( "\nChecking DmaStop ....\n" );
for (i=0; i<1; i++) for (i=0; i<MY_TEST_LOOPS; i++)
{ {
(void)CheckDmaStop( &stopArg[i] ); (void)CheckDmaStop( &stopArg[i] );
} }

View File

@ -43,20 +43,26 @@ t_TestBuf testBuf __attribute__ ((aligned (32)));
t_CommonArg copyfillArg[] = t_CommonArg copyfillArg[] =
{ {
{ testBuf.src, testBuf.dest, "DmaCopy success.\n", "DmaFill success on MAIN_MEM.\n", }, { testBuf.src, testBuf.dest, "DmaCopy success on MAIN_MEM -> MAIN_MEM.\n", NULL, },
{ MY_DMA_WRAM->src, MY_DMA_WRAM->dest, "DmaCopy success.\n", "DmaFill success on WRAM.\n", }, { MY_DMA_WRAM->src, testBuf.dest, "DmaCopy success on WRAM -> MAIN_MEM.\n", "DmaFill success on MAIN_MEM.\n", },
{ testBuf.src, MY_DMA_WRAM->dest, "DmaCopy success on MAIN_MEM -> WRAM.\n", NULL, },
{ MY_DMA_WRAM->src, MY_DMA_WRAM->dest, "DmaCopy success on WRAM -> WRAM.\n", "DmaFill success on WRAM.\n", },
}; };
t_CommonArg stopArg[] = t_CommonArg stopArg[] =
{ {
{ testBuf.src, testBuf.dest, "Stopping DmaCopy success.\n", "Stopping DmaFill success on MAIN_MEM.\n", }, { testBuf.src, testBuf.dest, "Stopping DmaCopy success on MAIN_MEM -> MAIN_MEM.\n", NULL, },
{ MY_DMA_WRAM->src, MY_DMA_WRAM->dest, "Stopping DmaCopy success.\n", "Stopping DmaFill success on WRAM.\n", }, { MY_DMA_WRAM->src, testBuf.dest, "Stopping DmaCopy success on WRAM -> MAIN_MEM.\n", "Stopping DmaFill success on MAIN_MEM.\n", },
{ testBuf.src, MY_DMA_WRAM->dest, "Stopping DmaCopy success on MAIN_MEM -> WRAM.\n", NULL, },
{ MY_DMA_WRAM->src, MY_DMA_WRAM->dest, "Stopping DmaCopy success on WRAM -> WRAM.\n", "Stopping DmaFill success on WRAM.\n", },
}; };
t_CommonArg copyfillAsyncArg[] = t_CommonArg copyfillAsyncArg[] =
{ {
{ testBuf.src, testBuf.dest, "DmaCopyAsync success.\n", "DmaFillAsync success on MAIN_MEM.\n", }, { testBuf.src, testBuf.dest, "DmaCopyAsync success on MAIN_MEM -> MAIN_MEM.\n", NULL, },
{ MY_DMA_WRAM->src, MY_DMA_WRAM->dest, "DmaCopyAsync success.\n", "DmaFillAsync success on WRAM.\n", }, { MY_DMA_WRAM->src, testBuf.dest, "DmaCopyAsync success on WRAM -> MAIN_MEM.\n", "DmaFillAsync success on MAIN_MEM.\n", },
{ testBuf.src, MY_DMA_WRAM->dest, "DmaCopyAsync success on MAIN_MEM -> WRAM.\n", NULL, },
{ MY_DMA_WRAM->src, MY_DMA_WRAM->dest, "DmaCopyAsync success on WRAM -> WRAM.\n", "DmaFillAsync success on WRAM.\n", },
}; };
u32 exDmaIntrCount[MI_EXDMA_CH_NUM]; u32 exDmaIntrCount[MI_EXDMA_CH_NUM];
@ -135,37 +141,44 @@ static BOOL CheckDmaCopyAndFill( t_CommonArg *arg, u32 data )
src[i][ii] = (u16)(ii+i-data); src[i][ii] = (u16)(ii+i-data);
} }
} }
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
char *str = NULL;
DC_FlushAll(); if ( copyStr )
IC_InvalidateAll(); {
MIi_ExDmaCopy( ch, s, d, ONE_BUF_SIZE ); for (i=0; i<4; i++)
if ( i == 3 )
{ {
str = copyStr; u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
char *str = NULL;
DC_FlushAll();
IC_InvalidateAll();
MIi_ExDmaCopy( ch, s, d, ONE_BUF_SIZE );
if ( i == 3 )
{
str = copyStr;
}
c_ercd |= CheckDmaCopy( ch, s, d, str );
} }
c_ercd |= CheckDmaCopy( ch, s, d, str );
} }
for (i=0; i<4; i++) if ( fillStr )
{ {
u32 ch = i + MI_EXDMA_CH_MIN; for (i=0; i<4; i++)
u16 *d = dest[i];
char *str = NULL;
DC_FlushAll();
IC_InvalidateAll();
MIi_ExDmaFill( ch, d, data+i, ONE_BUF_SIZE );
if ( i == 3 )
{ {
str = fillStr; u32 ch = i + MI_EXDMA_CH_MIN;
u16 *d = dest[i];
char *str = NULL;
DC_FlushAll();
IC_InvalidateAll();
MIi_ExDmaFill( ch, d, data+i, ONE_BUF_SIZE );
if ( i == 3 )
{
str = fillStr;
}
f_ercd |= CheckDmaFill( ch, d, data+i, str );
} }
f_ercd |= CheckDmaFill( ch, d, data+i, str );
} }
return c_ercd | f_ercd; return c_ercd | f_ercd;
@ -187,74 +200,81 @@ static BOOL CheckDmaCopyAndFillAsync( t_CommonArg *arg, u32 data )
src[i][ii] = (u16)(ii+i-data); src[i][ii] = (u16)(ii+i-data);
} }
} }
DC_FlushAll();
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
MIi_ExDmaCopyAsync( ch, s, d, ONE_BUF_SIZE ); if ( copyStr )
}
for (i=0; i<4; i++)
{ {
u32 ch = i + MI_EXDMA_CH_MIN; DC_FlushAll();
if ( MIi_IsExDmaBusy( ch ) == FALSE ) for (i=0; i<4; i++)
{ {
OS_TPrintf( "warning: DmaCopyAsync isn't busy dmaNo = %d.\n", ch ); u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
MIi_ExDmaCopyAsync( ch, s, d, ONE_BUF_SIZE );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{
OS_TPrintf( "warning: DmaCopyAsync isn't busy dmaNo = %d.\n", ch );
}
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
MIi_WaitExDma( ch );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
char *str = NULL;
if ( i == 3 )
{
str = copyStr;
}
c_ercd |= CheckDmaCopy( ch, s, d, str );
} }
} }
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
MIi_WaitExDma( ch );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
char *str = NULL;
if ( i == 3 ) if ( fillStr )
{
DC_FlushAll();
for (i=0; i<4; i++)
{ {
str = copyStr; u32 ch = i + MI_EXDMA_CH_MIN;
u16 *d = dest[i];
MIi_ExDmaFillAsync( ch, d, data+i, ONE_BUF_SIZE );
} }
c_ercd |= CheckDmaCopy( ch, s, d, str ); for (i=0; i<4; i++)
}
DC_FlushAll();
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *d = dest[i];
MIi_ExDmaFillAsync( ch, d, data+i, ONE_BUF_SIZE );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{ {
OS_TPrintf( "warning: DmaFillAsync isn't busy dmaNo = %d.\n", ch ); u32 ch = i + MI_EXDMA_CH_MIN;
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{
OS_TPrintf( "warning: DmaFillAsync isn't busy dmaNo = %d.\n", ch );
}
} }
} for (i=0; i<4; i++)
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
MIi_WaitExDma( ch );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *d = dest[i];
char *str = NULL;
if ( i == 3 )
{ {
str = fillStr; u32 ch = i + MI_EXDMA_CH_MIN;
MIi_WaitExDma( ch );
}
for (i=0; i<4; i++)
{
u32 ch = i + MI_EXDMA_CH_MIN;
u16 *d = dest[i];
char *str = NULL;
if ( i == 3 )
{
str = fillStr;
}
f_ercd |= CheckDmaFill( ch, d, data+i, str );
} }
f_ercd |= CheckDmaFill( ch, d, data+i, str );
} }
return c_ercd | f_ercd; return c_ercd | f_ercd;
@ -269,53 +289,59 @@ static BOOL CheckDmaStop( t_CommonArg *arg )
BOOL c_ercd = TRUE, f_ercd = TRUE; BOOL c_ercd = TRUE, f_ercd = TRUE;
u32 i; u32 i;
for (i=0; i<4; i++) if ( copyStr )
{ {
u32 ch = i + MI_EXDMA_CH_MIN; for (i=0; i<4; i++)
u16 *s = src[i];
u16 *d = dest[i];
MIi_ExDmaCopyAsync( ch, s, d, ONE_BUF_SIZE );
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{ {
OS_TPrintf( "warning: DmaCopyAsync isn't busy dmaNo = %d.\n", ch ); u32 ch = i + MI_EXDMA_CH_MIN;
u16 *s = src[i];
u16 *d = dest[i];
MIi_ExDmaCopyAsync( ch, s, d, ONE_BUF_SIZE );
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{
OS_TPrintf( "warning: DmaCopyAsync isn't busy dmaNo = %d.\n", ch );
}
MIi_StopExDma( ch );
if ( MIi_IsExDmaBusy( ch ) == TRUE )
{
OS_TPrintf( "error: Stopping DmaCopy failed dmaNo = %d.\n", ch );
c_ercd = FALSE;
// break;
}
} }
MIi_StopExDma( ch ); if ( c_ercd == TRUE && copyStr )
if ( MIi_IsExDmaBusy( ch ) == TRUE )
{ {
OS_TPrintf( "error: Stopping DmaCopy failed dmaNo = %d.\n", ch ); OS_TPrintf( copyStr );
c_ercd = FALSE;
// break;
} }
} }
if ( c_ercd == TRUE )
{
OS_TPrintf( copyStr );
}
for (i=0; i<4; i++) if ( copyStr )
{ {
u32 ch = i + MI_EXDMA_CH_MIN; for (i=0; i<4; i++)
u16 *d = dest[i];
MIi_ExDmaFillAsync( ch, d, i, ONE_BUF_SIZE );
if ( MIi_IsExDmaBusy( ch ) == FALSE )
{ {
OS_TPrintf( "warning: DmaFillAsync isn't busy dmaNo = %d.\n", ch ); u32 ch = i + MI_EXDMA_CH_MIN;
} u16 *d = dest[i];
MIi_StopExDma( ch );
if ( MIi_IsExDmaBusy( ch ) == TRUE ) MIi_ExDmaFillAsync( ch, d, i, ONE_BUF_SIZE );
{ if ( MIi_IsExDmaBusy( ch ) == FALSE )
OS_TPrintf( "error: Stopping DmaFill failed dmaNo = %d.\n", ch ); {
f_ercd = FALSE; OS_TPrintf( "warning: DmaFillAsync isn't busy dmaNo = %d.\n", ch );
// break; }
MIi_StopExDma( ch );
if ( MIi_IsExDmaBusy( ch ) == TRUE )
{
OS_TPrintf( "error: Stopping DmaFill failed dmaNo = %d.\n", ch );
f_ercd = FALSE;
// break;
}
}
if ( f_ercd == TRUE && fillStr )
{
OS_TPrintf( fillStr );
} }
}
if ( f_ercd == TRUE )
{
OS_TPrintf( fillStr );
} }
return c_ercd | f_ercd; return c_ercd | f_ercd;

View File

@ -1,7 +1,4 @@
Partner のプロジェクトファイルに core0、core1 を上書きして下さい。 Partner のプロジェクトファイルに core0、core1 を上書きして下さい。
現状では ARM7 側のロード直後にレジスタウインドウの CPSR をクリックして
SVCモードへ切り替えて下さい。
デフォルトは Partner 用にビルドされる設定になっていますが、変更された場合は デフォルトは Partner 用にビルドされる設定になっていますが、変更された場合は
"export TWL_DEBUGGER=KMC" または "make TWL_DEBUGGER=KMC" でビルドして下さい。 "export TWL_DEBUGGER=KMC" または "make TWL_DEBUGGER=KMC" でビルドして下さい。