📄 c5502.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 + -