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

📄 c5502.gel

📁 这是个TI公司的TMS320VC5502的专门用的usb通讯程序
💻 GEL
字号:

/*******************************************************************************/
//
//	Filename:	GEL file for DEC_5502
//
//******************************************************************************/

/*************************************************/
/* 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();			// Resets the target system and reloads the monitor
	GEL_TextOut("CPU Reset Complete.\n");
}

/* Memory map based on MP/MC value=1 (BOOTM[2:0]=0).    */
// MP/MC1=1, Microprocessor mode. The on-chip ROM is disabled
// MP/MC1=0, Microcomputer mode. The on-chip ROM is enabled
hotmenu C5502_Init()
{
	GEL_Reset();			// Resets the target system and reloads the monitor
	
	Init_PLL_by10();		// Set the main frequency is 200Mhz
	
	GEL_MapOn();			// Enables memory mapping
	GEL_MapReset();			// Resets the memory map by making all memory non-readable 
							// and non-writeable
	
/*------------------------- Program Space------------------------------------ */
	// 将片上RAM和CE3空间作为程序空间
	GEL_MapAdd(0x0000C0u,0,0x00FF40u,1,1);		/* DARAM */
	GEL_MapAdd(0xC00000u,0,0x400000u,1,1);		/* External CE3 */	

/*------------------------- Data Space--------------------------------------- */
	
	GEL_MapAdd(0x000000u,1,0x00005Fu,1,1);	/* MMRs */
	GEL_MapAdd(0x000060u,1,0x007FA0u,1,1);	/* DARAM */
	
	/* External CE0 */	
	GEL_MapAdd(0x001000u,1,0x3EFFFFu,1,1);  /* ZBTRAM */
		
	/* External CE1 */
	GEL_MapAdd(0x400000u,1,0x0FFFFFu,1,1);  /* FLASH */
	GEL_MapAdd(0x500000u,1,0x03FFFFu,1,1);	/* 系统I/O空间 */
	GEL_MapAdd(0x540000u,1,0x040000u,1,1); 	/* EDSP_CE1 */
	GEL_MapAdd(0x580000u,1,0x040000u,1,1); 	/* EDSP_CE2 */
	GEL_MapAdd(0x5C0000u,1,0x040000u,1,1); 	/* EDSP_CE3 */
	/* External CE2 */
	GEL_MapAdd(0x800000u,1,0x400000u,1,1);	/* SDRAM */
	
/*------------------------- IO Space------------------------------------------- */
 	/* Removed certain I/O locations due to emulation access problems */
	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(0x2800u,2,0x0020u,1,1); 	/* SERIAL PORT#0 1KW */
	GEL_MapAdd(0x2C00u,2,0x0020u,1,1); 	/* SERIAL PORT#1 1KW */
	GEL_MapAdd(0x3000u,2,0x0020u,1,1); 	/* SERIAL PORT#2 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(0x9400u,2,0x0004u,1,1); 	/* IDLE 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 REGISTER values     */
	GEL_MemoryFill(0x6c00 ,2,1,0x0001);     /* Enable EMIF bus. */
	GEL_MemoryFill(EMIF_GCTL1 ,2,1,0x0060);	/* EK1HZ=1, EK1EN=1 */
	GEL_MemoryFill(EMIF_GCTL2 ,2,1,0x0001); /* ECLKOUT2=ECLKOUT1,ECLKOUT2 enabled */
	GEL_MemoryFill(EMIF_CE01 ,2,1,0xFF43);	/* 32-bit-wide ZBTRAM */
}

hotmenu Init_CE0_ZBTRAM()
{   
	/* 首先配置系统I/O异步空间以便ZBTRAM使能控制 */
	GEL_MemoryFill(0x6c00 ,2,1,0x0001);     /* Enable EMIF bus. */
	GEL_MemoryFill(EMIF_CE11 ,2,1,0xFF13);  /* 16-bit async in CE1 space. */
	GEL_MapAdd(0x400000u,1,0x400000u,1,1);	/* External CE1: include flash.system I/O.EDSP_CE1#--EDSP_CE3# */
    GEL_MemoryFill(SYSCNTL2,1,1,0x0020);	/* Enable system extended ZBTRAM */
    
	GEL_MemoryFill(EMIF_CE01 ,2,1,0xFF43);  /* 32-bit ZBTRAM in CE0 space. */
	GEL_MemoryFill(EMIF_CE0SECCTL1 ,2,1,0x004C); 
	GEL_MapAdd(0x001000u,1,0x3EFFFFu,1,1);	/* External CE0 */
}

hotmenu Init_CE1_FLASH()
{
	GEL_MemoryFill(0x6c00 ,2,1,0x0001);     /* Enable EMIF bus. */
	GEL_MemoryFill(EMIF_CE11 ,2,1,0xFF13);  /* 16-bit async in CE1 space. */
	GEL_MapAdd(0x400000u,1,0x400000u,1,1);	/* External CE1: include flash.system I/O.EDSP_CE1#--EDSP_CE3# */
}

hotmenu Init_CE23_SDRAM() 
{	
	GEL_MemoryFill(0x6c00 ,2,1,0x0001);     /* Enable EMIF bus. */
	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(0x800000u,1,0x400000u,1,1);	/* External CE2 - data space */
	GEL_MapAdd(0xC00000u,0,0x400000u,1,1);	/* External CE3 - program space*/
}

hotmenu Init_PLL_by10()
{
    GEL_MemoryFill(PLLCSR, 2, 1,0x0001);	/* PLL enabled */
    GEL_MemoryFill(PLLM, 2, 1,0x000A);		/* PLL X10 */
}

hotmenu Init_PLL_by8()
{
    GEL_MemoryFill(PLLCSR, 2, 1,0x0001);	/* PLL enabled */
    GEL_MemoryFill(PLLM, 2, 1,0x0008);		/* PLL X8 */
}

/*------------------------------------------------------------------------------------*/
//	No	more
/*-------------------------------------------------------------------------------------*/

⌨️ 快捷键说明

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