70 lines
2.7 KiB
C
70 lines
2.7 KiB
C
#ifndef _DMA_COPY_H_
|
|
#define _DMA_COPY_H_
|
|
|
|
//=============================================================//
|
|
//使用硬件dma模块搬运数据, 注意:
|
|
// 1) 注意:本接口是异步接口,不适用dma读
|
|
// 2) dest和src地址需要4byte对齐
|
|
// 3)目前支持单模块使用;
|
|
// 4)典型应用: IMB 乒乓buf搬数到psram;
|
|
//=============================================================//
|
|
void dma_memcpy_async(void *dest, void *src, u32 len);
|
|
|
|
|
|
//=============================================================//
|
|
// 等待dma_copy完成, 用于同步操作
|
|
//=============================================================//
|
|
void dma_memcpy_wait_idle(void);
|
|
|
|
|
|
//=============================================================//
|
|
// 注意:本接口是异步接口,用户可以注册完成信息的回调,priv 用户自行定义用户信息,例如信号量激活等
|
|
//=============================================================//
|
|
void dma_memcpy_async_with_callback(void *dest, void *src, u32 len, void (*callback)(void *priv), void *priv);
|
|
|
|
|
|
//=============================================================//
|
|
// 注意:本接口是同步接口
|
|
// dest和src地址需要4byte对齐
|
|
//=============================================================//
|
|
void dma_memcpy_sync(void *dest, void *src, u32 len);
|
|
|
|
|
|
//=============================================================//
|
|
// 中断使用
|
|
//=============================================================//
|
|
void dma_memcpy_async_inirq(void *dest, void *src, u32 len);
|
|
|
|
|
|
//=============================================================//
|
|
// 注意:sync_wait 配置dma 是否等结束,1:等待dma结束 0:不等结束
|
|
// 1) dest和src地址需要4byte对齐
|
|
// 2) 按int的格式进行memset,len = n byte
|
|
//=============================================================//
|
|
void dma_memset_int32(void *dest, u32 data, u32 len, int sync_wait);
|
|
|
|
|
|
//=============================================================//
|
|
// 注意:sync_wait 配置dma 是否等结束,1:等待dma结束 0:不等结束
|
|
// 1) dest和src地址需要4byte对齐
|
|
// 2) 按short的格式进行memset,len = n byte
|
|
//=============================================================//
|
|
void dma_memset_short(void *dest, u16 data, u32 len, int sync_wait);
|
|
|
|
|
|
//=============================================================//
|
|
// 注意:sync_wait 配置dma 是否等结束,1:等待dma结束 0:不等结束
|
|
// 1) dest和src地址需要4byte对齐
|
|
// 2) 按u8的格式进行memset,len = n byte
|
|
//=============================================================//
|
|
void dma_memset_byte(void *dest, u8 data, u32 len, int sync_wait);
|
|
|
|
|
|
|
|
//dma_memcpy 锁,杰理内部使用
|
|
void dma_memcpy_lock();
|
|
|
|
void dma_memcpy_unlock();
|
|
|
|
#endif /* #ifndef _DMA_COPY_H_ */
|