📄 scaler_test.c
字号:
GLIB_ClearFrame(C_BLACK);
uBytesPerPixel = (eDstDataFmt == RGB16) ? 2: 4;
uGlibStAddr = uLcdStAddr + uLcdHSz*uLcdVSz*uBytesPerPixel;
uSrcStAddr=0;
// CSC & Scaling the DrawPattern 1
#if (POST_IMAGE_SORCE == POST_IMAGE_PATTERN)
GLIB_Init(uGlibStAddr, uImgHSz, uImgVSz, eSrcDataFmt);
GLIB_DrawPattern(uImgHSz, uImgVSz);
#elif (POST_IMAGE_SORCE == POST_IMAGE_HEADER)
ScalerT_GetImageFromHeader(uGlibStAddr, uLcdHSz, uLcdVSz, eSrcDataFmt);
#endif
POST_InitIp1( uImgHSz, uImgVSz, uSrcStartX, uSrcStartY, uSrcCroppedHSz, uSrcCroppedVSz, uGlibStAddr, eSrcDataFmt,
uLcdHSz, uLcdVSz, uDstStartX, uDstStartY, uDstScaledHSz, uDstScaledVSz, uLcdStAddr, eDstDataFmt,
2, false, ePostRunMode, POST_DMA, POST_DMA, &oSc);
UART_Printf("Draw Pattern 1(Frame 0)\n");
POST_StartProcessing1(0, 0, &oSc);
while (!POST_IsProcessingDone(&oSc));
UART_Printf("Enter Any Key\n");
UART_Getc();
// CSC & Scaling the DrawPattern 2
POST_GetSrcStAddr(1, &uSrcStAddr, &oSc);
GLIB_Init(uSrcStAddr, uImgHSz, uImgVSz, eSrcDataFmt);
GLIB_DrawPattern2(uImgHSz, uImgVSz);
UART_Printf("Draw Pattern 2(Frame 1)\n");
POST_StartProcessing1(1, 0, &oSc);
while (!POST_IsProcessingDone(&oSc));
}
static void ScalerT_SimpleFreeRunDmaToDma_R2R_Polling(void)
{
u32 uGlibStAddr=0, uGlibStAddr2=0;
u32 uBytesPerPixel=0;
u32 uFrmCnt = 0;
UART_Printf("[ScalerT_SimpleFreeRunDmaToDma_R2R_Polling]\n");
uSimpleTest = 1;
ScalerT_SetCscTypeDmaToDma_R2R();
bScalerIsPollingOrInt = TRUE; // Polling
//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);
//uBytesPerPixel = (eDstDataFmt == RGB16) ? 2: 4;
uBytesPerPixel = 4;
uGlibStAddr = uLcdStAddr + uLcdHSz*uLcdVSz*uBytesPerPixel;
uGlibStAddr2 = uGlibStAddr + uLcdHSz*uLcdVSz*uBytesPerPixel;
GLIB_Init(uGlibStAddr, uLcdHSz, uLcdVSz, eSrcDataFmt);
GLIB_DrawPattern(uLcdHSz, uLcdVSz);
GLIB_Init(uGlibStAddr2, uLcdHSz, uLcdVSz, eSrcDataFmt);
GLIB_DrawPattern2(uLcdHSz, uLcdVSz);
POST_InitIpForDmaInDmaOut( uLcdHSz, uLcdVSz, uGlibStAddr, eSrcDataFmt,
uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
1, false, FREE_RUN, &oSc);
POST_SetNextFrameStAddr(uGlibStAddr, uLcdStAddr, &oSc);
uFrmCnt = 0;
POST_StartProcessing(&oSc);
while(uFrmCnt<uMaxFrameCnt)
{
while (!POST_IsProcessingDone(&oSc));
if (uFrmCnt%2)
POST_SetNextFrameStAddr(uGlibStAddr2, uLcdStAddr, &oSc);
else
POST_SetNextFrameStAddr(uGlibStAddr, uLcdStAddr, &oSc);
POST_ClearPending(&oSc);
DelayfrTimer(milli, 1000);
uFrmCnt++;
}
POST_StopProcessingOfFreeRun(&oSc);
while (!POST_IsProcessingDone(&oSc));
POST_ClearPending(&oSc);
#if (POST_IMAGE_BMP_SLIDE)
ScalerT_GetImageFromBMP(uGlibStAddr, uLcdHSz, uLcdVSz, 8, eSrcDataFmt);
ScalerT_GetImageFromBMP(uGlibStAddr2, uLcdHSz, uLcdVSz, 9, eSrcDataFmt);
POST_InitIpForDmaInDmaOut( uLcdHSz, uLcdVSz, uGlibStAddr, eSrcDataFmt,
uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
1, false, FREE_RUN, &oSc);
POST_SetNextFrameStAddr(uGlibStAddr, uLcdStAddr, &oSc);
uFrmCnt = 0;
POST_StartProcessing(&oSc);
while(uFrmCnt<uMaxFrameCnt)
{
while (!POST_IsProcessingDone(&oSc));
if (uFrmCnt%2)
POST_SetNextFrameStAddr(uGlibStAddr2, uLcdStAddr, &oSc);
else
POST_SetNextFrameStAddr(uGlibStAddr, uLcdStAddr, &oSc);
POST_ClearPending(&oSc);
DelayfrTimer(milli, 1000);
uFrmCnt++;
}
POST_StopProcessingOfFreeRun(&oSc);
while (!POST_IsProcessingDone(&oSc));
POST_ClearPending(&oSc);
#endif
}
void ScalerT_SimpleFreeRunDmaToDma_R2R_Int(void)
{
u32 uBytesPerPixel=0;
u32 uPostIsrCount, uPostFrameCount;
UART_Printf("[ScalerT_SimpleFreeRunDmaToDma_R2R_Int]\n");
uSimpleTest = 1;
ScalerT_SetCscTypeDmaToDma_R2R();
bScalerIsPollingOrInt = TRUE; // Int
//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);
//uBytesPerPixel = (eDstDataFmt == RGB16) ? 2: 4;
uBytesPerPixel = 4;
uNxtAddr1 = uLcdStAddr + uLcdHSz*uLcdVSz*uBytesPerPixel;
uNxtAddr2 = uNxtAddr1 + uLcdHSz*uLcdVSz*uBytesPerPixel;
GLIB_Init(uNxtAddr1, uLcdHSz, uLcdVSz, eSrcDataFmt);
GLIB_DrawPattern(uLcdHSz, uLcdVSz);
GLIB_Init(uNxtAddr2, uLcdHSz, uLcdVSz, eSrcDataFmt);
GLIB_DrawPattern2(uLcdHSz, uLcdVSz);
//Interrupt Setting
uPostIsrCount = 0;
uPostFrameCount = 0;
uScalerIntOccured = FALSE;
INTC_Enable(NUM_SCALER);
INTC_SetVectAddr(NUM_SCALER, ScalerISRDma);
POST_EnableInterrupt(POST_LEVEL_INT, &oSc);
POST_InitIpForDmaInDmaOut( uLcdHSz, uLcdVSz, uNxtAddr1, eSrcDataFmt,
uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
1, false, FREE_RUN, &oSc);
POST_SetNextFrameStAddr(uNxtAddr1, uLcdStAddr, &oSc);
POST_StartProcessing(&oSc);
while(uPostFrameCount < uMaxFrameCnt)
{
if(uScalerIntOccured == TRUE)
{
uPostIsrCount++;
if(uPostIsrCount > 200)
{
uPostFrameCount++;
if (uPostFrameCount % 2)
POST_SetNextFrameStAddr(uNxtAddr2, uLcdStAddr, &oSc);
else
POST_SetNextFrameStAddr(uNxtAddr1, uLcdStAddr, &oSc);
if (uPostFrameCount == uMaxFrameCnt)
{
POST_StopProcessingOfFreeRun(&oSc);
while (!POST_IsProcessingDone(&oSc));
uScalerIntOccured = FALSE;
break;
}
uPostIsrCount = 0;
}
uScalerIntOccured = FALSE;
}
}
#if (POST_IMAGE_BMP_SLIDE)
ScalerT_GetImageFromBMP(uNxtAddr1, uLcdHSz, uLcdVSz, 11, eSrcDataFmt);
ScalerT_GetImageFromBMP(uNxtAddr2, uLcdHSz, uLcdVSz, 12, eSrcDataFmt);
POST_InitIpForDmaInDmaOut( uLcdHSz, uLcdVSz, uNxtAddr1, eSrcDataFmt,
uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
1, false, FREE_RUN, &oSc);
POST_SetNextFrameStAddr(uNxtAddr1, uLcdStAddr, &oSc);
uPostFrameCount = 0;
uPostIsrCount = 0;
POST_StartProcessing(&oSc);
while(uPostFrameCount<uMaxFrameCnt)
{
if(uScalerIntOccured == TRUE)
{
uPostIsrCount++;
if(uPostIsrCount > 200)
{
uPostFrameCount++;
if (uPostFrameCount % 2)
POST_SetNextFrameStAddr(uNxtAddr2, uLcdStAddr, &oSc);
else
POST_SetNextFrameStAddr(uNxtAddr1, uLcdStAddr, &oSc);
if (uPostFrameCount == uMaxFrameCnt)
{
POST_StopProcessingOfFreeRun(&oSc);
while (!POST_IsProcessingDone(&oSc));
uScalerIntOccured = FALSE;
break;
}
uPostIsrCount = 0;
}
uScalerIntOccured = FALSE;
}
}
#endif
POST_DisableInterrupt(&oSc);
POST_ClearPending(&oSc);
INTC_Disable(NUM_SCALER);
}
void ScalerT_ComplexFreeRunDmaToDma_R2R_Polling(void)
{
u32 uGlibStAddr, uGlibStAddr2;
u32 uBytesPerPixel, uFrmCnt;
UART_Printf("[ScalerT_ComplexFreeRunDmaToDma_R2R_Polling]\n");
uSimpleTest = 0;
ScalerT_SetCscTypeDmaToDma_R2R();
bScalerIsPollingOrInt = TRUE;
ePostRunMode = FREE_RUN;
//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);
// To Clear the LCD Display
GLIB_Init(uLcdStAddr, uLcdHSz, uLcdVSz, eDstDataFmt);
GLIB_ClearFrame(C_BLACK);
uBytesPerPixel = (eDstDataFmt == RGB16) ? 2: 4;
uGlibStAddr = uLcdStAddr + uLcdHSz*uLcdVSz*uBytesPerPixel;
uGlibStAddr2 = uGlibStAddr + uImgHSz*uImgVSz*uBytesPerPixel;
GLIB_Init(uGlibStAddr, uImgHSz, uImgVSz, eSrcDataFmt);
GLIB_DrawPattern(uImgHSz, uImgVSz);
GLIB_Init(uGlibStAddr2, uImgHSz, uImgVSz, eSrcDataFmt);
GLIB_DrawPattern2(uImgHSz, uImgVSz);
POST_InitIp1( uImgHSz, uImgVSz, uSrcStartX, uSrcStartY, uSrcCroppedHSz, uSrcCroppedVSz, uGlibStAddr, eSrcDataFmt,
uLcdHSz, uLcdVSz, uDstStartX, uDstStartY, uDstScaledHSz, uDstScaledVSz, uLcdStAddr, eDstDataFmt,
1, false, ePostRunMode, POST_DMA, POST_DMA, &oSc); // src. frm. buf. num: 1, double buffering: false
POST_SetNextFrameStAddr(uGlibStAddr2, uLcdStAddr, &oSc);
POST_StartProcessing(&oSc);
uFrmCnt = 0;
while(uFrmCnt<uMaxFrameCnt)
{
while (!POST_IsProcessingDone(&oSc));
if (uFrmCnt%2)
POST_SetNextFrameStAddr(uGlibStAddr, uLcdStAddr, &oSc);
else
POST_SetNextFrameStAddr(uGlibStAddr2, uLcdStAddr, &oSc);
POST_ClearPending(&oSc);
DelayfrTimer(milli, 500);
uFrmCnt++;
}
POST_StopProcessingOfFreeRun(&oSc);
while (!POST_IsProcessingDone(&oSc));
}
void ScalerT_ComplexFreeRunDmaToDma_R2R_Int(void)
{
u32 uBytesPerPixel=0;
u32 uPostIsrCount, uPostFrameCount;
UART_Printf("[ScalerT_ComplexFreeRunDmaToDma_R2R_Int]\n");
uSimpleTest = 0;
ScalerT_SetCscTypeDmaToDma_R2R();
bScalerIsPollingOrInt = false;
ePostRunMode = FREE_RUN;
//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);
// To Clear the LCD Display
GLIB_Init(uLcdStAddr, uLcdHSz, uLcdVSz, eDstDataFmt);
GLIB_ClearFrame(C_BLACK);
uBytesPerPixel = (eDstDataFmt == RGB16) ? 2: 4;
uNxtAddr1 = uLcdStAddr + uLcdHSz*uLcdVSz*uBytesPerPixel;
uNxtAddr2 = uNxtAddr1 + uImgHSz*uImgVSz*uBytesPerPixel;
GLIB_Init(uNxtAddr1, uImgHSz, uImgVSz, eSrcDataFmt);
GLIB_DrawPattern(uImgHSz, uImgVSz);
GLIB_Init(uNxtAddr2, uImgHSz, uImgVSz, eSrcDataFmt);
GLIB_DrawPattern2(uImgHSz, uImgVSz);
uPostIsrCount = 0;
uPostFrameCount = 0;
uScalerIntOccured = FALSE;
//INTC_InitIp();
//INTC_SetHandlerAndUnmask(INT_POST, ScalerISRDma);
INTC_Enable(NUM_SCALER);
INTC_SetVectAddr(NUM_SCALER, ScalerISRDma);
POST_EnableInterrupt(POST_LEVEL_INT, &oSc);
POST_InitIp1( uImgHSz, uImgVSz, uSrcStartX, uSrcStartY, uSrcCroppedHSz, uSrcCroppedVSz, uNxtAddr1, eSrcDataFmt,
uLcdHSz, uLcdVSz, uDstStartX, uDstStartY, uDstScaledHSz, uDstScaledVSz, uLcdStAddr, eDstDataFmt,
1, false, ePostRunMode, POST_DMA, POST_DMA, &oSc);
POST_SetNextFrameStAddr(uNxtAddr2, uLcdStAddr, &oSc);
POST_StartProcessing(&oSc);
while(uPostFrameCount < uMaxFrameCnt)
{
if(uScalerIntOccured == TRUE)
{
uPostIsrCount++;
if(uPostIsrCount == 400)
{
uPostFrameCount++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -