/********************************************************************/ /* usbstk5515.gel */ /* Version 1.00 */ /* */ /* This GEL file is to be used with the 5515 eZDSP USB STICK. */ /* Changes may be required to support specific hardware designs. */ /* */ /* Code Composer Studio supports six reserved GEL functions that */ /* automatically get executed if they are defined. They are: */ /* */ /* StartUp() - Executed whenever CCS is invoked */ /* OnReset() - Executed after Debug->Reset CPU */ /* OnRestart() - Executed after Debug->Restart */ /* OnPreFileLoaded() - Executed before File->Load Program */ /* OnFileLoaded() - Executed after File->Load Program */ /* OnTargetConnect() - Executed after Debug->Connect */ /* */ /* Version History */ /* v0.01 Initial Release */ /* v1.00 Added PLL frequencies */ /* v2.00 CHanged frequency to be 120 MHz /********************************************************************/ StartUp() { c5515_MapInit(); } /*--------------------------------------------------------------*/ /* OnTargetConnect() -- this function is called after a target */ /* connect. */ /*--------------------------------------------------------------*/ OnTargetConnect() { GEL_Reset(); Peripheral_Reset(); ProgramPLL_120MHz(); /* ProgramPLL_100MHz(); */ GEL_TextOut("Target Connection Complete.\n"); } /*--------------------------------------------------------------*/ /* OnPreFileLoaded() */ /* This function is called automatically when the 'Load Program'*/ /* Menu item is selected. */ /*--------------------------------------------------------------*/ OnPreFileLoaded() { /* Reset the CPU to clean up state */ //GEL_Reset(); } /*--------------------------------------------------------------*/ /* OnRestart() */ /* This function is executed before a file is restarted. Disable*/ /* interrupts and DMA from the current program so pending */ /* events and transfers don't interfere with the new program. */ /*--------------------------------------------------------------*/ OnRestart() { /* Disable interrupts */ *(int*)0x0003 = *(int*)0x0003 | 0x0800; // Set INTM *(int*)0x0000 = 0; // Clear IER0 *(int*)0x0000 = 0; // Clear IER1 } /*--------------------------------------------------------------*/ /* OnReset() */ /* This function is called by CCS when you do Debug->Resest. */ /* The goal is to put the C55xx into a known good state with */ /* respect to cache, dma and interrupts. */ /*--------------------------------------------------------------*/ OnReset( int nErrorCode ) { } /*--------------------------------------------------------------*/ /* OnFileLoaded() */ /* This function is called by CCS when you do File->Load Program*/ /* The goal is to do in post file loaded configuration that may */ /* be needed. */ /*--------------------------------------------------------------*/ OnFileLoaded() { } #define ESCR 0x1c33 #define SDTIMR1 0x1020 #define SDTIMR2 0x1021 #define SDCR1 0x1008 #define SDCR2 0x1009 #define SDSRETR 0x103C #define SDRCR 0x100C #define PRCR 0x1C05 #define PCGCR1 0x1c02 #define PCGCR2 0x1c03 #define PSRCR 0x1c04 #define CLKCFGL 0x1c1e #define CCR2 0x1c1f #define CGCR1 0x1c20 #define CGCR2 0x1c21 #define CGCR3 0x1c22 #define CGCR4 0x1c23 #define CCSSR 0x1c24 #define IVPD 0x0049 // *************************************************************************** /* Memory map based on MP/MC value (assume MP/MC = 0). */ c5515_MapInit() { GEL_MapOn(); GEL_MapReset(); /*Program Space*/ /* DARAM */ GEL_MapAdd(0x0000C0,0,0x001F40,1,1); /* DARAM0 */ GEL_MapAdd(0x002000,0,0x002000,1,1); /* DARAM1 */ GEL_MapAdd(0x004000,0,0x002000,1,1); /* DARAM2 */ GEL_MapAdd(0x006000,0,0x002000,1,1); /* DARAM3 */ GEL_MapAdd(0x008000,0,0x002000,1,1); /* DARAM4 */ GEL_MapAdd(0x00A000,0,0x002000,1,1); /* DARAM5 */ GEL_MapAdd(0x00C000,0,0x002000,1,1); /* DARAM6 */ GEL_MapAdd(0x00E000,0,0x002000,1,1); /* DARAM7 */ /* SARAM */ GEL_MapAdd(0x010000,0,0x002000,1,1); /* SARAM0 */ GEL_MapAdd(0x012000,0,0x002000,1,1); /* SARAM1 */ GEL_MapAdd(0x014000,0,0x002000,1,1); /* SARAM2 */ GEL_MapAdd(0x016000,0,0x002000,1,1); /* SARAM3 */ GEL_MapAdd(0x018000,0,0x002000,1,1); /* SARAM4 */ GEL_MapAdd(0x01A000,0,0x002000,1,1); /* SARAM5 */ GEL_MapAdd(0x01C000,0,0x002000,1,1); /* SARAM6 */ GEL_MapAdd(0x01E000,0,0x002000,1,1); /* SARAM7 */ GEL_MapAdd(0x020000,0,0x002000,1,1); /* SARAM8 */ GEL_MapAdd(0x022000,0,0x002000,1,1); /* SARAM9 */ GEL_MapAdd(0x024000,0,0x002000,1,1); /* SARAM10 */ GEL_MapAdd(0x026000,0,0x002000,1,1); /* SARAM11 */ GEL_MapAdd(0x028000,0,0x002000,1,1); /* SARAM12 */ GEL_MapAdd(0x02A000,0,0x002000,1,1); /* SARAM13 */ GEL_MapAdd(0x02C000,0,0x002000,1,1); /* SARAM14 */ GEL_MapAdd(0x02E000,0,0x002000,1,1); /* SARAM15 */ GEL_MapAdd(0x030000,0,0x002000,1,1); /* SARAM16 */ GEL_MapAdd(0x032000,0,0x002000,1,1); /* SARAM17 */ GEL_MapAdd(0x034000,0,0x002000,1,1); /* SARAM18 */ GEL_MapAdd(0x036000,0,0x002000,1,1); /* SARAM19 */ GEL_MapAdd(0x038000,0,0x002000,1,1); /* SARAM20 */ GEL_MapAdd(0x03A000,0,0x002000,1,1); /* SARAM21 */ GEL_MapAdd(0x03C000,0,0x002000,1,1); /* SARAM22 */ GEL_MapAdd(0x03E000,0,0x002000,1,1); /* SARAM23 */ GEL_MapAdd(0x040000,0,0x002000,1,1); /* SARAM24 */ GEL_MapAdd(0x042000,0,0x002000,1,1); /* SARAM25 */ GEL_MapAdd(0x044000,0,0x002000,1,1); /* SARAM26 */ GEL_MapAdd(0x046000,0,0x002000,1,1); /* SARAM27 */ GEL_MapAdd(0x048000,0,0x002000,1,1); /* SARAM28 */ GEL_MapAdd(0x04A000,0,0x002000,1,1); /* SARAM29 */ GEL_MapAdd(0x04C000,0,0x002000,1,1); /* SARAM30 */ GEL_MapAdd(0x04E000,0,0x002000,1,1); /* SARAM31 */ /* External-Memory */ GEL_MapAdd(0x050000,0,0x7B0000,1,1); /* External-SDRAM */ GEL_MapAdd(0x800000,0,0x400000,1,1); /* External-Async */ GEL_MapAdd(0xC00000,0,0x200000,1,1); /* External-Async */ GEL_MapAdd(0xE00000,0,0x100000,1,1); /* External-Async */ GEL_MapAdd(0xF00000,0,0x0E0000,1,1); /* External-Async */ /* ROM */ GEL_MapAdd(0xFE0000,0,0x008000,1,0); /* SAROM0 */ GEL_MapAdd(0xFE8000,0,0x008000,1,0); /* SAROM1 */ GEL_MapAdd(0xFF0000,0,0x008000,1,0); /* SAROM2 */ GEL_MapAdd(0xFF8000,0,0x008000,1,0); /* SAROM3 */ /* Data Space */ /* DARAM */ GEL_MapAdd(0x000000,1,0x000060,1,1); /* MMRs */ GEL_MapAdd(0x000060,1,0x000FA0,1,1); /* DARAM0 */ GEL_MapAdd(0x001000,1,0x001000,1,1); /* DARAM1 */ GEL_MapAdd(0x002000,1,0x001000,1,1); /* DARAM2 */ GEL_MapAdd(0x003000,1,0x001000,1,1); /* DARAM3 */ GEL_MapAdd(0x004000,1,0x001000,1,1); /* DARAM4 */ GEL_MapAdd(0x005000,1,0x001000,1,1); /* DARAM5 */ GEL_MapAdd(0x006000,1,0x001000,1,1); /* DARAM6 */ GEL_MapAdd(0x007000,1,0x001000,1,1); /* DARAM7 */ /* SARAM */ GEL_MapAdd(0x008000,1,0x001000,1,1); /* SARAM0 */ GEL_MapAdd(0x009000,1,0x001000,1,1); /* SARAM1 */ GEL_MapAdd(0x00A000,1,0x001000,1,1); /* SARAM2 */ GEL_MapAdd(0x00B000,1,0x001000,1,1); /* SARAM3 */ GEL_MapAdd(0x00C000,1,0x001000,1,1); /* SARAM4 */ GEL_MapAdd(0x00D000,1,0x001000,1,1); /* SARAM5 */ GEL_MapAdd(0x00E000,1,0x001000,1,1); /* SARAM6 */ GEL_MapAdd(0x00F000,1,0x001000,1,1); /* SARAM7 */ GEL_MapAdd(0x010000,1,0x001000,1,1); /* SARAM8 */ GEL_MapAdd(0x011000,1,0x001000,1,1); /* SARAM9 */ GEL_MapAdd(0x012000,1,0x001000,1,1); /* SARAM10 */ GEL_MapAdd(0x013000,1,0x001000,1,1); /* SARAM11 */ GEL_MapAdd(0x014000,1,0x001000,1,1); /* SARAM12 */ GEL_MapAdd(0x015000,1,0x001000,1,1); /* SARAM13 */ GEL_MapAdd(0x016000,1,0x001000,1,1); /* SARAM14 */ GEL_MapAdd(0x017000,1,0x001000,1,1); /* SARAM15 */ GEL_MapAdd(0x018000,1,0x001000,1,1); /* SARAM16 */ GEL_MapAdd(0x019000,1,0x001000,1,1); /* SARAM17 */ GEL_MapAdd(0x01A000,1,0x001000,1,1); /* SARAM18 */ GEL_MapAdd(0x01B000,1,0x001000,1,1); /* SARAM19 */ GEL_MapAdd(0x01C000,1,0x001000,1,1); /* SARAM20 */ GEL_MapAdd(0x01D000,1,0x001000,1,1); /* SARAM21 */ GEL_MapAdd(0x01E000,1,0x001000,1,1); /* SARAM22 */ GEL_MapAdd(0x01F000,1,0x001000,1,1); /* SARAM23 */ GEL_MapAdd(0x020000,1,0x001000,1,1); /* SARAM24 */ GEL_MapAdd(0x021000,1,0x001000,1,1); /* SARAM25 */ GEL_MapAdd(0x022000,1,0x001000,1,1); /* SARAM26 */ GEL_MapAdd(0x023000,1,0x001000,1,1); /* SARAM27 */ GEL_MapAdd(0x024000,1,0x001000,1,1); /* SARAM28 */ GEL_MapAdd(0x025000,1,0x001000,1,1); /* SARAM29 */ GEL_MapAdd(0x026000,1,0x001000,1,1); /* SARAM30 */ GEL_MapAdd(0x027000,1,0x001000,1,1); /* SARAM31 */ /* External-Memory */ GEL_MapAdd(0x028000,1,0x3D8000,1,1); /* External-SDRAM */ GEL_MapAdd(0x400000,1,0x200000,1,1); /* External-Async */ GEL_MapAdd(0x600000,1,0x100000,1,1); /* External-Async */ GEL_MapAdd(0x700000,1,0x080000,1,1); /* External-Async */ GEL_MapAdd(0x780000,1,0x070000,1,1); /* External-Async */ /* ROM */ GEL_MapAdd(0x7F0000,1,0x004000,1,0); /* SAROM0 */ GEL_MapAdd(0x7F4000,1,0x004000,1,0); /* SAROM1 */ GEL_MapAdd(0x7F8000,1,0x004000,1,0); /* SAROM2 */ GEL_MapAdd(0x7FC000,1,0x004000,1,0); /* SAROM3 */ /* IO Space */ GEL_MapAdd(0x0000,2,0xFFFF,1,1); /* XPORT */ } Peripheral_Reset() { int i; *(short *)PSRCR@IO = 0x0020; *(short *)PRCR@IO = 0x00BB; for(i=0;i<0xff;i++); *(short *)IVPD@data = 0x027F; // Load interrupt vector pointer GEL_TextOut("Reset Peripherals is complete.\n"); } ProgramPLL_100MHz() { int i; GEL_TextOut("Configuring PLL (100 MHz).\n"); /* Enable clocks to all peripherals */ *(short *)PCGCR1@IO = 0x0; *(short *)PCGCR2@IO = 0x0; /* Bypass PLL */ *(short *)CCR2@IO = 0x0; /* Set CLR_CNTL = 0 */ *(short *)CGCR1@IO = *(short *)CGCR1@IO & 0x7FFF; *(short *)CGCR1@IO = 0x8BE8; *(short *)CGCR2@IO = 0x8000; *(short *)CGCR3@IO = 0x0806; *(short *)CGCR4@IO = 0x0000; /* Wait for PLL lock */ for(i=0;i<0x7fff;i++); /* Switch to PLL clk */ *(short *)CCR2@IO = 0x1; GEL_TextOut("PLL Init Done."); } ProgramPLL_120MHz() { int i; GEL_TextOut("Configuring PLL (120 MHz).\n"); /* Enable clocks to all peripherals */ *(short *)PCGCR1@IO = 0x0; *(short *)PCGCR2@IO = 0x0; /* Bypass PLL */ *(short *)CCR2@IO = 0x0; /* Set CLR_CNTL = 0 */ *(short *)CGCR1@IO = *(short *)CGCR1@IO & 0x7FFF; *(short *)CGCR1@IO = 0x8E4B; *(short *)CGCR2@IO = 0x8000; *(short *)CGCR3@IO = 0x0806; *(short *)CGCR4@IO = 0x0000; /* Wait for PLL lock */ for(i=0;i<0x7fff;i++); /* Switch to PLL clk */ *(short *)CCR2@IO = 0x1; GEL_TextOut("PLL Init Done."); } ProgramPLL_60MHz() { int i; GEL_TextOut("Configuring PLL (60 MHz).\n"); /* Enable clocks to all peripherals */ *(short *)PCGCR1@IO = 0x0; *(short *)PCGCR2@IO = 0x0; /* Bypass PLL */ *(short *)CCR2@IO = 0x0; /* Set CLR_CNTL = 0 */ *(short *)CGCR1@IO = *(short *)CGCR1@IO & 0x7FFF; *(short *)CGCR1@IO = 0x8724; *(short *)CGCR2@IO = 0x8000; *(short *)CGCR3@IO = 0x0806; *(short *)CGCR4@IO = 0x0000; /* Wait for PLL lock */ for(i=0;i<0x7fff;i++); /* Switch to PLL clk */ *(short *)CCR2@IO = 0x1; GEL_TextOut("PLL Init Done."); }