dma_mem.h

来自「基于ARM核的HMS7202」· C头文件 代码 · 共 76 行

H
76
字号
/*
 * DMA Memory Management


#ifndef _dma_mem_h
#define _dma_mem_h
 */
typedef struct _mem_s {
	char name[20];
	enum { DMA_TYPE, BUFFER_TYPE } type;
	unsigned int base;
	unsigned int size;
} _mem_t;


extern int get_buffer_base_size(char *, unsigned int *, unsigned int *);
extern int get_dma_base_size(char *, unsigned int *, unsigned int *);

/*
 * DON'T change DMA Memory space, this space is predefined in
 * Assembly Level
 */

#define BUFFER_MEM_SIZE 0x00200000
#define DMA_MEM_SIZE 0x0025800


#if defined(HEI_ARM7) &&  HEI_ARM7 == 1

#define BUFFER_MEM_BASE 0x41000000L
#define BUFFER_MEM_END  (BUFFER_MEM_BASE + 0x00200000)

#define DMA_MEM_BASE 0x41c00000L
#define DMA_MEM_END  (DMA_MEM_BASE + 0x00400000)


#define __virt2dma(addr) (addr)
#define __dma2virt(addr) (addr)

#elif defined(HEI_ARM7) &&  HEI_ARM7 == 2


#if 0

#define BUFFER_MEM_BASE 0x41000000L
#define BUFFER_MEM_END  (BUFFER_MEM_BASE + 0x00200000)

#define DMA_MEM_BASE 0x41b00000L
#define DMA_MEM_END  (DMA_MEM_BASE + 0x00400000)

#define SDRAM2_PHYS  0x42000000L
#define DMA_MEM_PHYS 0x42b00000L
#define __virt2dma(addr) (addr - DMA_MEM_BASE + DMA_MEM_PHYS )
#define __dma2virt(addr) (addr - DMA_MEM_PHYS + DMA_MEM_BASE )
#else
#define BUFFER_MEM_BASE 0x43000000L
#define BUFFER_MEM_END  (BUFFER_MEM_BASE + 0x00200000)

#define DMA_MEM_BASE 0x43b00000L
#define DMA_MEM_END  (DMA_MEM_BASE + 0x00400000)

#define SDRAM2_PHYS  0x42000000L
#define DMA_MEM_PHYS DMA_MEM_BASE
#define __virt2dma(addr) (addr)
#define __dma2virt(addr) (addr)
#endif
#endif


#define IS_DMA_SPACE(addr) (addr >= DMA_MEM_BASE && addr <= DMA_MEM_END)
#define IS_BUFFER_SPACE(addr) (addr >= BUFFER_MEM_BASE && addr <= BUFFER_MEM_END)
#define IS_ADDRESS_IN(addr, start, size) ( addr >= start && addr <= (start+size))


//#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?