This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PLL Config on C5505 (.gel File)

Hi,

The .gel I'm using is the one that came with the usbstick (that uses VC5505), but my target is a C5505.

The .gel file is attached:

/********************************************************************/
/* usbstk5505.gel                                                   */
/* Version 1.02                                                     */
/*                                                                  */
/* This GEL file is to be used with the TMS320C25505 DSP 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                                                */
/*     v1.01        Added peripheral reset                          */
/*     v1.02        Added Interrupt Vector Pointer                  */
/********************************************************************/
StartUp()
{
    C5505_MapInit();
}

/*--------------------------------------------------------------*/
/* OnTargetConnect() -- this function is called after a target  */
/* connect.                                                     */
/*--------------------------------------------------------------*/
OnTargetConnect()
{
    GEL_Reset();
    Peripheral_Reset();
    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 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).    */
C5505_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.00 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 *)CGCR2@IO = 0x8000;
    *(short *)CGCR4@IO = 0x0000;
    *(short *)CGCR3@IO = 0x0806;
    *(short *)CGCR1@IO = 0x82fa; 

    /* Wait for PLL lock */
    for(i=0;i<0x7fff;i++);

    /* Switch to PLL clk */ 
    *(short *)CCR2@IO = 0x1;

    GEL_TextOut("PLL Init Done.");
    
}

In this .gel the PLL is configured with:

*(short *)CGCR1@IO = 0x82fa;

This doesn't match with the expected for the VC5505 (0x82F4) nor for the C5505 (0x8BE8).

When I use 0x82FA or 0x82F4 I'm able to run my code (blinking led with RTC alarm).

When I use 0x8BE8 I have the following errors:

 

C55xx: GEL Output: Reset Peripherals is complete.

C55xx: GEL Output: Configuring PLL (100.00 MHz).

C55xx: GEL Output: PLL Init Done.C55xx: GEL Output: Target Connection Complete.

C55xx: Trouble Reading Register AR3: (Error -1146 @ 0xA) Device ID is not recognized or is not supported by driver. Confirm device and emulator configuration is correct, or update device driver. (Release 5.0.333.0) 

C55xx: Trouble Reading Memory Block at 0xff6adc on Page 0 of Length 0x381: (Error -1146 @ 0xFF6B14) Device ID is not recognized or is not supported by driver. Confirm device and emulator configuration is correct, or update device driver. (Release 5.0.333.0) 

 

Are there any other changes to make in this .gel file in order to use it with C5505?

 

Regards,

Alex