📄 buffer_init.c
字号:
/************************************************************************
*Description:Initialises the video in/out peripheral DMA buffers and also
* the MEMDMA buffers
* TRANSFER_LENGTH is 4 (32-bit). On BF561 the maximum data width transfer
* is 32 bit.
************************************************************************/
#include <services\services.h> // system services
#include <drivers\adi_dev.h> // device manager includes
#include <drivers\ppi\adi_ppi.h> // PPI driver includes
#include "ppi_L1_ppi_line_transfers.h"
#include "..\..\..\..\utilities\ezkitutilities.h" // EZ-Kit utilities
extern char subFrame1[];
extern char subFrame2[];
extern char subFrame3[];
extern char subFrame4[];
extern char subFrame5[];
extern char subFrame6[];
extern char Frame_Copy[];
#define TRANSFER_LENGTH 4
/************************************************************************
Function: buffer_init
Description:This function populates a buffer that is used for both PPI input
and PPI output. The buffer is configured to process
a standard NTSC 480i frame.
Maintain three buffers in L1 memory. The number can be
increased but correspondingly case statements should be
added. The buffers are managed as seperate variables to
allow explicit placements in the memory
************************************************************************/
buffer_init()
{
int i;
for (i = 0; i < NUM_BUFFERS_L1; i++) {
switch (i)
{
case 0:
Buffer2D_IN[i].Data = subFrame1;
break;
case 1:
Buffer2D_IN[i].Data = subFrame2;
break;
case 2:
Buffer2D_IN[i].Data = subFrame3;
break;
}
Buffer2D_IN[i].ElementWidth = TRANSFER_LENGTH;
Buffer2D_IN[i].XCount = 1716/TRANSFER_LENGTH;
Buffer2D_IN[i].XModify = TRANSFER_LENGTH;
Buffer2D_IN[i].YCount = L1NumRows;
Buffer2D_IN[i].YModify = TRANSFER_LENGTH;
Buffer2D_IN[i].CallbackParameter =&Buffer2D_IN[0];//NULL;
Buffer2D_IN[i].pNext = &Buffer2D_IN[i+1];
}
Buffer2D_IN[NUM_BUFFERS_L1-1].pNext = NULL;
for (i = 0; i < NUM_BUFFERS_L1; i++) {
switch (i)
{
case 0:
Buffer2D_OUT[i].Data = subFrame1;
break;
case 1:
Buffer2D_OUT[i].Data = subFrame2;
break;
case 2:
Buffer2D_OUT[i].Data = subFrame3;
break;
}
Buffer2D_OUT[i].ElementWidth = TRANSFER_LENGTH;
Buffer2D_OUT[i].XCount = 1716/TRANSFER_LENGTH;
Buffer2D_OUT[i].XModify = TRANSFER_LENGTH;
Buffer2D_OUT[i].YCount = L1NumRows;
Buffer2D_OUT[i].YModify = TRANSFER_LENGTH;
Buffer2D_OUT[i].CallbackParameter =&Buffer2D_OUT[0];//NULL;
Buffer2D_OUT[i].pNext = &Buffer2D_OUT[i+1];
}
Buffer2D_OUT[NUM_BUFFERS_L1-1].pNext = NULL;
for(i=0;i<NUM_BUFFERS_L1;i++)
{
switch (i)
{
case 0:
Buffer2D_IN_DMA[i].StartAddress = subFrame1;
break;
case 1:
Buffer2D_IN_DMA[i].StartAddress = subFrame2;
break;
case 2:
Buffer2D_IN_DMA[i].StartAddress = subFrame3;
break;
}
Buffer2D_IN_DMA[i].XCount = 1716/TRANSFER_LENGTH;
Buffer2D_IN_DMA[i].XModify = TRANSFER_LENGTH;
Buffer2D_IN_DMA[i].YCount = L1NumRows;
Buffer2D_IN_DMA[i].YModify = TRANSFER_LENGTH;
}
for(i=0;i<NUM_BUFFERS_L1;i++)
{
switch (i)
{
case 0:
Buffer2D_OUT_DMA[i].StartAddress = subFrame1;
break;
case 1:
Buffer2D_OUT_DMA[i].StartAddress = subFrame2;
break;
case 2:
Buffer2D_OUT_DMA[i].StartAddress = subFrame3;
break;
}
Buffer2D_OUT_DMA[i].XCount = 1716/TRANSFER_LENGTH;
Buffer2D_OUT_DMA[i].XModify = TRANSFER_LENGTH;
Buffer2D_OUT_DMA[i].YCount = L1NumRows;
Buffer2D_OUT_DMA[i].YModify = TRANSFER_LENGTH;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -