📄 conftest.gel
字号:
/* (revision 2.15.05) + C6711 changes
*
* This GEL file (ConfTest.gel) is loaded on the command line
* of Code Composer. It loads the CnfDSP.out file and sets up
* hotmenu items to run the DSP code without the Host program.
* Also, it provides example code on how to reset the C6x DSP
* and initialize the External Memory Interface.
*
*/
/*
* The StartUp() function is called every time you start
* Code Composer. You can customize this function to
* initialize wait states in the EMIF or to perform
* other initialization.
*/
StartUp()
{
setup_memory_map();
init_emif();
GEL_Load("c:\\ti\\c6000\\dsk6x11\\conftest\\CnfDSP.out");
}
/*
* Menuitem creates a selection available beneath the GEL
* menu selection in Code Composer Studio.
*/
menuitem "Resets";
hotmenu Reset_BreakPts_and_EMIF()
{
GEL_BreakPtReset();
GEL_Reset();
init_emif();
}
hotmenu Halt_Proc()
{
GEL_Halt();
}
menuitem "Memory Map";
hotmenu SetMemoryMap()
{
setup_memory_map();
}
hotmenu ClearMemoryMap()
{
clear_memory_map();
}
menuitem "Confidence Test";
hotmenu Handshake()
{
do_HandShake();
GEL_OpenWindow("CnfTst Errors",0,10);
}
hotmenu ISRAM()
{
CheckResults();
do_ISRAM();
}
hotmenu SDRAM()
{
CheckResults();
do_SDRAM();
}
hotmenu MCBSP()
{
CheckResults();
do_MCBSP();
}
hotmenu TIMER()
{
CheckResults();
do_TIMER();
}
hotmenu QDMA()
{
CheckResults();
do_QDMA();
}
hotmenu LEDS()
{
CheckResults();
do_LEDS();
}
hotmenu CODEC()
{
CheckResults();
do_CODEC();
}
hotmenu PGMEM()
{
CheckResults();
do_PGMEM();
}
hotmenu Quit()
{
CheckResults();
do_QUIT();
}
menuitem "User Interface"
slider Blinks(0, 10 ,1, 1, numblinks)
{
handShakingBuffer[0] = numblinks;
}
slider Period(100, 1000, 1, 1, tperiod)
{
handShakingBuffer[1] = tperiod;
}
dialog Program_SDRAM(Value "Value to Write",Offset "Address Offset",NumTimes "Number of Words")
{
handShakingBuffer[0] = Value;
handShakingBuffer[1] = Offset;
handShakingBuffer[2] = NumTimes;
}
menuitem "HandShakingBuffer Check";
hotmenu Command_Word()
{
ReadCommand();
}
hotmenu Return_Word()
{
CheckResults();
}
hotmenu Status_Word()
{
ReadStatus();
}
hotmenu Memory_View_HSB()
{
GEL_OpenWindow("HandShakingBuffer",0,10);
ShowHSB();
}
dialog HandShakingBuffer(Word0 "handShakingBuffer[0] = IDPARM1 Word",
Word1 "handShakingBuffer[1] = IDPARM2 Word",
Word2 "handShakingBuffer[2] = IDPARM3 Word",
Word3 "handShakingBuffer[3] = COMMAND Word",
Word4 "handShakingBuffer[4] = STATUS Word",
Word5 "handShakingBuffer[5] = RETURN Word")
{
handShakingBuffer[0] = Word0;
handShakingBuffer[1] = Word1;
handShakingBuffer[2] = Word2;
handShakingBuffer[3] = Word3;
handShakingBuffer[4] = Word4;
handShakingBuffer[5] = Word5;
}
/*
* Initialize the EMIF
*/
init_emif()
{
#define EMIF_GCTL 0x01800000
#define EMIF_CE1 0x01800004
#define EMIF_CE0 0x01800008
#define EMIF_CE2 0x01800010
#define EMIF_CE3 0x01800014
#define EMIF_SDRAMCTL 0x01800018
#define EMIF_SDRAMTIMING 0x0180001C
#define EMIF_SDRAMEXT 0x01800020
/*************************************************************************
* Standard 6211 DSK includes 2 MT48LC1M16A1-7 devices =>4MB SDRAM *
* 16Mb (16-bit x 2 banks x 512K) parts = 2MB / part *
* EMIF_SDCTRL=0x07227000 *
* EMIF_SDEXT=0x54529 Board Rev = 1 *
*------------------------------------------------------------------------*
* Standard 6711 DSK includes 2 MT48LC4M16A2-8 devices =>16MB SDRAM *
* 64Mb (16-bit x 4 banks x 1M) parts = 8MB / part *
* EMIF_SDCTRL=0x57116000 *
* EMIF_SDEXT=0x54529 (Hitachi 0x54509) Board Rev = 2 *
*------------------------------------------------------------------------*
* Other 6711 DSK configurations are as follows: *
* 128Mb (16-bit x 4 banks x 2M) parts = 16MB / part (=>32MB SDRAM) *
* EMIF_SDCTRL=0x53116000 *
* EMIF_SDEXT=0x54529 (Hitachi 0x54509) Board Rev = 3 *
* ---------------------------------------------------------------------*
* 256Mb (16-bit x 4 banks x 4M) parts = 32MB / part (=>64MB SDRAM) *
* EMIF_SDCTRL=0x63116000 *
* EMIF_SDEXT=0x54529 Board Rev = 4 *
*************************************************************************/
*(int *)EMIF_GCTL = 0x00003040;/* EMIF global control register */
*(int *)EMIF_CE1 = 0xFFFFFF23; /* CE1 - 32-bit asynch access after boot*/
*(int *)EMIF_CE0 = 0xFFFFFF30; /* CE0 - SDRAM */
*(int *)EMIF_CE2 = 0xFFFFFF23; /* CE2 - 32-bit asynch on daughterboard */
*(int *)EMIF_CE3 = 0xFFFFFF23; /* CE3 - 32-bit asynch on daughterboard */
*(int *)EMIF_SDRAMCTL = 0x57116000; /* SDRAM control register (100 MHz)*/
*(int *)EMIF_SDRAMTIMING = 0x0000061A; /* SDRAM Timing register */
*(int *)EMIF_SDRAMEXT = 0x00054529; /* SDRAM Extension register */
}
/*
* Clear the memory map settings
*/
clear_memory_map()
{
GEL_MapOff();
}
/*
* Setup the memory map for the c6211 DSK
*/
setup_memory_map()
{
/* enable the memory map feature in Code Composer Studio */
GEL_MapOn();
/* start out by resetting all memory to unreadable and unwritable */
GEL_MapReset();
/* the 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
*/
/* C6211 DSK-specific memory mapping */
/*--------------------------------------------------------------------------*/
GEL_MapAdd(0x00000000,0,0x00010000,1,1); /* Internal L2 memory */
GEL_MapAdd(0x01800000,0,0x00000024,1,1); /* EMIF control registers */
GEL_MapAdd(0x01840000,0,0x00000004,1,1); /* L2 cache configuration register */
GEL_MapAdd(0x01844000,0,0x00000038,1,1); /* L2 control registers */
GEL_MapAdd(0x01845000,0,0x00000008,1,1); /* L2 flush/clean registers */
GEL_MapAdd(0x01848200,0,0x00000010,1,1); /* CE0 memory attribute registers */
GEL_MapAdd(0x01848240,0,0x00000010,1,1); /* CE1 memory attribute registers */
GEL_MapAdd(0x01848280,0,0x00000010,1,1); /* CE2 memory attribute registers */
GEL_MapAdd(0x018482c0,0,0x00000010,1,1); /* CE3 memory attribute registers */
GEL_MapAdd(0x01880000,0,0x00000004,1,1); /* HPI registers */
GEL_MapAdd(0x018c0000,0,0x00000028,1,1); /* McBSP0 registers */
GEL_MapAdd(0x01900000,0,0x00000028,1,1); /* McBSP1 registers */
GEL_MapAdd(0x01940000,0,0x0000000c,1,1); /* Timer0 registers */
GEL_MapAdd(0x01980000,0,0x0000000c,1,1); /* Timer1 registers */
GEL_MapAdd(0x019c0000,0,0x0000000c,1,1); /* Interrupt selector registers */
GEL_MapAdd(0x01a00000,0,0x00000800,1,1); /* EDMA parameter RAM */
GEL_MapAdd(0x01a0ffe0,0,0x00000020,1,1); /* EDMA control registers */
GEL_MapAdd(0x02000000,0,0x00000014,0,1); /* QDMA registers */
GEL_MapAdd(0x02000020,0,0x00000014,0,1); /* QDMA pseudo-registers */
GEL_MapAdd(0x30000000,0,0x04000000,1,1); /* McBSP0 data */
GEL_MapAdd(0x34000000,0,0x04000000,1,1); /* McBSP1 data */
GEL_MapAdd(0x80000000,0,0x10000000,1,1); /* CE0 - SDRAM */
GEL_MapAdd(0x90000000,0,0x00200000,1,1); /* CE1 - 8-bit ROM */
GEL_MapAdd(0x90080000,0,0x00000004,1,1); /* 8-bit I/O port LED */
GEL_MapAdd(0xA0000000,0,0x10000000,1,1); /* CE2 - Daughtercard */
}
/* Confidence Test Commands */
#define ISRAM 0x1000
#define SDRAM 0x2000
#define MCBSP 0x3000
#define TIMER 0x4000
#define QDMA 0x5000
#define LEDS 0x6000
#define CODEC 0x7000
#define PGMEM 0x9000
/* Confidence Test Status */
#define HOST_RECEIVE_HAND_SHAKING_INFO 0x55555555
#define HOST_STATUS_INPUT_READY 0x77777777
#define HOST_STATUS_END_PROCESSING 0xFFFFFFFF
#define DSP_STATUS_OUTPUT_READY 0x66666666
#define DSP_PROCESSING_COMMAND 0x88888888
/*Confidence Test Return Codes */
#define HANDSHAKEOK 0xCCCCCCCC
#define ISRAM_OK 0x10000000
#define ISRAM_ERR55 0x10005555
#define ISRAM_ERRAA 0x1000AAAA
#define ISRAM_ERROR 0x1000FFFF
#define SDRAM_OK 0x20000000
#define SDRAM_ERR55 0x20005555
#define SDRAM_ERRAA 0x2000AAAA
#define SDRAM_ERROR 0x2000FFFF
#define MCBSP_OK 0x40000000
#define MCBSP_ERROR 0x4000FFFF
#define TIMER_OK 0x50000000
#define TIMER_ERROR 0x5000FFFF
#define QDMA_OK 0x60000000
#define QDMA_ERROR 0x6000FFFF
#define LEDS_OK 0x70000000
#define LEDS_ERROR 0x7000FFFF
#define CODEC_OK 0x80000000
#define CODEC_ERRTN 0x80005555
#define CODEC_ERRCD 0x8000AAAA
#define CODEC_ERROR 0x8000FFFF
#define PGMEM_OK 0xA0000000
#define PGMEM_ERROR 0xA000FFFF
#define TEST_DISABLED 0xFF00FFFF
#define DEFAULT_ERROR 0xF000FFFF
/* Confidence Test HandShakingBuffer */
#define HSB_IDPARM1 0x00000200
#define HSB_IDPARM2 0x00000204
#define HSB_IDPARM3 0x00000208
#define HSB_COMMAND 0x0000020C
#define HSB_STATUS 0x00000210
#define HSB_RETURN 0x00000214
#define IO_PORT 0x90080000
#define CE1_32 0xFFFFFF23
#define CE1_8 0xFFFFFF03
/* Turns on/off LEDs */
TurnOnUserLED1()
{
GEL_MemoryFill(EMIF_CE1,2,0x1,CE1_32);
GEL_MemoryFill(IO_PORT,2,0x1,0xe000000);
GEL_MemoryFill(EMIF_CE1,2,0x1,CE1_8);
}
TurnOnUserLED2()
{
GEL_MemoryFill(EMIF_CE1,2,0x1,CE1_32);
GEL_MemoryFill(IO_PORT,2,0x1,0xd000000);
GEL_MemoryFill(EMIF_CE1,2,0x1,CE1_8);
}
TurnOnUserLED3()
{
GEL_MemoryFill(EMIF_CE1,2,0x1,CE1_32);
GEL_MemoryFill(IO_PORT,2,0x1,0xb000000);
GEL_MemoryFill(EMIF_CE1,2,0x1,CE1_8);
}
TurnOffUserLEDs()
{
GEL_MemoryFill(EMIF_CE1,2,0x1,CE1_32);
GEL_MemoryFill(IO_PORT,2,0x1,0x7000000);
GEL_MemoryFill(EMIF_CE1,2,0x1,CE1_8);
}
ToggleUserLEDs(value)
{
GEL_MemoryFill(EMIF_CE1,2,0x1,CE1_32);
GEL_MemoryFill(IO_PORT,2,0x1,value);
GEL_MemoryFill(EMIF_CE1,2,0x1,CE1_8);
}
do_HandShake()
{
/* Set Handshake ready */
GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_RECEIVE_HAND_SHAKING_INFO);
GEL_MemoryFill(HSB_RETURN,0,0x1,HANDSHAKEOK);
TurnOffUserLEDs();
}
do_ISRAM()
{
/* Modify Command and Chg status */
GEL_MemoryFill(HSB_COMMAND,0,0x1,ISRAM);
GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_STATUS_INPUT_READY);
TurnOnUserLED1(); /* Test 1 */
}
do_SDRAM()
{
/* Modify Command and Chg status */
GEL_MemoryFill(HSB_COMMAND,0,0x1,SDRAM);
GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_STATUS_INPUT_READY);
TurnOnUserLED2(); /* Test 2 */
}
do_MCBSP()
{
/* Modify Command and Chg status */
GEL_MemoryFill(HSB_COMMAND,0,0x1,MCBSP);
GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_STATUS_INPUT_READY);
TurnOnUserLED3(); /* Test 3 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -