mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
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:
parent
e7582616d7
commit
67c6cebc03
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
static u32 intervalTable[] =
|
static u32 intervalTable[] =
|
||||||
{
|
{
|
||||||
2, 4, 8, 16,
|
1, 1, 1, 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
|
|||||||
@ -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( ©fillArg[i], i );
|
(void)CheckDmaCopyAndFill( ©fillArg[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( ©fillAsyncArg[i], i );
|
(void)CheckDmaCopyAndFillAsync( ©fillAsyncArg[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] );
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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" でビルドして下さい。
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user