📄 buffer_init_example.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
************************************************************************/
//buffer_Init
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];//NULL;
Buffer2D_IN[i].pNext = &Buffer2D_IN[i+1];
}
Buffer2D_IN[NUM_BUFFERS_L2-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;
}
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_OUT[NUM_BUFFERS_L2-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:
Modifications from template: Since sobel on only Y component,
every alternate 8-bit data transferred to L1.
XMODIFY = 2.
************************************************************************/
void L2BufferInit(ADI_DMA_2D_TRANSFER * buffer, unsigned char * startaddress)
{
buffer->StartAddress = startaddress;
buffer->XCount = MBCOLS/TRANSFER_LENGTH_2;
buffer->XModify = TRANSFER_LENGTH_2;
buffer->YCount = MBROWS;
buffer->YModify = 1716-MBCOLS+TRANSFER_LENGTH_2;
}
/************************************************************************
Function:L1BufferInit
Description:
Modifications from the template:
XMODIFY =1 as Y components are placed in contiguously
in L1 buffers
************************************************************************/
void L1BufferInit(ADI_DMA_2D_TRANSFER * buffer, unsigned char * startaddress)
{
buffer->StartAddress = startaddress;
buffer->XCount = MBCOLS/TRANSFER_LENGTH_2;
buffer->XModify = TRANSFER_LENGTH_1;
buffer->YCount = MBROWS;
buffer->YModify = TRANSFER_LENGTH_1;
}
/************************************************************************
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 + -