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.

Issue in IBL booting from EEPROM

Other Parts Discussed in Thread: TMS320C6678

Hi,

We have designed a board having four TMS320C6678 DSP processors silicon rev 2.0.

We are facing an issue in booting the IBL from EEPROM. EEPROM taking long time to read the IBL and boot it , which is not acceptable.

Using oscilloscope, we also noted that EEPROM takes 18seconds(without POR or full reset). to  boot the IBL. And the behavior is same in all the DSP's .

Not much improvement after Configuring I2C Speed to 400 KHz.

Is there any IBL customize required for faster EEPROM Boot ?

Please guide ,

  • Vidya,

    Do you see the same behavior on the C6678 EVM. What are the differences between the EVM and your custom board.

    The device boots from I2C with the PLLs in bypass so I hope you are configuring the boot parameter table correctly to speed up the I2C speed to speed up the boot. Is there any difference in the IBL size between the EVM and on the custom board.

    Regards,
    Rahul
  • Hi Rahul,

    Thanks for your reply,

    We are using default boot parameter table in the IBL .

    Can you tell us how to configure the boot parameter table in ibl and will it be effective after recompilation.

  • Hi Rahul,

    Any update on this.
  • Hi Rahul,

    Some more inputs for you,

    When we debug the boot time issue, we identified iblBootBtbl function takes 13 - 15 seconds to load the data from I2C. Any optimization required in this function.
    Please let us know,
  • Vidya,

    The boot parameter table appended to the IBL to modify the ROM defaults is set in the i2crom.map.pre that is provided in the folder \ibl\src\make\ibl_c66x

    Please check the makestg2 file under ibl/src/make to see how romparse is used to append the boot parameter table to the IBL binary.

    Within the IBL code, I2C speed is set in the function iblInitI2c using the function hwI2Cinit. Can you check if your SOC clocks have been initialized to max clock. PLL configuration for the SOC in IBL is done in the file IBLinit.c where the devicePllConfig is called to configure the main PLL.

    Few other follow up questions. How big is your application(BTBL) image? Does your entire application boot from the I2C EEPROM or does it boot from NOR/NAND or other boot mode. I2C is one of the slower boot modes but what your reporting seems like the device is booting in PLL in bypass mode or with very low I2C clocks.

    Regards,
    Rahul

  • Hi Rahul,

    Thanks for your inputs. We modified the I2c Parameter in i2crom.map.pre but we dint observe the change on IBL booting. We observed the 1st stage of ibl loads within seconds and executes the devicePllConfig and going to iblBootBtbl. In iblBootBtbl its reads data from I2C for 14-15 seconds. In IBL we are not doing much it is as like EVM and Our application boots from NOR.
  • Could you clarify the size of the application binary. Have you had a chance to look at the SOC PLL or the I2C clock after the IBL is loaded. Are the SOC PLLs configured? You can check this after the boot completes by looking at the PLL configuration register to see if the OD, PLLM values are set correctly.

    Regards,
    Rahul
  • Hi,

    Size of IBL image is 62.9KB and the PLL configured for 1000MHz core clock and 100KHz I2C clock in IBL. Once, the devicePLLconfig function invoked in IBL , the sysclkout is measured to 166Mhz.

    Main PLL config in device.c

     /* 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          = 20;
            ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 2;
            ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
    
    Please guide to solve this issue,

  • Vidya,

    Is your custom board also using 100Mhz reference input clock. If you notice the MAin PLL Out is obtained as (100*20/2) using the Multiplier and post divider. If your input clock is different then you need to set the multiplier and post div as described in section 2.5.4 in the datasheet.

    Is the measured SYSCLKout the value of Main PLL or SYSCLK1/6 value?

    Regards,
    Rahul

  • is the measured SYSCLKout the value of Main PLL or SYSCLK1/6 value?
    
    

    My Main Pll and SYSCLKout are found ok.

    Please let us why iblBootBtbl function execution is slow.

  • Have you tried the suggestion of modifying the I2C clock in the boot parameter table in i2crom.map.pre. this is where the I2C clock is modified for IBL I2C boot.

    By default, it is set to 200 Khz, you might try to set that to a higher clock and see if this makes a difference.

    Regards,
    Rahul
  • Hi,

    We have tried to maximum of 400KHz and also we have mentioned the same in our previous post.

    There is no difference in booting time even after changing the I2C clock.
  • Hi Rahul,

    Am also facing the same issue as Vidya mentioned above. Have this issue got resolved ?
    Could you please give inputs to me.

    Regards
    Karthick