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.

TMS570LC4357: Linker changing whenever changes mage in HALCOGEN

Part Number: TMS570LC4357
Other Parts Discussed in Thread: HALCOGEN

Hi,

I have changed the linker file according to custom requirement. Whenever I am making changes in the HALCOGEN the linker script (HL_sys_link.cmd) is changing. This is not a desired behavior. Is there any way that the linker script won't be affected every time we make changes in HALCOGEN.

Regards,

Ariya

  • Hi Ariya,

    The linker cmd file should not be changed when you change the configuration in HAL GUI.

    Would you please let me know which part is changed? Which configuration causes the linker cmd changes in your testing?

  • Hi,

    This is our custom code:

    /* Memory Map */

    MEMORY
    {
    /* USER CODE BEGIN (2) */
    VECTORS (X) : origin=0x002000A0 length=0x00000020
    MYSEGMENT1(RX): origin=0x002000C0 length=0x00000020
    MYSEGMENT2(RX): origin=0x002000E0 length=0x00000020
    MYSEGMENT3(RX): origin=0x00200100 length=0x00019000
    FLASH1 (RX) : origin=0x00219100 length= 0x001E6EFF
    STACKS (RW) : origin=0x08000000 length=0x00000700
    RAM (RW) : origin=0x08000700 length=0x0007f900
    /* USER CODE END */
    VECTORS (X) : origin=0x00000000 length=0x00000020
    FLASH0 (RX) : origin=0x00000020 length=0x001FFFE0
    FLASH1 (RX) : origin=0x00200000 length=0x00200000
    STACKS (RW) : origin=0x08000000 length=0x00000700
    RAM (RW) : origin=0x08000700 length=0x0007f900

    /* USER CODE BEGIN (3) */
    /* USER CODE END */
    }

    /* USER CODE BEGIN (4) */
    /* USER CODE END */


    /*----------------------------------------------------------------------------*/
    /* Section Configuration */

    SECTIONS
    {
    /* USER CODE BEGIN (5) */
    .intvecs : {} > VECTORS
    .text palign(32) : {} > FLASH1
    .const palign(32) : {} > FLASH1
    .cinit palign(32) : {} > FLASH1
    .pinit palign(32) : {} > FLASH1
    .bss : {} > RAM
    .data : {} > RAM
    .sysmem : {} > RAM
    .PCTESTSEGMENT1 : {} > MYSEGMENT1
    .PCTESTSEGMENT2 : {} > MYSEGMENT2
    .SAFETYCRCFUNCTIONS : {} > MYSEGMENT3
    FEE_TEXT_SECTION : {} > FLASH1
    FEE_CONST_SECTION : {} > FLASH1
    FEE_DATA_SECTION : {} > RAM
    /* USER CODE END */
    .intvecs : {} > VECTORS
    .text align(32) : {} > FLASH0 | FLASH1
    .const align(32) : {} > FLASH0 | FLASH1
    .cinit align(32) : {} > FLASH0 | FLASH1
    .pinit align(32) : {} > FLASH0 | FLASH1
    .bss : {} > RAM
    .data : {} > RAM
    .sysmem : {} > RAM

    FEE_TEXT_SECTION : {} > FLASH0 | FLASH1
    FEE_CONST_SECTION : {} > FLASH0 | FLASH1
    FEE_DATA_SECTION : {} > RAM

    /* USER CODE BEGIN (6) */
    LOG_DATA : START( ulLOGStartAddr ), END( ulLOGEndAddr ) > RAM

    .sl_stflash_SRAM : RUN = RAM, LOAD = FLASH1, LOAD_START(high_handler_load_start), LOAD_END(ulHighHandlerLoadEnd), LOAD_SIZE(high_handler_size), RUN_START( high_handler_start_addr ), RUN_END( ulHighHandlerEndAddr )
    /* USER CODE END */
    }

    This code changes every time any configuration is changed in the HALCOGEN.

    Regards,

    Ariya

  • Hi Ariya,

    The code between /* USER CODE BEGIN (x) */ and /* USER CODE END */ will not be changed. If you'd like to replace the HAL generated code with your own code in "USER CODE" section, please to comment out the HAL generated code using #if 0:

    MEMORY
    {
    /* USER CODE BEGIN (2) */
    VECTORS (X) : origin=0x002000A0 length=0x00000020
    MYSEGMENT1(RX): origin=0x002000C0 length=0x00000020
    MYSEGMENT2(RX): origin=0x002000E0 length=0x00000020
    MYSEGMENT3(RX): origin=0x00200100 length=0x00019000
    FLASH1 (RX) : origin=0x00219100 length= 0x001E6EFF
    STACKS (RW) : origin=0x08000000 length=0x00000700
    RAM (RW) : origin=0x08000700 length=0x0007f900

    #if 0
    /* USER CODE END */
    VECTORS (X) : origin=0x00000000 length=0x00000020
    FLASH0 (RX) : origin=0x00000020 length=0x001FFFE0
    FLASH1 (RX) : origin=0x00200000 length=0x00200000
    STACKS (RW) : origin=0x08000000 length=0x00000700
    RAM (RW) : origin=0x08000700 length=0x0007f900

    /* USER CODE BEGIN (3) */

    #endif


    /* USER CODE END */
    }

    /* USER CODE BEGIN (4) */
    /* USER CODE END */


    /*----------------------------------------------------------------------------*/
    /* Section Configuration */

    SECTIONS
    {
    /* USER CODE BEGIN (5) */
    .intvecs : {} > VECTORS
    .text palign(32) : {} > FLASH1
    .const palign(32) : {} > FLASH1
    .cinit palign(32) : {} > FLASH1
    .pinit palign(32) : {} > FLASH1
    .bss : {} > RAM
    .data : {} > RAM
    .sysmem : {} > RAM
    .PCTESTSEGMENT1 : {} > MYSEGMENT1
    .PCTESTSEGMENT2 : {} > MYSEGMENT2
    .SAFETYCRCFUNCTIONS : {} > MYSEGMENT3
    FEE_TEXT_SECTION : {} > FLASH1
    FEE_CONST_SECTION : {} > FLASH1
    FEE_DATA_SECTION : {} > RAM

    #if 0
    /* USER CODE END */
    .intvecs : {} > VECTORS
    .text align(32) : {} > FLASH0 | FLASH1
    .const align(32) : {} > FLASH0 | FLASH1
    .cinit align(32) : {} > FLASH0 | FLASH1
    .pinit align(32) : {} > FLASH0 | FLASH1
    .bss : {} > RAM
    .data : {} > RAM
    .sysmem : {} > RAM

    FEE_TEXT_SECTION : {} > FLASH0 | FLASH1
    FEE_CONST_SECTION : {} > FLASH0 | FLASH1
    FEE_DATA_SECTION : {} > RAM

    /* USER CODE BEGIN (6) */

    #endif


    LOG_DATA : START( ulLOGStartAddr ), END( ulLOGEndAddr ) > RAM

    .sl_stflash_SRAM : RUN = RAM, LOAD = FLASH1, LOAD_START(high_handler_load_start), LOAD_END(ulHighHandlerLoadEnd), LOAD_SIZE(high_handler_size), RUN_START( high_handler_start_addr ), RUN_END( ulHighHandlerEndAddr )
    /* USER CODE END */
    }