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.

Initial Boot Loader PLL Configuration

Other Parts Discussed in Thread: TMS320C6678

Hello, we are modifying the Initial Boot Loader that ships with the MCSDK to run on a custom board that uses the TMS320C6678.  We are having trouble finding correct  values for the PLL settings in the following IBL files:

  • "I2CROM.map.pre"
  • Equivalent parameters in the I2CONFIG.gel file

We copied the PLL fix into the IBL so it runs first before the rest of the IBL.

We are running a 156.25MHz clock as opposed to the EVMC6678 100MHz clock.  Right now we are using a multiplier of 64 and divider of 10, however, this seems to be failing.

Any help would be great.  Thanks!

  • Hi, I recall an earlier thread on PLL programming: http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/117294.aspx

    I believe we had suggested using PLLM = 63 and PLLD = 4 for a 156.25MHz clock. I am not too familiar with the Bootloader so not sure if this applies to the IBL settings as well. Please ignore if I am chasing a different issue here.

  • Yes, you are correct.  This is the same board, just a setting the PLLs via a different method, this time during boot.  The original multiplier of 63 and PLLD of 4 was correct for the GEL file because it was setting the registers directly (thus following the equations shown in the datasheets).  However, the parameters in the IBL seem to be abstracted from the low lying equation as the original file contained a multiplier of 16 and a divider of 2.  Thus 100MHz * 16 / 2 = 800MHz (for the EVMC6678)

    Without a way of verifying what happens to these variables, we assumed that CLK = CLKIN * Multiplier / Divider, so CLK = 156.25  * 64 / 10 = 1000MHz.

    But this seems to be failing.  Any ideas where we could go to find out how to set the PLLs in the IBL?

     

    Thanks Aditya!

  • I have forwarded your request to the folks who dealt directly with the IBL. Can you give more details on the the nature of failure that you see?

  • Hello,

    You may try to modify the ibl\src\util\i2cConfig\i2cConfig.gel to change the main PLL settings and re-program the IBL and boot config table:

    menuitem "EVM c6678 IBL";

    hotmenu setConfig_c6678_main()
    {
        ibl.iblMagic = ibl_MAGIC_VALUE;
        ibl.iblEvmType = ibl_EVM_C6678L;

        /* Main PLL: 100 MHz reference, 1GHz output */
        ibl.pllConfig[ibl_MAIN_PLL].doEnable      = 1;
        ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
        ibl.pllConfig[ibl_MAIN_PLL].mult          = 32;
        ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 5;
        ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;

        ...

    }

    You may change the i2crom.pre, but that will only affect the PLL running in the RBL, the above change will set the main PLL clock to 1GHZ in IBL on your board.

     

    Regards,

    Hao.

  • Hao, thank you for your help.  We will try this and report back with our results.