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.

[C6678, IBL] Relation ship between iblmain.c and iblinit.c

Hi,

I'm very confusing with IBL from MCSDK_2_01_02_06.
I found two main functions in IBL package. These are :

  • main () from iblinit.c
  • main () from iblmain.c

What is intended for these programs ? I can't understand the relationship between these programs.
Do you have any documents for IBL ? Please note I have read the documents under <mcsdk_ver>/tools/boot_loader/ibl/doc folder but these do not answer to my questions. (....maybe, my problem in English)

I briefly checked the source code to understand its behavior
I want to know how we can apply IBL to user's target board, rather than EVM.  So I want to understand the behavior of IBL correctly.
And my current understanding is as below. Please note I'm focusing to the implementations for C6678.

  • main () from iblinit.c
    - read IBL Boot Map from external device via I2C/SPI I/F to understand the pointers to IBL Configuration Parameter and Boot Table, endianess, etc...
    - initialize IBL structure by reading IBL Configuration Parameter from external device.
    - initialize PLLs (MAIN/DDR/NET) if IBL structure is being enabled to configure PLLs
    - enable EDC if it is enabled at compile time
    - branch ROM and re-start boot sequence if it is enabled at compile time 
    - decode Boot Table and branch to the application

    So, no initialization for EMIF/DDR happens. Is this program intended for secondary boot loader for the user application ?
    Also, what is Boot Map and IBL Configuration Parameter ? How can users create these image on external device ? i2cConfig ?  

  • main () from iblmain.c
    - First of all, the control of this program completely relies on the configurations of IBL structure, but it looks un-initialized. Who initialize IBL structure ?
    - Assuming IBL strucutre is being initialized correctly, this program works to initialize EMIF I/F for DDR (If PLL re-initialization is being enabled at compile time, re-configure all PLLs and EMIF) and lastly boot from appropriate boot device.

Any suggestions will be helpful. Thanks.

Kawada