/* (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\\dsk\\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 FLASH() { CheckResults(); do_FLASH(); } 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 = 0x07227000; /* 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 FLASH 0x3000 #define MCBSP 0x4000 #define TIMER 0x5000 #define QDMA 0x6000 #define LEDS 0x7000 #define CODEC 0x8000 #define PGMEM 0xA000 /* 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 FLASH_OK 0x30000000 #define FLASH_ERRCK 0x30003333 #define FLASH_ERR55 0x30005555 #define FLASH_ERR77 0x30007777 #define FLASH_ERRAA 0x3000AAAA #define FLASH_ERRBB 0x3000BBBB #define FLASH_ERROR 0x3000FFFF #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_FLASH() { /* Modify Command and Chg status */ GEL_MemoryFill(HSB_COMMAND,0,0x1,FLASH); GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_STATUS_INPUT_READY); ToggleUserLEDs(0xc000000); /* LED1+LED2 Test 3 */ } 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 4 */ } do_TIMER() { /* Modify Command and Chg status */ GEL_MemoryFill(HSB_COMMAND,0,0x1,TIMER); GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_STATUS_INPUT_READY); ToggleUserLEDs(0xa000000); /* LED3+LED1 Test 5 */ } do_QDMA() { /* Modify Command and Chg status */ GEL_MemoryFill(HSB_COMMAND,0,0x1,QDMA); GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_STATUS_INPUT_READY); ToggleUserLEDs(0x9000000); /* LED3+LED2 Test 6 */ } do_LEDS() { /* Modify Command and Chg status */ if((*(HSB_IDPARM1)<0x1) || (*(HSB_IDPARM1)>0xA)) GEL_MemoryFill(HSB_IDPARM1,0,0x1,0x5); if((*(HSB_IDPARM2)<0x64) || (*(HSB_IDPARM2)>0x3E8)) GEL_MemoryFill(HSB_IDPARM2,0,0x1,0x1F4); GEL_MemoryFill(HSB_COMMAND,0,0x1,LEDS); GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_STATUS_INPUT_READY); } do_CODEC() { /* Modify Command and Chg status */ if((*(HSB_IDPARM1)<0x20) || (*(HSB_IDPARM1)>0x1388)) GEL_MemoryFill(HSB_IDPARM1,0,0x1,0x1388); if((*(HSB_IDPARM2)<0x1388) || (*(HSB_IDPARM2)>0x3d090)) GEL_MemoryFill(HSB_IDPARM2,0,0x1,0x3d090); GEL_MemoryFill(HSB_COMMAND,0,0x1,CODEC); GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_STATUS_INPUT_READY); ToggleUserLEDs(0x8000000); /* LED3+LED2+LED1 Test 7 */ } do_PGMEM() { /* Modify Command and Chg status */ /* GEL_MemoryFill(HSB_IDPARM1,0,0x1,0x12345678); */ /* GEL_MemoryFill(HSB_IDPARM2,0,0x1,0x0); */ /* GEL_MemoryFill(HSB_IDPARM3,0,0x1,0x10); */ GEL_MemoryFill(HSB_COMMAND,0,0x1,PGMEM); GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_STATUS_INPUT_READY); } do_QUIT() { /* Host Asks for END of Processing */ GEL_MemoryFill(HSB_STATUS,0,0x1,HOST_STATUS_END_PROCESSING); } /* Show contents of HSB memory */ ShowHSB() { GEL_TextOut("\nHSB[0] IDPARM1 %x %x\n","HandShakingBuffer",1,1,0,HSB_IDPARM1,*(HSB_IDPARM1)); GEL_TextOut("HSB[1] IDPARM2 %x %x\n","HandShakingBuffer",1,2,0,HSB_IDPARM2,*(HSB_IDPARM2)); GEL_TextOut("HSB[2] IDPARM3 %x %x\n","HandShakingBuffer",1,3,0,HSB_IDPARM3,*(HSB_IDPARM3)); GEL_TextOut("HSB[3] COMMAND %x %x\n","HandShakingBuffer",1,4,0,HSB_COMMAND,*(HSB_COMMAND)); GEL_TextOut("HSB[4] STATUS %x %x\n","HandShakingBuffer",1,5,0,HSB_STATUS,*(HSB_STATUS)); GEL_TextOut("HSB[5] RETURN %x %x\n","HandShakingBuffer",1,6,0,HSB_RETURN,*(HSB_RETURN)); GEL_TextOut("--------------------------------------","HandShakingBuffer",0,7,0,); } /* Checks the Results of an individual test - Mimics HOST pgm */ CheckResults() { /* Handshake Acknowledged */ if((unsigned)*(HSB_RETURN)==HANDSHAKEOK) { GEL_TextOut("Hand Shake Complete!\n","CnfTst Errors",1,1,0,); } /* ISRAM test results */ else if(*(HSB_RETURN)==ISRAM_OK) { GEL_TextOut("ISRAM Test PASSED! (%x)\n","CnfTst Errors",1,1,0,*(HSB_RETURN)); } else if(*(HSB_RETURN)==ISRAM_ERR55) { GEL_TextOut("ISRAM 55 TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Total 55 errors=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM3)); } else if(*(HSB_RETURN)==ISRAM_ERRAA) { GEL_TextOut("ISRAM AA TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Total AA errors=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM2)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM3)); } else if(*(HSB_RETURN)==ISRAM_ERROR) { GEL_TextOut("ISRAM 55+AA TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Total 55 errors=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); GEL_TextOut("Total AA errors=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM2)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",2,4,0,*(HSB_IDPARM3)); } /* SDRAM test results */ else if(*(HSB_RETURN)==SDRAM_OK) { GEL_TextOut("SDRAM TEST PASSED! (%x)\n","CnfTst Errors",1,1,0,*(HSB_RETURN)); } else if(*(HSB_RETURN)==SDRAM_ERR55) { GEL_TextOut("SDRAM 55 TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Total 55 errors=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM3)); } else if(*(HSB_RETURN)==SDRAM_ERRAA) { GEL_TextOut("SDRAM AA TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Total AA errors=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM2)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM3)); } else if(*(HSB_RETURN)==SDRAM_ERROR) { GEL_TextOut("SDRAM 55+AA TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Total 55 errors=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); GEL_TextOut("Total AA errors=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM2)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",2,4,0,*(HSB_IDPARM3)); } /* FLASH test results */ else if(*(HSB_RETURN)==FLASH_OK) { GEL_TextOut("FLASH TEST PASSED! (%x)\n","CnfTst Errors",1,1,0,*(HSB_RETURN)); } /* else if(*(HSB_RETURN)==FLASH_ERRCK) Turned off checksum test { GEL_TextOut("FLASH CHECKSUM ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Expected checksum=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM2)); GEL_TextOut("Computed checksum=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM3)); }*/ else if(*(HSB_RETURN)==FLASH_ERR55) { GEL_TextOut("FLASH 55 TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Total 55 errors=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM3)); } else if(*(HSB_RETURN)==FLASH_ERRAA) { GEL_TextOut("FLASH AA TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Total AA errors=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM2)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM3)); } else if(*(HSB_RETURN)==FLASH_ERROR) { GEL_TextOut("FLASH 55+AA TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Total 55 errors=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); GEL_TextOut("Total AA errors=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM2)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",2,4,0,*(HSB_IDPARM3)); } /* MCBSP test results */ else if(*(HSB_RETURN)==MCBSP_OK) { GEL_TextOut("MCBSP TEST PASSED! (%x)\n","CnfTst Errors",1,1,0,*(HSB_RETURN)); } else if(*(HSB_RETURN)==MCBSP_ERROR) { GEL_TextOut("MCBSP TEST FAILED! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Error return value=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); } /* TIMER test results */ else if(*(HSB_RETURN)==TIMER_OK) { GEL_TextOut("TIMER TEST PASSED! (%x)\n","CnfTst Errors",1,1,0,*(HSB_RETURN)); } else if(*(HSB_RETURN)==MCBSP_ERROR) { GEL_TextOut("TIMER TEST FAILED! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); } /* QDMA test results */ else if(*(HSB_RETURN)==QDMA_OK) { GEL_TextOut("QDMA TEST PASSED! (%x)\n","CnfTst Errors",1,1,0,*(HSB_RETURN)); } else if(*(HSB_RETURN)==QDMA_ERROR) { GEL_TextOut("QDMA TEST FAILED! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Error return value=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); } /* LEDS test results */ else if(*(HSB_RETURN)==LEDS_OK) { GEL_TextOut("LEDS TEST PASSED! (%x)\n","CnfTst Errors",1,1,0,*(HSB_RETURN)); } else if(*(HSB_RETURN)==LEDS_ERROR) { GEL_TextOut("LEDS TEST FAILED! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); } /* CODEC test results */ else if((unsigned)*(HSB_RETURN)==CODEC_OK) { GEL_TextOut("CODEC TEST PASSED! (%x)\n","CnfTst Errors",1,1,0,*(HSB_RETURN)); } else if((unsigned)*(HSB_RETURN)==CODEC_ERRTN) { GEL_TextOut("CODEC TONE TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Error in Control Reg=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); } else if((unsigned)*(HSB_RETURN)==CODEC_ERRCD) { GEL_TextOut("CODEC CD/MIC TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Error in Control Reg=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM2)); } else if((unsigned)*(HSB_RETURN)==CODEC_ERROR) { GEL_TextOut("CODEC TONE+CD/MIC TEST ERROR! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Error in Tone Control Reg=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); GEL_TextOut("Error in CD/MIC Control Reg=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM2)); } /* PGMEM test results */ else if((unsigned)*(HSB_RETURN)==PGMEM_OK) { GEL_TextOut("PGMEM TEST PASSED! (%x)\n","CnfTst Errors",1,1,0,*(HSB_RETURN)); GEL_TextOut("Value Written=%x\n","CnfTst Errors",1,2,0,*(HSB_IDPARM1)); GEL_TextOut("First Address=%x\n","CnfTst Errors",1,3,0,(*(HSB_IDPARM2)+0x80000000)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",1,4,0,*(HSB_IDPARM3)); } else if((unsigned)*(HSB_RETURN)==PGMEM_ERROR) { GEL_TextOut("PGMEM TEST FAILED! (%x)\n","CnfTst Errors",2,1,0,*(HSB_RETURN)); GEL_TextOut("Total errors=%x\n","CnfTst Errors",2,2,0,*(HSB_IDPARM1)); GEL_TextOut("Total Locations=%x\n","CnfTst Errors",2,3,0,*(HSB_IDPARM3)); } /* Unknown command */ else if((unsigned)*(HSB_RETURN)==DEFAULT_ERROR) { GEL_TextOut("UNKNOWN Command sent to DSP! (%x)\n","CnfTst Errors",0,1,0,*(HSB_RETURN)); } /* Test Disabled */ else if((unsigned)*(HSB_RETURN)==TEST_DISABLED) { GEL_TextOut("Test Disabled on DSP! (%x)\n","CnfTst Errors",0,1,0,*(HSB_RETURN)); } /* Default */ else { GEL_TextOut("No Error Code Returned! (%x)\n","CnfTst Errors",0,1,0,*(HSB_RETURN)); } } /* Reads and decodes STATUS word of HSB */ ReadStatus() { if((unsigned)*(HSB_STATUS)==HOST_RECEIVE_HAND_SHAKING_INFO) { GEL_TextOut("Hand Shake Complete!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_STATUS)==HOST_STATUS_INPUT_READY) { GEL_TextOut("HOST command READY!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_STATUS)==HOST_STATUS_END_PROCESSING) { GEL_TextOut("HOST Requested End of Processing!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_STATUS)==DSP_STATUS_OUTPUT_READY) { GEL_TextOut("DSP Ready for HOST Command!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_STATUS)==DSP_PROCESSING_COMMAND) { GEL_TextOut("DSP Processing a HOST Command!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_STATUS)==0x0) { GEL_TextOut("DSP Waiting for HOST ACK!\n","CnfTst Errors",0,1,0,); } else { GEL_TextOut("Unknown Status! (%x)\n","CnfTst Errors",0,1,0,*(HSB_STATUS)); } } /* Reads and decodes COMMAND word of HSB */ ReadCommand() { if((unsigned)*(HSB_COMMAND)==ISRAM) { GEL_TextOut("ISRAM Test!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_COMMAND)==SDRAM) { GEL_TextOut("SDRAM Test!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_COMMAND)==FLASH) { GEL_TextOut("FLASH Test!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_COMMAND)==MCBSP) { GEL_TextOut("MCBSP Test!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_COMMAND)==TIMER) { GEL_TextOut("TIMER Test!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_COMMAND)==QDMA) { GEL_TextOut("QDMA Test!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_COMMAND)==LEDS) { GEL_TextOut("LEDS Test!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_COMMAND)==CODEC) { GEL_TextOut("CODEC Test!\n","CnfTst Errors",0,1,0,); } else if((unsigned)*(HSB_COMMAND)==PGMEM) { GEL_TextOut("PGMEM Test!\n","CnfTst Errors",0,1,0,); } else { GEL_TextOut("Unknown Command! (%x)\n","CnfTst Errors",0,1,0,*(HSB_COMMAND)); } } /* Read Dip switches */ Get_Dips() { GEL_TextOut("Get USER_DIPS (%x) ","CnfTst Errors",2,1,0,user_dip_settings); if(user_dip_settings==0x0f000000) GEL_TextOut("ALL USERSW OFF\n","CnfTst Errors",2,1,0,); else if(user_dip_settings==0x0e000000) GEL_TextOut("USERSW1\n","CnfTst Errors",2,1,0,); else if(user_dip_settings==0x0d000000) GEL_TextOut("USERSW2\n","CnfTst Errors",2,1,0,); else if(user_dip_settings==0x0c000000) GEL_TextOut("USERSW2+USERSW1\n","CnfTst Errors",2,1,0,); else if(user_dip_settings==0x0b000000) GEL_TextOut("USERSW3\n","CnfTst Errors",2,1,0,); else if(user_dip_settings==0x0a000000) GEL_TextOut("USERSW3+USERSW1\n","CnfTst Errors",2,1,0,); else if(user_dip_settings==0x09000000) GEL_TextOut("USERSW3+USERSW2\n","CnfTst Errors",2,1,0,); else if(user_dip_settings==0x08000000) GEL_TextOut("USERSW3+USERSW2+USERSW1\n","CnfTst Errors",2,1,0,); GEL_MemoryFill(HSB_IDPARM3,0,0x1,user_dip_settings); /* Write parameter for LEDS command */ } /* Set Dip switches */ Set_Dips(value) { GEL_MemoryFill(0x0000B238,0,0x1,value); /* Write user_dip_settings memory location */ GEL_MemoryFill(HSB_IDPARM3,0,0x1,value); /* Write parameter for LEDS command */ GEL_TextOut("Set USER_DIPS (%x) ","CnfTst Errors",2,1,0,value); if(value==0x0f000000) GEL_TextOut("ALL USERSW OFF\n","CnfTst Errors",2,1,0,); else if(value==0x0e000000) GEL_TextOut("USERSW1\n","CnfTst Errors",2,1,0,); else if(value==0x0d000000) GEL_TextOut("USERSW2\n","CnfTst Errors",2,1,0,); else if(value==0x0c000000) GEL_TextOut("USERSW2+USERSW1\n","CnfTst Errors",2,1,0,); else if(value==0x0b000000) GEL_TextOut("USERSW3\n","CnfTst Errors",2,1,0,); else if(value==0x0a000000) GEL_TextOut("USERSW3+USERSW1\n","CnfTst Errors",2,1,0,); else if(value==0x09000000) GEL_TextOut("USERSW3+USERSW2\n","CnfTst Errors",2,1,0,); else if(value==0x08000000) GEL_TextOut("USERSW3+USERSW2+USERSW1\n","CnfTst Errors",2,1,0,); } Set_USERSW1() { GEL_MemoryFill(0x0000B238,0,0x1,0x0e000000); /* Write user_dip_settings memory location */ GEL_MemoryFill(HSB_IDPARM3,0,0x1,0x0e000000); /* Write parameter for LEDS command */ GEL_TextOut("Set USER_DIPS (%x) USERSW1\n","CnfTst Errors",2,1,0,0x0e000000); } Set_USERSW2() { GEL_MemoryFill(0x0000B238,0,0x1,0x0d000000); /* Write user_dip_settings memory location */ GEL_MemoryFill(HSB_IDPARM3,0,0x1,0x0d000000); /* Write parameter for LEDS command */ GEL_TextOut("Set USER_DIPS (%x) USERSW2\n","CnfTst Errors",2,1,0,0x0d000000); } Set_USERSW3() { GEL_MemoryFill(0x0000B238,0,0x1,0x0b000000); /* Write user_dip_settings memory location */ GEL_MemoryFill(HSB_IDPARM3,0,0x1,0x0b000000); /* Write parameter for LEDS command */ GEL_TextOut("Set USER_DIPS (%x) USERSW3\n","CnfTst Errors",2,1,0,0x0b000000); }