📄 链式dma.txt
字号:
extern u8 DMAMgrData[ADI_DMA_BASE_MEMORY + (ADI_DMA_CHANNEL_MEMORY * 4)];
extern u8 IntMgrData[6*(ADI_INT_SECONDARY_MEMORY)];
extern u8 Callback_Manager_Storage[ADI_DCB_QUEUE_SIZE];
extern u8 Callback_Queue[ADI_DCB_ENTRY_SIZE * 4];
extern ADI_DCB_HANDLE Callback_Handle;
extern ADI_DMA_DESCRIPTOR_LARGE gDst0Buffers[5]; // descriptors where data is written to
extern ADI_DMA_DESCRIPTOR_LARGE gSrc0Buffers[5]; // descriptors where data is written from
extern ADI_DMA_DESCRIPTOR_LARGE gDst1Buffers[5]; // descriptors where data is written to
extern ADI_DMA_DESCRIPTOR_LARGE gSrc1Buffers[5]; // descriptors where data is written from
extern ADI_DMA_CHANNEL_HANDLE dma_s0_chan_handle; // source DMA channel handle
extern ADI_DMA_CHANNEL_HANDLE dma_d0_chan_handle; // destination DMA channel handle
extern ADI_DMA_CHANNEL_HANDLE dma_s1_chan_handle; // source DMA channel handle
extern ADI_DMA_CHANNEL_HANDLE dma_d1_chan_handle; // destination DMA channel handle
extern int gDesDmaDoneFlag[2];
/// 初始化部分
iRet = adi_int_Init(IntMgrData, sizeof(IntMgrData), &ResponseCount, NULL);
// adi_int_CECHook(5, HWErrorHandler, NULL, FALSE);
// adi_int_CECHook(3, ExceptionHandler, NULL, FALSE);
adi_dcb_Init(Callback_Manager_Storage, sizeof(Callback_Manager_Storage), &ResponseCount, NULL);
adi_dcb_Open(ik_ivg14, Callback_Queue, sizeof(Callback_Queue), &ResponseCount, &Callback_Handle);
// adi_flag_Init(NULL, 0, &ResponseCount, NULL);
iRet = adi_dma_Init(DMAMgrData, sizeof(DMAMgrData), &ResponseCount, &gDMAManagerHandle, NULL);
iRet = adi_dma_Open(gDMAManagerHandle, ADI_DMA_MDMA_S0, (void *)0, &dma_s0_chan_handle, ADI_DMA_MODE_DESCRIPTOR_LARGE, Callback_Handle, Descriptor_Callback0);
iRet = adi_dma_Open(gDMAManagerHandle, ADI_DMA_MDMA_D0, (void *)0, &dma_d0_chan_handle, ADI_DMA_MODE_DESCRIPTOR_LARGE, Callback_Handle, Descriptor_Callback0);
iRet = adi_dma_Open(gDMAManagerHandle, ADI_DMA_MDMA_S1, (void *)0, &dma_s1_chan_handle, ADI_DMA_MODE_DESCRIPTOR_LARGE, Callback_Handle, Descriptor_Callback1);
iRet = adi_dma_Open(gDMAManagerHandle, ADI_DMA_MDMA_D1, (void *)0, &dma_d1_chan_handle, ADI_DMA_MODE_DESCRIPTOR_LARGE, Callback_Handle, Descriptor_Callback1);
/// 初始化部分 end
// DMA Test
DesBufferSetup(DMA_HANDLE_0, 2, DMA_READ_CHAN, DMA_2D, 360/4, 4, 288, 4, 4); // Handle 0 , 2 chains, Read, xcount, xmod, ycount, ymod, byte/element
DesBufferSetup(DMA_HANDLE_0, 2, DMA_WRITE_CHAN, DMA_2D, 360/4, 4, 288, 4, 4); // Handle 0 , 2 chains, Read, xcount, xmod, ycount, ymod, byte/element
DesDmaSetAddr(DMA_HANDLE_0, DMA_SRC_CHAN, 0, gpRawImg); // handle 0, Read, chain
DesDmaSetAddr(DMA_HANDLE_0, DMA_SRC_CHAN, 1, gpRawImg2); // handle 0, Read, chain
DesDmaSetAddr(DMA_HANDLE_0, DMA_DST_CHAN, 0, gpOrgImg); // handle 0, Read, chain
DesDmaSetAddr(DMA_HANDLE_0, DMA_DST_CHAN, 1, gpResImg); // handle 0, Read, chain
Descriptor_Start(DMA_HANDLE_0);
Descriptor_Wait(DMA_HANDLE_0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -