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.

CCS/TMS320F28335: SYS/BIOS v6_76_01_12: What is purpose of "Enable Boot from flash"? My Application boots from flash wthout enabling it.

Guru 20045 points
Part Number: TMS320F28335
Other Parts Discussed in Thread: SYSBIOS

Tool/software: Code Composer Studio

Hello,

What is purpose of "Enable Boot from flash" in SYS/BIOS - Boot/Startup Options?

My application boots from flash without it being selected.

If I do select it, the linker gives the following error.

"../TMS320F28335.cmd", line 98: error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section "codestart" size 0x2 page 0. Available memory ranges:
BEGIN size: 0x2 unused: 0x0 max hole: 0x0
error #10010: errors encountered during linking; "XXXX.out" not built

Stephen

  • Ok...I found the following shown below.  I also found something similar at https://processors.wiki.ti.com/index.php/SYS/BIOS_for_the_28x.

    Should it be set to true or false.  It is currently set to false.  If I set it to true, I get the previously mention linker error.

    The BEGIN memory area is only 2 16-bits in length.  The CSM_PWL begins right after it.

    I don't think 32 bits is big enough for a Long Branch to a Flash address.

    What should I do?

    MEMORY
    {
    PAGE 0: /* Program Memory */

    FLASH : origin = 0x300000, length = 0x03FF80 /* on-chip FLASH */
    CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Program with all 0x0000 when CSM is in use. */
    BEGIN : origin = 0x33FFF6, length = 0x000002 /* Used for "boot to Flash" bootloader mode. */
    CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* CSM password locations in FLASH */

    metaonly config Boot.bootFromFlash  // module-wide

     

    index URL

    Boot from FLASH flag, default is false

    Configuration settings

    Boot.bootFromFlash = Bool false;

     

    DETAILS

    Set to true to enable booting from FLASH. When set to true, a long branch (LB) to the c_int00 entry point will be placed at the BEGIN section address defined in the linker command file.

  • Hi Steven,

    Perhaps the linker is still placing another entry function at BEGIN; despite setting bootFromFlash to true. Essentially, you want the entry point to be the SYSBIOS startup function rather than c_init(). Can you verify your application linker script or link options are specifying the entry point?

    Regards,
    Derrick

  • Hello Derrick,

    My application starts up in the following order:

    1. CodeStartBranch.asm:  calls _c_int00,  Previously the there was a linker? option to specify the startup file/function, but now I don't see that option.  I am using C2000 compiler version 20.2.1.LTS.

    2. C:\ti\bios_6_76_01_12\packages\ti\targets\rts2800\boot_cg.asm:   Contains _c_int00

    3. main()

    There is only one linker command file (TMS320F28335.cmd) that was auto-generated when for the project was created and I didn't change it.

    Stephen

  • Steven,

    To be clear, which core(s) are you attempting to boot from flash?

    1. C28 Cores
      1. Booting from flash defaults to true

    2. CM ARM Core
      1. Booting from flash defaults to true

    Could you share the explicit code in your application's kernel configuration (*.cfg) file?

    Regards,
    Derrick

  • I am able to boot from flash even with Boot.bootFromFlash = false.  It seems like it defaults to false in the GUI.

    There's only one core in the TMS320F28335 and that is the C28x core.

    app3.cfg

  • Steven,

    I downloaded and inspected your kernel configuration. I was surprised to learn that it's using ti.catalog.c2800.init.Boot.

    Based on the device you're using; this seems correct to be the correct module.

    It appears that by configuring bootFromFlash as true causes the kernel configuration to create a new output section called .ti_catalog_c2800_init_begin which is placed at BEGIN. This section contains the .text:.bootCodeSection.

    Could you verify .text:.bootCodeSection output section does not exist in your *.map file when bootFromFlash is false? It would appear the configuration is attempting to place content redundantly.

    Thanks,
    Derrick