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.

UART staying in reset using PSP drivers when AIS booting from SPI flash

All,

We are using the pspdrivers_01_30_01 EDMA Uart driver in an application on a C6745. When this application is loaded over JTAG, with the following in the GEL file (no hardware initialisation):

OnTargetConnect( )
{
    GEL_TextOut( "\nc6747 DSP Startup Sequence\n\n" );
    /*
    Hardware initialisation disabled as application takes care of itself.

    Setup_System_Config( );         // Setup Pin Mux and other system module registers
    Setup_PLL();                    // Setup PLL0 (300MHz DSP, 133MHz EMIFs)

    Setup_Psc_All_On( );            // Setup All Power Domains

    Setup_EMIFA();                  // Async EMIF
    Setup_EMIFB();                  // Setup SDRAM
    */
    GEL_TextOut( "\nStartup Complete.\n\n" );
}

then the UART works perfectly. When the application is loaded from SPI flash by the AIS bootloader then the GIO objects are created successfully but GIO_write calls don't return.

If I connect with the debugger to the application after it has booted from flash I note that the PWREMU_MGMT register reads 0x00000002 (i.e. the UART is in reset), when loading from JTAG it is set to 0x00006002 (the UART is running). This register is explicitly set to 0x00006000 by the psp driver.

What could be causing this register write to fail? The PSC register (PSC 1 LPSC 13) indicates it is not in reset and the clock is running.

Thanks,

Stephen English

  • Can you perform the following:

    Experiment 1:

    1. Boot board from SPI flash
    2. Connect via CCS without a GEL file
    3. Load Program -> your .out file
    4. Run

    Experiment 2:

    1. Boot board from SPI flash
    2. Connect via CCS without a GEL file
    3. Load symbols for your .out file
    4. Put breakpoint at the start of your main function
    5. Reset the board and step through the code and see which function is not working as expected.

    The most likely explanation is that your GEL file is enabling something that is not done by your standalone code.

    Jeff