📄 buffer_init.c
字号:
#include "buffer_init.h"
/************************************************************************
*Descritionn: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 three buffers in L2 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_L2; i++) {
switch (i)
{
case 0:
Buffer2D_IN[i].Data = subFrame1;
break;
case 1:
Buffer2D_IN[i].Data = subFrame3;
break;
case 2:
Buffer2D_IN[i].Data = subFrame5;
break;
}
Buffer2D_IN[i].ElementWidth = TRANSFER_LENGTH;
Buffer2D_IN[i].XCount = 1716/TRANSFER_LENGTH;
Buffer2D_IN[i].XModify = TRANSFER_LENGTH;
Buffer2D_IN[i].YCount = L2NUMROWS;
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_L1-1].pNext = NULL;
for (i = 0; i < NUM_BUFFERS_L2; i++) {
switch (i)
{
case 0:
Buffer2D_OUT[i].Data = subFrame2;
break;
case 1:
Buffer2D_OUT[i].Data = subFrame4;
break;
case 2:
Buffer2D_OUT[i].Data = subFrame6;
break;
case 3:
Buffer2D_OUT[i].Data = subFrame8;
break;
case 4:
Buffer2D_OUT[i].Data = subFrame10;
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 = NULL;//&Buffer2D_OUT[i+1];
}
Buffer2D_IN[NUM_BUFFERS_L1-1].pNext = NULL;
}
/************************************************************************
Function:L2Buffer_FullSliceInit
Description:
************************************************************************/
void L2Buffer_FullSliceInit(ADI_DMA_2D_TRANSFER * buffer, unsigned char * startaddress)
{
buffer->StartAddress = startaddress;
buffer->XCount = 1716/TRANSFER_LENGTH;
buffer->XModify = TRANSFER_LENGTH;
buffer->YCount = MBROWS;
buffer->YModify = TRANSFER_LENGTH;
}
/************************************************************************
Function:L2BufferInit
Description:
************************************************************************/
void L2BufferInit(ADI_DMA_2D_TRANSFER * buffer, unsigned char * startaddress)
{
buffer->StartAddress = startaddress;
buffer->XCount = MBCOLS/TRANSFER_LENGTH;
buffer->XModify = TRANSFER_LENGTH;
buffer->YCount = MBROWS;
buffer->YModify = 1716-MBCOLS+TRANSFER_LENGTH;
}
/************************************************************************
Function:L1BufferInit
Description:
************************************************************************/
void L1BufferInit(ADI_DMA_2D_TRANSFER * buffer, unsigned char * startaddress)
{
buffer->StartAddress = startaddress;
buffer->XCount = MBCOLS/TRANSFER_LENGTH;
buffer->XModify = TRANSFER_LENGTH;
buffer->YCount = MBROWS;
buffer->YModify = TRANSFER_LENGTH;
}
/************************************************************************
Function:L2Buffer_FullMBInit
Description:
************************************************************************/
void L2Buffer_FullMBInit(ADI_DMA_2D_TRANSFER * buffer, unsigned char * startaddress)
{
buffer->StartAddress = startaddress;
buffer->XCount = MBCOLS/TRANSFER_LENGTH;
buffer->XModify = TRANSFER_LENGTH;
buffer->YCount = MBROWS;
buffer->YModify = 1716-MBCOLS+TRANSFER_LENGTH;
}
/************************************************************************
Function:L1Buffer_FullMBInit
Description:
************************************************************************/
void L1Buffer_FullMBInit(ADI_DMA_2D_TRANSFER * buffer, unsigned char * startaddress)
{
buffer->StartAddress = startaddress;
buffer->XCount = MBCOLS/TRANSFER_LENGTH;
buffer->XModify = TRANSFER_LENGTH;
buffer->YCount = MBROWS;
buffer->YModify = TRANSFER_LENGTH;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -