iekc64.gel
来自「TI公司的算法标准 Framework5的源代码」· GEL 代码 · 共 143 行
GEL
143 行
StartUp()
{
IEKC64x_Init();
GEL_TextOut("IEKC64 Gel StartUp Complete.\n");
}
menuitem "ATEME's IEKC64x";
hotmenu IEKC64x_Init()
{
GEL_Reset();
map_Init();
emif_Init();
flush_Cache();
}
/*------------------------------------------------------------------------*/
/* EMIF registers definition */
/*------------------------------------------------------------------------*/
emif_Init()
{
#define C64_REGEMIFA_GBLCTL *0x01800000
#define C64_REGEMIFA_CE0CTL *0x01800008
#define C64_REGEMIFA_CE1CTL *0x01800004
#define C64_REGEMIFA_CE2CTL *0x01800010
#define C64_REGEMIFA_CE3CTL *0x01800014
#define C64_REGEMIFA_CE0SEC *0x01800048
#define C64_REGEMIFA_CE1SEC *0x01800044
#define C64_REGEMIFA_CE2SEC *0x01800050
#define C64_REGEMIFA_CE3SEC *0x01800054
#define C64_REGEMIFA_SDCTL *0x01800018
#define C64_REGEMIFA_SDTIM *0x0180001C
#define C64_REGEMIFA_SDEXT *0x01800020
#define C64_REGEMIFB_GBLCTL *0x01A80000
#define C64_REGEMIFB_CE0CTL *0x01A80008
#define C64_REGEMIFB_CE1CTL *0x01A80004
#define C64_REGEMIFB_CE2CTL *0x01A80010
#define C64_REGEMIFB_CE3CTL *0x01A80014
#define C64_REGEMIFB_CE0SEC *0x01A80048
#define C64_REGEMIFB_CE1SEC *0x01A80044
#define C64_REGEMIFB_CE2SEC *0x01A80050
#define C64_REGEMIFB_CE3SEC *0x01A80054
#define C64_REGEMIFB_SDCTL *0x01A80018
#define C64_REGEMIFB_SDTIM *0x01A8001C
#define C64_REGEMIFB_SDEXT *0x01A80020
GEL_Reset();
C64_REGEMIFA_GBLCTL = 0x000127A4;
C64_REGEMIFA_CE0CTL = 0x000000D0;
C64_REGEMIFA_CE1CTL = 0x31910811;
C64_REGEMIFA_CE2CTL = 0x31910821;
C64_REGEMIFA_CE3CTL = 0x00000040;
C64_REGEMIFA_CE0SEC = 0;
C64_REGEMIFA_CE1SEC = 0;
C64_REGEMIFA_CE2SEC = 0;
C64_REGEMIFA_CE3SEC = 0x00000060;
C64_REGEMIFA_SDCTL = 0x6A666000;
C64_REGEMIFA_SDTIM = 0x0000061A;
C64_REGEMIFA_SDEXT = 0x0004B4A8;
C64_REGEMIFB_GBLCTL = 0x000527A4;
C64_REGEMIFB_CE0CTL = 0x00000090;
C64_REGEMIFB_CE1CTL = 0x32530B01;
C64_REGEMIFB_CE2CTL = 0x000000B0;
C64_REGEMIFB_CE3CTL = 0x000000B0;
C64_REGEMIFB_CE0SEC = 0;
C64_REGEMIFB_CE1SEC = 0;
C64_REGEMIFB_CE2SEC = 0x00000061;
C64_REGEMIFB_CE3SEC = 0x00000000;
C64_REGEMIFB_SDCTL = 0x56666000;
C64_REGEMIFB_SDTIM = 0x0000030D;
C64_REGEMIFB_SDEXT = 0x0004B4A8;
C64_REGEMIFB_SDCTL = (C64_REGEMIFB_SDCTL | (1 << 0x18));
C64_REGEMIFA_SDCTL = (C64_REGEMIFA_SDCTL | (1 << 0x18));
}
/*------------------------------------------------------------------------*/
/* Setup the memory map for the IEKC64x board */
/*------------------------------------------------------------------------*/
map_Init()
{
/* Enable memory mapping in Code Composer */
GEL_MapOn();
/* Reset all memory to unreadable and unwritable */
GEL_MapReset();
/* Syntax for GEL_MapAdd(address, page, length, readable, writeable)
* page: Program Memory = 0, Data Memory = 1, I/O Space = 2
* readable: Not Readable = 0, Readable = 1
* writeable: Not Writeable = 0, Writeable = 1
*/
/*---------------------------------------------------------------------*/
/* IEKC64x specific memory mapping */
/*---------------------------------------------------------------------*/
GEL_MapAdd(0x00000000,0,0x00000200,1,1); /* Reset and Interrupt Vector Table */
GEL_MapAdd(0x00000200,0,0x000001c0,1,1); /* Bootloader reserved space */
GEL_MapAdd(0x000003c0,0,0x00000040,1,1); /* PCI Communication Descriptor Tables */
GEL_MapAdd(0x00000400,0,0x000ffc00,1,1); /* DSP's on-chip memory */
GEL_MapAdd(0x01800000,0,0x00000054,1,1); /* DSP internal registers*/
GEL_MapAdd(0x01A00000,0,0x000007FF,1,1); /* EDMA TABLE*/
GEL_MapAdd(0x01A0FF9C,0,0x00000060,1,1); /* EDMA control register*/
GEL_MapAdd(0x01A80000,0,0x00000054,1,1);
GEL_MapAdd(0x01A40000,0,0x00001000,1,1);
GEL_MapAdd(0x01C00000,0,0x00020008,1,1); /* PCI peripheral register */
GEL_MapAdd(0x60000000,0,0x00800000,1,1); /* External SDRAM EMIF B 8MB */
GEL_MapAdd(0x64000000,0,0x00200000,1,1); /* FLASH */
GEL_MapAdd(0x68000000,0,0x00000001,1,1); /* video FIFO */
GEL_MapAdd(0x6C000000,0,0x00000001,1,1); /* Fast Port B FIFO */
GEL_MapAdd(0x80000000,0,0x10000000,1,1); /* External SDRAM EMIF A 256MB */
GEL_MapAdd(0x90000000,0,0x0000007F,1,1); /* Support logic */
GEL_MapAdd(0x90010000,0,0x0000007F,1,1); /* Support logic */
GEL_MapAdd(0x90040000,0,0x000000FF,1,1); /* EPLD */
GEL_MapAdd(0x90080000,0,0x000000FF,1,1); /* FPGA */
GEL_MapAdd(0x90200000,0,0x000001FF,1,1); /* Support logic */
GEL_MapAdd(0x90400000,0,0x0000007F,1,1); /* Fast Port A */
GEL_MapAdd(0x90600000,0,0x0000007F,1,1); /* Fast Port B */
GEL_MapAdd(0xA0000000,0,0x00400000,1,1); /* Cross Platform Interface CEA */
GEL_MapAdd(0xA0400000,0,0x00400000,1,1); /* Cross Platform Interface CEA */
GEL_MapAdd(0xB0000000,0,0x00000007,1,1); /* Fast Port A FIFO */
GEL_MapAdd(0x18C0000,0,0x03C,1,1); /* Mcbsp0 */
GEL_MapAdd(0x1900000,0,0x03C,1,1); /* Mcbsp1 */
GEL_MapAdd(0x1A40000,0,0x03C,1,1); /* Mcbsp2 */
}
/*------------------------------------------------------------------------*/
/* FlushCache() */
/* Actually Invalidate L1D and L1P, Internal RAM */
/*------------------------------------------------------------------------*/
flush_Cache()
{
*(int *)0x01840000 = (*(int *)0x01840000 | 0x00000300);
*(int *)0x01845000 = 0x1;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?