www.pudn.com > DSP5502_audio_loopback.rar > SEED_DEC5502.gel


 
/*******************************************************************************/ 
// 
//	Filename:	GEL file for SEED_DEC5502 
// 
//******************************************************************************/ 
 
/*************************************************/ 
/* EMIF REGISTERS                                */ 
/*************************************************/ 
	#define EMIF_GCTL1	0x800 
	#define EMIF_GCTL2	0x801 
	#define EMIF_CE11	0x802 
	#define EMIF_CE12	0x803 
	#define EMIF_CE01	0x804 
	#define EMIF_CE02	0x805 
	#define EMIF_CE21	0x808 
	#define EMIF_CE22	0x809 
	#define EMIF_CE31	0x80A 
	#define EMIF_CE32	0x80B 
	#define EMIF_SDCNT1	0x80C 
	#define EMIF_SDCNT2	0x80D 
	#define EMIF_SDREF1	0x80E 
	#define EMIF_SDREF2	0x80F 
	#define EMIF_SDEXT1	0x810 
	#define EMIF_SDEXT2	0x811 
	#define EMIF_CE1SECCTL1	0x822 
	#define EMIF_CE1SECCTL2	0x823 
	#define EMIF_CE0SECCTL1	0x824 
	#define EMIF_CE0SECCTL2	0x825 
	#define EMIF_CE2SECCTL1	0x828 
	#define EMIF_CE2SECCTL2	0x829 
	#define EMIF_CE3SECCTL1	0x82A 
	#define EMIF_CE3SECCTL2	0x82B 
	#define EMIF_CECTL1	0x840 
	#define EMIF_CECTL2	0x841 
/*************************************************/ 
/* PLL REGISTERS                                 */ 
/*************************************************/ 
	#define PLLCSR	0x1C80 
    #define CK3SEL	0x1C82 
	#define PLLM	0x1C88 
	#define PLLDIV0	0x1C8A 
	#define PLLDIV1	0x1C8C 
	#define PLLDIV2	0x1C8E 
	#define PLLDIV3	0x1C90 
	#define OSCDIV1	0x1C92 
	#define WAKEUP	0x1C98 
/*************************************************/ 
/* System I/O control and status registers       */ 
/*************************************************/ 
	#define SYSCNTL1	0x280000 
	#define SYSCNTL2	0x280001 
	#define SYSSTAT0	0x280002 
	#define SYSSTAT1	0x280003 
	#define WDOG		0x280010 
/*************************************************/ 
 
/* The Startup() function is executed when the GEL file is loaded. */ 
 
StartUp() 
{ 
	C5502_Init(); 			/* 初始化板卡							*/ 
	 
    Init_CE1_FLASH();		/* 初始化CE1空间的FLASH和系统I/O空间 	*/ 
	Init_CE0_ZBTRAM();		/* 初始化CE0空间的ZBTRTAM				*/ 
	Init_CE23_SDRAM();		/* 初始化CE2,CE3空间的SDRAM				*/ 
 
	GEL_TextOut("Gel StartUp Complete.\n"); 
} 
 
OnReset() 
{ 
    Init_CE1_FLASH();		/* 初始化CE1空间的FLASH和系统I/O空间 	*/ 
    Init_CE0_ZBTRAM();		/* 初始化CE0空间的ZBTRTAM				*/ 
	Init_CE23_SDRAM();		/* 初始化CE2,CE3空间的SDRAM				*/ 
} 
 
menuitem "C5502_Configuration"; 
hotmenu CPU_Reset() 
{ 
	GEL_Reset();			/* 复位目标系统并重装监视器				*/ 
	GEL_TextOut("CPU Reset Complete.\n"); 
} 
 
/* Memory map based on MP/MC value=0 (BOOTM[2:0]!=0).    */ 
hotmenu C5502_Init() 
{ 
	GEL_Reset();			/* 复位目标系统并重装监视器				*/ 
	 
	Init_PLL_byF();			/* 将板卡主频设置为300Mhz				*/ 
	 
	GEL_MapOn();			/* 使能存储器映射						*/ 
	GEL_MapReset();			/* 复位存储器映射,禁止读写所有空间		*/ 
	 
/*------------------------- Program Space------------------------------------ */ 
	GEL_MapAdd(0x0000C0u,0,0x00FF40u,1,1);		/* DARAM */ 
	GEL_MapAdd(0x010000u,0,0x3F0000u,1,1);		/* External CE0 */ 
	GEL_MapAdd(0x400000u,0,0x400000u,1,1);		/* External CE1 */ 
	GEL_MapAdd(0x800000u,0,0x400000u,1,1);		/* External CE2 */ 
 
	/* For MP/MC=0 (BOOTM[2:0] != 0) */ 
	GEL_MapAdd(0xC00000u,0,0x3F8000u,1,1);		/* External CE3 */	 
	GEL_MapAdd(0xFF8000u,0,0x008000u,1,0);		/* PDROM        */ 
 
/*------------------------- Data Space--------------------------------------- */ 
	 
	GEL_MapAdd(0x000000u,1,0x00005Fu,1,1);	/* MMRs */ 
	GEL_MapAdd(0x000060u,1,0x007FA0u,1,1);	/* DARAM */ 
	 
	GEL_MapAdd(0x08000u,1,0x1F8000u,1,1);	/* External CE0 */ 
	GEL_MapAdd(0x200000u,1,0x200000u,1,1);	/* External CE1 */ 
	GEL_MapAdd(0x400000u,1,0x200000u,1,1);	/* External CE2 */ 
	 
	/* For MP/MC=0 (BOOTM[2:0] != 0)*/ 
	GEL_MapAdd(0x600000u,1,0x1FC000u,1,1);	/* External CE3 */ 
	GEL_MapAdd(0x7FC000u,1,0x004000u,1,0);	/* PDROM */ 
	 
/*------------------------- IO Space------------------------------------------- */ 
 
	GEL_MapAdd(0x0800u,2,0x0042u,1,1); 	/* EMIF 1KW */ 
	GEL_MapAdd(0x0C00u,2,0x00B0u,1,1); 	/* DMA 1KW */ 
	GEL_MapAdd(0x1000u,2,0x0020u,1,1); 	/* TIMER#0 1KW */ 
	GEL_MapAdd(0x1C80u,2,0x0019u,1,1); 	/* PLL Control */ 
	GEL_MapAdd(0x2400u,2,0x0014u,1,1); 	/* TIMER#1 1KW */ 
	GEL_MapAdd(0x1400u,2,0x0004u,1,1); 	/* ICACHE 1KW */ 
	GEL_MapAdd(0x1C00u,2,0x0400u,1,1); 	/* CLKGEN 1KW */ 
	GEL_MapAdd(0x2000u,2,0x0055u,1,1);	/* TRACE FIFO 1KW */ 
	GEL_MapAdd(0x3400u,2,0x0002u,1,1); 	/* GPIO 1KW */ 
	GEL_MapAdd(0x3800u,2,0x0008u,1,1); 	/* ID 1KW */ 
	GEL_MapAdd(0x3C00u,2,0x000Fu,1,1); 	/* I2C 1KW */ 
	GEL_MapAdd(0x4000u,2,0x0014u,1,1); 	/* TIMER#2 1KW */ 
	GEL_MapAdd(0x4400u,2,0x0009u,1,1); 	/* PGPIO 1KW */ 
	GEL_MapAdd(0x6C00u,2,0x0002u,1,1); 	/* XBSR 1KW */ 
	GEL_MapAdd(0x7800u,2,0x0010u,1,1);  /* BIOS Timer 1KW */ 
	GEL_MapAdd(0x8000u,2,0x0002u,1,1); 	/* Timer Signal Selector 1KW */ 
	GEL_MapAdd(0x8400u,2,0x0002u,1,1); 	/* CLKOUT selector 1KW */ 
	GEL_MapAdd(0x8800u,2,0x0400u,1,1); 	/* IOMACRO 1KW */ 
	GEL_MapAdd(0x8c00u,2,0x0002u,1,1); 	/* CLKMOD0 1KW */ 
	GEL_MapAdd(0x9000u,2,0x0400u,1,1); 	/* Peri data Mux 1KW */ 
	GEL_MapAdd(0x9C00u,2,0x000Du,1,1); 	/* UART 1KW */ 
	GEL_MapAdd(0xA000u,2,0x0028u,1,1); 	/* UHPI 1KW */ 
 
	EMIF_Init(); 
 
	GEL_TextOut("C5502_Init Complete.\n"); 
} 
 
EMIF_Init() 
{ 
	/* 配置EMIF寄存器  */ 
	GEL_MemoryFill(0x6c00 ,2,1,0x0001);     /* Enable EMIF bus. */ 
	GEL_MemoryFill(EMIF_GCTL1 ,2,1,0x0764);	/* EK1HZ=1, EK1EN=1 */ 
	GEL_MemoryFill(EMIF_GCTL2 ,2,1,0x0003); /* ECLKOUT2=ECLKOUT1,ECLKOUT2 enabled */ 
} 
 
hotmenu Init_CE0_ZBTRAM() 
{    
	/* 首先配置EMIF */ 
	EMIF_Init(); 
	 
	/* 然后配置系统I/O异步空间以便ZBTRAM使能控制 */ 
	GEL_MemoryFill(EMIF_CE11 ,2,1,0xFF13);  /* 16-bit async in CE1 space. */ 
	GEL_MapAdd(0x200000u,1,0x200000u,1,1);	/* External CE1 -- data space */ 
	GEL_MapAdd(0x400000u,0,0x400000u,1,1);	/* External CE1 -- program space */	  
    GEL_MemoryFill(SYSCNTL2,1,1,0x0020);	/* Enable system extended ZBTRAM */ 
     
    /* 最后配置ZBTRAM空间 */ 
	GEL_MemoryFill(EMIF_CE01 ,2,1,0xFF43);  /* 32-bit ZBTRAM in CE0 space. */ 
	GEL_MemoryFill(EMIF_CE0SECCTL1 ,2,1,0x004A);  
	GEL_MapAdd(0x008000u,1,0x1F8000u,1,1);	/* External CE0 -- data space */ 
	GEL_MapAdd(0x010000u,0,0x3F0000u,1,1);	/* External CE0 -- program space */ 
} 
 
hotmenu Init_CE1_FLASH() 
{ 
	/* 首先配置EMIF */ 
	EMIF_Init(); 
	 
	/* 然后配置FLASH空间 */ 
	GEL_MemoryFill(EMIF_CE11 ,2,1,0xFF13);  /* 16-bit async in CE1 space. */ 
	GEL_MapAdd(0x200000u,1,0x200000u,1,1);	/* External CE1 -- data space */ 
	GEL_MapAdd(0x400000u,0,0x400000u,1,1);	/* External CE1 -- program space */ 
} 
 
hotmenu Init_CE23_SDRAM()  
{	 
	/* 首先配置EMIF */ 
	EMIF_Init(); 
	 
	/* 然后配置SDRAM空间 */ 
	GEL_MemoryFill(EMIF_CE21 ,2,1,0xFF33);  /* 32-bit SDRAM in CE2 space. */ 
	GEL_MemoryFill(EMIF_CE31 ,2,1,0xFF33);  /* 32-bit SDRAM in CE3 space. */ 
	GEL_MemoryFill(EMIF_SDCNT1 ,2,1,0x6000);/* TRC=5, disable self-refresh mode */ 
	GEL_MemoryFill(EMIF_SDCNT2 ,2,1,0x4711);/* 4 banks,11 row address, 8 column address, Refresh enabled */ 
	GEL_MemoryFill(EMIF_SDREF1 ,2,1,0x061B); 
	GEL_MemoryFill(EMIF_SDREF2 ,2,1,0x0300); 
	GEL_MemoryFill(EMIF_SDEXT1 ,2,1,0xB488); 
	GEL_MemoryFill(EMIF_SDEXT2 ,2,1,0x0005);     
	GEL_MapAdd(0x400000u,1,0x200000u,1,1);	/* External CE2 -- data space */ 
	GEL_MapAdd(0x800000u,0,0x400000u,1,1);	/* External CE2 -- program space */ 
	GEL_MapAdd(0x600000u,1,0x200000u,1,1);	/* External CE3 -- data space*/ 
	GEL_MapAdd(0xC00000u,0,0x400000u,1,1);	/* External CE3 -- program space*/ 
} 
 
hotmenu Init_PLL_byF() 
{ 
    GEL_MemoryFill(PLLCSR, 2, 1,0x0001);	/* PLL enabled */ 
    GEL_MemoryFill(PLLM, 2, 1,0x000F);		/* PLL X15 */ 
} 
 
hotmenu Init_PLL_byA() 
{ 
    GEL_MemoryFill(PLLCSR, 2, 1,0x0001);	/* PLL enabled */ 
    GEL_MemoryFill(PLLM, 2, 1,0x0008);		/* PLL X10 */ 
} 
 
/*------------------------------------------------------------------------------------*/ 
//	No	more 
/*-------------------------------------------------------------------------------------*/