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.

IBL understanding for C6678/ Questions about IBL



Hi,

I am trying to understand the code of IBL available for C6678.

I have few questions, If anybody could resolve it, that will great help for me.

1) Why there is two main functions available in IBL? one is in iblmain.c and another is in iblinit.c

2) How IBL reads bootmode value of swithces? I am unable to find out this in code.

3) How to define value of ROM_BOOT_PARAMS_ADDR_C6678 available in /src/device/c66x/target.h file.

4) Before starting IBL's main function how other initialization done? for example PLL and DDR.

  • HI Asmit ,

    The answers to some of your questions below :

    1) IBL is designed as a two stage bootloader, the iblinit and the iblmain. The iblinit does the PLL initialization and executes a PLL workaround code to get around a silicon bug in revision 1.0 chips and jumps back to Boot  ROM for non I2C boot modes. The ibl main is the main bootlaoder that does pulls ELF data from the boot device (NAND/NOR/TFTP ..) and launches it.

    2) The bootmode is fed to DSP from FPGA . The IBL Init reads this info from the FPGA via SPI interface .The initial boot is foced to I2C @ 0x51 by FPGA to take care of PLL workaround.

    4) The PLL settings(multiplers/dividers ) are defined in I2cConfig.gel . The DevicePllConfig function uses these settings to configure Main,DDR and PASS PLL .

    -Anil

     

  • Thanks Anil,

    Could any one please answer my third question?

  • Hi,

    With the above query, I also want to know that how can I debug IBL?

  • For your 3rd question. This variable is actually defined based on the parameter table locations of ROM boot loader. You cannot modify this. As for debugging, the source code is available and so is the .out file. You can step through the code from CCS.

    Thanks,

    Arun.