📄 buffer_init.c
字号:
//buffer_init
#include <services/services.h>
#include <ezkitutilities.h>
#include <drivers/adi_dev.h>
#include <drivers/ppi/adi_ppi.h>
#include "../Buffer.h"
/************************************************************************
*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.
************************************************************************/
/************************************************************************
Function:buffer_init
Description:Maintain four buffers in L3 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
************************************************************************/
void buffer_init()
{
int i;
for (i = 0; i < NUM_BUFFERS; i++) {
switch (i)
{
case 0:
Buffer2D_IN[i].Data = sFrame0IN;
break;
case 1:
Buffer2D_IN[i].Data = sFrame1IN;
break;
case 2:
Buffer2D_IN[i].Data = sFrame2IN;
break;
case 3:
Buffer2D_IN[i].Data = sFrame3IN;
break;
}
Buffer2D_IN[i].ElementWidth = TRANSFER_LENGTH;
Buffer2D_IN[i].XCount = 1716/TRANSFER_LENGTH;
Buffer2D_IN[i].XModify = TRANSFER_LENGTH;
Buffer2D_IN[i].YCount = NUMROWS;
Buffer2D_IN[i].YModify = TRANSFER_LENGTH;
Buffer2D_IN[i].CallbackParameter =&Buffer2D_IN[0];
Buffer2D_IN[i].pNext = &Buffer2D_IN[i+1];
}
Buffer2D_IN[NUM_BUFFERS-1].pNext = NULL;
for (i = 0; i < NUM_BUFFERS; i++) {
switch (i)
{
case 0:
Buffer2D_OUT[i].Data = sFrame0OUT;
break;
case 1:
Buffer2D_OUT[i].Data = sFrame1OUT;
break;
case 2:
Buffer2D_OUT[i].Data = sFrame2OUT;
break;
case 3:
Buffer2D_OUT[i].Data = sFrame3OUT;
break;
}
Buffer2D_OUT[i].ElementWidth = TRANSFER_LENGTH;
Buffer2D_OUT[i].XCount = 1716/TRANSFER_LENGTH;
Buffer2D_OUT[i].XModify = TRANSFER_LENGTH;
Buffer2D_OUT[i].YCount = NUMROWS;
Buffer2D_OUT[i].YModify = TRANSFER_LENGTH;
Buffer2D_OUT[i].CallbackParameter =NULL;//&Buffer2D_IN[0];
Buffer2D_OUT[i].pNext = &Buffer2D_OUT[i+1];
}
Buffer2D_OUT[NUM_BUFFERS-1].pNext = NULL;
}
/************************************************************************
Function:L3BufferInit
Description:
************************************************************************/
void L3BufferInit(ADI_DMA_2D_TRANSFER * buffer, char * startaddress)
{
buffer->StartAddress = startaddress;
buffer->XCount = 1716/TRANSFER_LENGTH;
buffer->XModify = TRANSFER_LENGTH;
buffer->YCount = L2NUMROWS;
buffer->YModify = TRANSFER_LENGTH;
}
/************************************************************************
Function:L3Buffer_FullFrameInit
Description:
************************************************************************/
void L3Buffer_FullFrameInit(ADI_DMA_2D_TRANSFER * buffer, char * startaddress)
{
buffer->StartAddress = startaddress;
buffer->XCount = 1716/TRANSFER_LENGTH;
buffer->XModify = TRANSFER_LENGTH;
buffer->YCount = NUMROWS;
buffer->YModify = TRANSFER_LENGTH;
}
/************************************************************************
Function:L2BufferInit
Description:
************************************************************************/
void L2BufferInit(ADI_DMA_2D_TRANSFER * buffer, char * startaddress)
{
buffer->StartAddress = startaddress;
buffer->XCount = 1716/TRANSFER_LENGTH;
buffer->XModify = TRANSFER_LENGTH;
buffer->YCount = L2NUMROWS;
buffer->YModify = TRANSFER_LENGTH;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -