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.

Some questiones about bootloader in C6678

I have some questiones about bootloader in C6678 , help me please ...

1. There are 8 Cores in C6678 , how many times does the bootloader will be  executed  after  boot ?

    I think the bootloader may  execute in each core , but is it  execute in the same time or in order ?

2. When the C6678 boot , is the bootloader will load the program to each core or only core0?

3. How  does the bootloader know which program in  the flash is for core0 or other core ?

I am a beginner , SOS

  • For C6678 , Each  core reserved  the same set of memory space for bootloader , its a waste of memory , i want use these memory for stack , is it OK ?

  • Hi,

    The ROM boot Loader (RBL) execute on all cores but does different thinks:

    • core 0: execute the real boot loader
    • core 1..7: execute an "idle" instruction to wait for an interrupt from core 0 to start execution

    So, the core 0, depending on the selected boot mode, load the program and jump to the entry point. It is your core that, if required,  have to implement a secondary level bot loader and launch the other cores (by generating the interrupt for them). Your core 0 code have to load the code for slaves cores onto a shared memory area (on inside L2RAM of every core). .

    For instance, when you boot from EMIF16 (flash), only core 0 start executing from address 0x70000000.

    Note that the code used by core 0, if stored on a shared memory region (flash it is), can be shared with the others

    On the EVM, there is the IBL (intermediate Boot Loader) stored on E2PROM and it is launched by the RBL, but again it runs only on the core 0.

  • xi su said:

    For C6678 , Each  core reserved  the same set of memory space for bootloader , its a waste of memory , i want use these memory for stack , is it OK ?

    When the RBL jump to your code entry point you can reuse the bootloader memory as you want. If you configure the C6678 to load the application from an external channel (Ethernet, SRIO, ...) you must be sure that your image don't overwrite the RBL reserved area (usually the uninitialized data memory, as the stack, are not part of the boot image)

  • Quote : Your core 0 code have to load the code for slaves cores onto a shared memory area (on inside L2RAM of every core). 

    Is the bootloader execute in Core0 load the code for slaves cores automatic or i have to program the code to conplete this function ?

  • Xi Su,

    In addition to the Keystone Bootload User Guide, in the Training section of TI.com, there is a training video set for the C66x SOC architecture. It may be helpful for you to review all of the modules. In particular, the Bootloader Overview Module may help you understand some of the features of the bootloader better. You can find the complete video set here.

    In general, every bootmode is intended to allow the entire program be loaded and initialize some data, if needed. Some bootmodes include special methods to also initialize peripherals like the DDR EMIF or SRIO. The Bootloader User Guide tells you how each bootmode operates.

    As Alberto explained, CorePac0 will execute the RBL and then it can either download an Intermediate Boot Loader or it can download code into the program and data memory of all of the cores, plus the shared MSMC SRAM, plus the shared DDR3 memory once the DDR3 EMIF has been initialized.

    You posted another thread asking specifically about the NOR bootmode, which is specifically different from other bootmodes. So if your questions are only for a specific bootmode, please let us know that.

    Regards,
    RandyP

  • Thank you . 

    Because English is not my mother tongue ,  I cannot understand some videos of TI easily , so sorry.

    Now What confused me is , As Alberto explained, "CorePac0 will execute the RBL and then it can either download an Intermediate Boot Loader or it can download code into the program and data memory of all of the cores, plus the shared MSMC SRAM, plus the shared DDR3 memory once the DDR3 EMIF has been initialized."

    But its Bootloader execute in Core0 do download it automatic , or I have to program code to download it ?

  • Xi Su,

    The answers vary depending on the bootmode you are using. So if your questions are only for a specific bootmode, please let us know that.

    If you require something different than what is provided through the RBL functions described in the Bootloader User Guide and what is available through the MCSDK, and the MAD tools in particular, then you would have to program code to download it. This is not the common situation.

    The MAD Utils User Guide is the best place to to learn more about how the MAD tools work. Have you studied this document?

    You may also learn some helpful information from other online printed training materials on the TI Wiki Pages, searching for "C66x boot" (no quotes) or other keywords.

    Regards,
    RandyP

  • Sorry ,  my bootmode is SPI + NOR FLASH