⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 链式dma.txt

📁 自己实现的一个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 + -