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.

TMS320C6678: IBL DDR3 initialization failure evm c6678

Part Number: TMS320C6678

Hello,

I'm trying to test the uart example for I2C over NAND boot on c6678 evm and I see the following output on Teraterm :

IBL version: 1.0.0.17
IBL: DDR INITIALIZATION FAILED
IBL Result code 0K

Is there any configuration setting I'm missing? I tried both 666.7 and 333.3 MHz clock values for DDR3 but I get the same error in both cases.

Appreciate your help.

Thanks,

Viney

  • Hi Viney,

    I've forwarded this to the experts. Their feedback should be posted here. But have you made some changes in DDR initialization?

    BR
    Tsvetolin Shulev
  • I didn't make any changes to the DDR initialization.

    Does the Main, PA, DDR PLLs have to be initialized in both iblInit() as well as iblMain()?

    Thanks,
    Viney
  • Viney,

    Can you confirm that you are able to connect to the EVM using CCS and see the GEL initialize the DDR correctly?  The error message, you are reporting comes from deviceDdrConfig in C66x.c . that function is called from iblMain.c. IblInit doesn`t configure DDR or clocks device PLL as you can see from the file iblInit.c.

    The boot flow  on the C667x EVM is as follows:

    • FPGA reads the boot switches and boot the DSP in I2C EEPROM mode.
    • C667x run IBL Init from EEPROM with PLL in bypass.
    • IBL Init initializes device PLL as per recommend sequence  and scans the boot switches
    • BAsed on the boot switches the IBL will either choose to re-enter Boot ROM to load the application or load and jump to full IBL code.
    • If it entered ROM, then the ROM bootloader will load the application 
    • If IBL is loaded and is running, then it will configure the boot media, other clocks, DDR based on the IBL parameters. It will then load the application 

    Hope this helps.

    Regards,

    Rahul

  • Rahul,

    I was able to connect to the EVM and the .gel file I loaded (evmc6678l.gel) initialized the DDR as expected.

    As you said, the error happens when the IBL code is running. I put in some debug code inside deviceDdrConfig() and noticed that it never gets inside these three loops :

    if (ibl.pllConfig[ibl_MAIN_PLL].doEnable == TRUE)
    if (ibl.pllConfig[ibl_NET_PLL].doEnable == TRUE)
    if (ibl.pllConfig[ibl_DDR_PLL].doEnable == TRUE)

    All the doEnables are False.

    Thanks,
    Viney