📄 post_test.c
字号:
u32 uGlibStAddr, uPostStAddr;
u32 uSrcBytesPerPixel, uDstBytesPerPixel;
UART_Printf("[POSTT_SimpleDmaToDma_R2Y2R]\n");
uSimpleTest = 1;
POSTT_SetCscTypeDmaToDma_R2Y2R();
//LCD_InitLDI(MAIN);
#ifdef LCD_INIT_TEST
LCD_InitBase();
LCD_Start();
LCD_InitWin(eDstDataFmt, uImgHSz, uImgVSz, 0, 0, uImgHSz, uImgVSz, 0, 0, uLcdStAddr, WIN0, false);
#else
LCD_InitBase();
LCD_InitDISPC(eDstDataFmt, uLcdStAddr, WIN0, false);
LCD_GetFrmSz(&uLcdHSz, &uLcdVSz, WIN0);
//LCD_InitDISPC1(uLcdHSz, uLcdVSz, eDstDataFmt, uLcdStAddr, WIN0, false);
LCD_Start();
#endif
LCD_SetWinOnOff(1, WIN0);
//LCD_GetFrmSz(&uLcdHSz, &uLcdVSz, WIN0);
uSrcBytesPerPixel = (eSrcDataFmt == RGB16) ? 2 : 4;
uDstBytesPerPixel = (eDstDataFmt == RGB16) ? 2 : 4;
uGlibStAddr = uLcdStAddr + uLcdHSz*uLcdVSz*uDstBytesPerPixel;
uPostStAddr = uGlibStAddr + uLcdHSz*uLcdVSz*uSrcBytesPerPixel;
#if (POST_IMAGE_SORCE == POST_IMAGE_PATTERN)
GLIB_Init(uGlibStAddr, uLcdHSz, uLcdVSz, eSrcDataFmt);
GLIB_DrawPattern(uLcdHSz, uLcdVSz);
#elif (POST_IMAGE_SORCE == POST_IMAGE_HEADER)
POSTT_GetImageFromHeader(uGlibStAddr, uLcdHSz, uLcdVSz, eSrcDataFmt);
#endif
// From RGB To YUV
UART_Printf("======== RGB -> YUV =========\n");
UART_Printf("Source Address : 0x%08x\n", uGlibStAddr);
UART_Printf("Destination Address : 0x%08x\n", uPostStAddr);
POST_InitIpForDmaInDmaOut( uLcdHSz, uLcdVSz, uGlibStAddr, eSrcDataFmt,
uLcdHSz, uLcdVSz, uPostStAddr, eMidDataFmt,
1, FALSE, ONE_SHOT, &oPost);
//POST_InitIpForDmaInDmaOut( uImgHSz, uImgVSz, uGlibStAddr, eSrcDataFmt,
// uLcdHSz, uLcdVSz, uPostStAddr, eMidDataFmt,
// 1, FALSE, ONE_SHOT, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
//SaveToFile(POST_YUV_FILE_NAME1, uLcdHSz*uLcdVSz*2, uPostStAddr);
#if 0 // R->Y Wide & Narrow check
{
int R, G, B, YCbCr,i;
for(i=0 ; i<uLcdVSz ; i++)
for(j=0 ; j<uLcdHSz ; j++)
{
R = (*((s32 *)uGlibStAddr + i*uLcdVSz + j) & 0xFF0000)>>16;
G = (*((s32 *)uGlibStAddr + i*uLcdVSz + j) & 0x00FF00)>>8;
B = (*((s32 *)uGlibStAddr + i*uLcdVSz + j) & 0x0000FF)>>0;
YCbCr = CSCR2Y_C(R, G, B, 0);
UART_Printf("YCbCr : 0x%08x\n", YCbCr);
}
}
#endif
// From YUV To RGB
UART_Printf("======== YUV -> RGB =========\n");
UART_Printf("Source Address : 0x%08x\n", uPostStAddr);
UART_Printf("Destination Address : 0x%08x\n", uLcdStAddr);
POST_InitIpForDmaInDmaOut( uLcdHSz, uLcdVSz, uPostStAddr, eMidDataFmt,
uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
1, FALSE, ONE_SHOT, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
#if (POST_IMAGE_BMP_SLIDE)
{
u32 uImageNum;
UART_Printf("Input the any key to display the other image ('q' : quit)\n");
uImageNum = 0;
while(UART_Getc() != 'q')
{
POSTT_GetImageFromBMP(uGlibStAddr, uLcdHSz, uLcdVSz, uImageNum, eSrcDataFmt);
// RGB -> YUV
POST_InitIpForDmaInDmaOut( uLcdHSz, uLcdVSz, uGlibStAddr, eSrcDataFmt,
uLcdHSz, uLcdVSz, uPostStAddr, eMidDataFmt,
1, FALSE, ONE_SHOT, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
//SaveToFile(POST_YUV_FILE_NAME1, uLcdHSz*uLcdVSz*2, uPostStAddr);
// YUV -> RGB
POST_InitIpForDmaInDmaOut( uLcdHSz, uLcdVSz, uPostStAddr, eMidDataFmt,
uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
1, FALSE, ONE_SHOT, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
uImageNum++;
}
}
#endif
UART_Printf("\n");
}
static void POSTT_ComplexDmaToDma_R2Y2R(void)
{
u32 uGlibStAddr, uPostStAddr;
u32 uSrcBytesPerPixel, uDstBytesPerPixel;
UART_Printf("[POSTT_ComplexDmaToDma_R2Y2R]\n");
uSimpleTest = 0;
POSTT_SetCscTypeDmaToDma_R2Y2R();
//bIsR2Y2RFlag = true;
ePostRunMode = ONE_SHOT;
//LCD_InitLDI(MAIN);
#ifdef LCD_INIT_TEST
LCD_InitBase();
LCD_Start();
LCD_InitWin(eDstDataFmt, uImgHSz, uImgVSz, 0, 0, uImgHSz, uImgVSz, 0, 0, uLcdStAddr, WIN0, false);
#else
LCD_InitDISPC(eDstDataFmt, uLcdStAddr, WIN0, false);
LCD_Start();
#endif
LCD_SetWinOnOff(1, WIN0);
LCD_GetFrmSz(&uLcdHSz, &uLcdVSz, WIN0);
uSrcBytesPerPixel = (eSrcDataFmt == RGB24) ? 4 : 2;
uDstBytesPerPixel = (eDstDataFmt == RGB24) ? 4 : 2;
uGlibStAddr = uLcdStAddr + uLcdHSz*uLcdVSz*uDstBytesPerPixel;
uPostStAddr = uGlibStAddr + uImgHSz*uImgVSz*uSrcBytesPerPixel;
GLIB_Init(uLcdStAddr, uLcdHSz, uLcdVSz, eDstDataFmt);
GLIB_ClearFrame(C_BLACK);
#if (POST_IMAGE_SORCE == POST_IMAGE_PATTERN)
GLIB_Init(uGlibStAddr, uImgHSz, uImgVSz, eSrcDataFmt);
GLIB_DrawPattern(uImgHSz, uImgVSz);
#elif (POST_IMAGE_SORCE == POST_IMAGE_HEADER)
POSTT_GetImageFromHeader(uGlibStAddr, uImgHSz, uImgVSz, eSrcDataFmt);
#elif (POST_IMAGE_SORCE == POST_IMAGE_BMP)
POSTT_GetImageFromBMP(uGlibStAddr, uLcdHSz, uLcdVSz, 3, eSrcDataFmt);
#endif
// From RGB To YUV
UART_Printf("======== RGB -> YUV =========\n");
UART_Printf("Source Address : 0x%08x\n", uGlibStAddr);
UART_Printf("Destination Address : 0x%08x\n", uPostStAddr);
POST_InitIp1( uImgHSz, uImgVSz, uSrcStartX, uSrcStartY, uSrcCroppedHSz, uSrcCroppedVSz, uGlibStAddr, eSrcDataFmt,
uMidImgHSz, uMidImgVSz, uMidStartX, uMidStartY, uMidScaledHSz, uMidScaledVSz, uPostStAddr, eMidDataFmt,
1, false, ePostRunMode, POST_DMA, POST_DMA, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
// From YUV To RGB
UART_Printf("======== YUV -> RGB =========\n");
UART_Printf("Source Address : 0x%08x\n", uPostStAddr);
UART_Printf("Destination Address : 0x%08x\n", uLcdStAddr);
POST_InitIp1( uMidImgHSz, uMidImgVSz, uMidStartX, uMidStartY, uMidScaledHSz, uMidScaledVSz, uPostStAddr, eMidDataFmt,
uLcdHSz, uLcdVSz, uDstStartX, uDstStartY, uDstScaledHSz, uDstScaledVSz, uLcdStAddr, eDstDataFmt,
1, false, ONE_SHOT, POST_DMA, POST_DMA, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
}
static void POSTT_SimpleFreeRunDmaToDma_R2Y2R_Polling(void)
{
u32 uGlibStAddr, uGlibStAddr2, uPostStAddr, uPostStAddr2;
u32 uSrcBytesPerPixel, uDstBytesPerPixel;
u32 uFrmCnt;
UART_Printf("[POSTT_SimpleFreeRunDmaToDma_R2Y2R_Polling]\n");
uSimpleTest = 1;
POSTT_SetCscTypeDmaToDma_R2Y2R();
bIsPollingOrInt = TRUE;
//LCD_InitLDI(MAIN);
#ifdef LCD_INIT_TEST
LCD_InitBase();
LCD_Start();
LCD_InitWin(eDstDataFmt, uImgHSz, uImgVSz, 0, 0, uImgHSz, uImgVSz, 0, 0, uLcdStAddr, WIN0, false);
#else
LCD_InitDISPC(eDstDataFmt, uLcdStAddr, WIN0, false);
LCD_Start();
#endif
LCD_SetWinOnOff(1, WIN0);
LCD_GetFrmSz(&uLcdHSz, &uLcdVSz, WIN0);
uSrcBytesPerPixel = (eSrcDataFmt == RGB16) ? 2 : 4;
uDstBytesPerPixel = (eDstDataFmt == RGB16) ? 2 : 4;
uGlibStAddr = uLcdStAddr + uLcdHSz*uLcdVSz*uDstBytesPerPixel;
uPostStAddr = uGlibStAddr + uLcdHSz*uLcdVSz*uSrcBytesPerPixel;
uGlibStAddr2 = uPostStAddr + uLcdHSz*uLcdVSz*uDstBytesPerPixel;
uPostStAddr2 = uGlibStAddr2 + uLcdHSz*uLcdVSz*uSrcBytesPerPixel;
GLIB_Init(uGlibStAddr, uLcdHSz, uLcdVSz, eSrcDataFmt);
GLIB_DrawPattern(uLcdHSz, uLcdVSz);
GLIB_Init(uGlibStAddr2, uLcdHSz, uLcdVSz, eSrcDataFmt);
GLIB_DrawPattern2(uLcdHSz, uLcdVSz);
// From RGB to YUV for pattern 1
POST_InitIpForDmaInDmaOut(uLcdHSz, uLcdVSz, uGlibStAddr, eSrcDataFmt,
uLcdHSz, uLcdVSz, uPostStAddr, eMidDataFmt,
1, FALSE, ONE_SHOT, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
UART_Printf("CSC(RGB -> YUV) is finished for pattern 1\n");
// From RGB to YUV for pattern 2
POST_InitIpForDmaInDmaOut(uLcdHSz, uLcdVSz, uGlibStAddr2, eSrcDataFmt,
uLcdHSz, uLcdVSz, uPostStAddr2, eMidDataFmt,
1, FALSE, ONE_SHOT, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
UART_Printf("CSC(RGB -> YUV) is fiished for pattern 2\n");
// From YUV To RGB
POST_InitIpForDmaInDmaOut(uLcdHSz, uLcdVSz, uPostStAddr2, eMidDataFmt,
uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
1, FALSE, FREE_RUN, &oPost);
POST_SetNextFrameStAddr(uPostStAddr, uLcdStAddr, &oPost);
POST_StartProcessing(&oPost);
uFrmCnt = 0;
while(uFrmCnt<uMaxFrameCnt)
{
while (!POST_IsProcessingDone(&oPost));
if (uFrmCnt%2)
POST_SetNextFrameStAddr(uPostStAddr2, uLcdStAddr, &oPost);
else
POST_SetNextFrameStAddr(uPostStAddr, uLcdStAddr, &oPost);
POST_ClearPending(&oPost);
DelayfrTimer(milli, 1000);
uFrmCnt++;
}
POST_StopProcessingOfFreeRun(&oPost);
while (!POST_IsProcessingDone(&oPost));
POST_ClearPending(&oPost);
#if (POST_IMAGE_BMP_SLIDE)
POSTT_GetImageFromBMP(uGlibStAddr, uLcdHSz, uLcdVSz, 16, eSrcDataFmt);
POSTT_GetImageFromBMP(uGlibStAddr2, uLcdHSz, uLcdVSz, 17, eSrcDataFmt);
// From RGB to YUV for pattern 1
POST_InitIpForDmaInDmaOut(uLcdHSz, uLcdVSz, uGlibStAddr, eSrcDataFmt,
uLcdHSz, uLcdVSz, uPostStAddr, eMidDataFmt,
1, FALSE, ONE_SHOT, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
UART_Printf("CSC(RGB -> YUV) is finished for pattern 1\n");
// From RGB to YUV for pattern 2
POST_InitIpForDmaInDmaOut(uLcdHSz, uLcdVSz, uGlibStAddr2, eSrcDataFmt,
uLcdHSz, uLcdVSz, uPostStAddr2, eMidDataFmt,
1, FALSE, ONE_SHOT, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
UART_Printf("CSC(RGB -> YUV) is fiished for pattern 2\n");
// From YUV To RGB
POST_InitIpForDmaInDmaOut(uLcdHSz, uLcdVSz, uPostStAddr2, eMidDataFmt,
uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
1, FALSE, FREE_RUN, &oPost);
POST_SetNextFrameStAddr(uPostStAddr, uLcdStAddr, &oPost);
POST_StartProcessing(&oPost);
uFrmCnt = 0;
while(uFrmCnt<uMaxFrameCnt)
{
while (!POST_IsProcessingDone(&oPost));
if (uFrmCnt%2)
POST_SetNextFrameStAddr(uPostStAddr2, uLcdStAddr, &oPost);
else
POST_SetNextFrameStAddr(uPostStAddr, uLcdStAddr, &oPost);
POST_ClearPending(&oPost);
DelayfrTimer(milli, 1000);
uFrmCnt++;
}
POST_StopProcessingOfFreeRun(&oPost);
while (!POST_IsProcessingDone(&oPost));
POST_ClearPending(&oPost);
#endif
}
static void POSTT_SimpleFreeRunDmaToDma_R2Y2R_Int(void)
{
u32 uGlibStAddr, uGlibStAddr2;
u32 uSrcBytesPerPixel, uDstBytesPerPixel;
u32 uPostIsrCount, uPostFrameCount;
UART_Printf("[POSTT_SimpleFreeRunDmaToDma_R2Y2R_Int]\n");
uSimpleTest = 1;
POSTT_SetCscTypeDmaToDma_R2Y2R();
bIsPollingOrInt = FALSE;
//LCD_InitLDI(MAIN);
#ifdef LCD_INIT_TEST
LCD_InitBase();
LCD_Start();
LCD_InitWin(eDstDataFmt, uImgHSz, uImgVSz, 0, 0, uImgHSz, uImgVSz, 0, 0, uLcdStAddr, WIN0, false);
#else
LCD_InitDISPC(eDstDataFmt, uLcdStAddr, WIN0, false);
LCD_Start();
#endif
LCD_SetWinOnOff(1, WIN0);
LCD_GetFrmSz(&uLcdHSz, &uLcdVSz, WIN0);
uSrcBytesPerPixel = (eSrcDataFmt == RGB16) ? 2 : 4;
uDstBytesPerPixel = (eDstDataFmt == RGB16) ? 2 : 4;
uGlibStAddr = uLcdStAddr + uLcdHSz*uLcdVSz*uDstBytesPerPixel;
uNxtAddr1 = uGlibStAddr + uLcdHSz*uLcdVSz*uSrcBytesPerPixel;
uGlibStAddr2 = uNxtAddr1 + uLcdHSz*uLcdVSz*uDstBytesPerPixel;
uNxtAddr2 = uGlibStAddr2 + uLcdHSz*uLcdVSz*uSrcBytesPerPixel;
GLIB_Init(uGlibStAddr, uLcdHSz, uLcdVSz, eSrcDataFmt);
GLIB_DrawPattern(uLcdHSz, uLcdVSz);
GLIB_Init(uGlibStAddr2, uLcdHSz, uLcdVSz, eSrcDataFmt);
GLIB_DrawPattern2(uLcdHSz, uLcdVSz);
// From RGB to YUV for pattern 1
POST_InitIpForDmaInDmaOut(uLcdHSz, uLcdVSz, uGlibStAddr, eSrcDataFmt,
uLcdHSz, uLcdVSz, uNxtAddr1, eMidDataFmt,
1, FALSE, ONE_SHOT, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
UART_Printf("CSC(RGB -> YUV) is finished for pattern 1\n");
// From RGB to YUV for pattern 2
POST_InitIpForDmaInDmaOut(uLcdHSz, uLcdVSz, uGlibStAddr2, eSrcDataFmt,
uLcdHSz, uLcdVSz, uNxtAddr2, eMidDataFmt,
1, FALSE, ONE_SHOT, &oPost);
POST_StartProcessing(&oPost);
while (!POST_IsProcessingDone(&oPost));
UART_Printf("CSC(RGB -> YUV) is finished for pattern 2\n");
//Interrupt Setting
uPostIsrCount = 0;
uPostFrameCount = 0;
uPostIntOccured = FALSE;
//INTC_InitIp();
//INTC_SetHandlerAndUnmask(INT_POST, PostISRDma);
INTC_Enable(NUM_POST0);
INTC_SetVectAddr(NUM_POST0, PostISRDma);
POST_EnableInterrupt(POST_LEVEL_INT, &oPost);
// From YUV To RGB
POST_InitIpForDmaInDmaOut(uLcdHSz, uLcdVSz, uNxtAddr1, eMidDataFmt,
uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
1, FALSE, FREE_RUN, &oPost);
POST_SetNextFrameStAddr(uNxtAddr2, uLcdStAddr, &oPost);
POST_StartProcessing(&oPost);
while(uPostFrameCount < uMaxFrameCnt)
{
if(uPostIntOccured == TRUE)
{
uPostIsrCount++;
if(uPostIsrCount > 1000)
{
uPostFrameCount++;
if (uPostFrameCount % 2)
POST_SetNextFrameStAddr(uNxtAddr2, uLcdStAddr, &oPost);
else
POST_SetNextFrameStAddr(uNxtAddr1, uLcdStAddr, &oPost);
if (uPostFrameCount == uMaxFrameCnt)
{
POST_StopProcessingOfFreeRun(&oPost);
while (!POST_IsProcessingDone(&oPost));
uPostIntOccured = FALSE;
break;
}
uPostIsrCount = 0;
}
uPostIntOccured = FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -