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

📄 dma_mem.h

📁 基于ARM核的HMS7202
💻 H
字号:
/*
 * 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -