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

📄 seed_dec5502.gel

📁 外设存储器接口程序
💻 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
/*-------------------------------------------------------------------------------------*/

⌨️ 快捷键说明

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