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/TMS570LC4357: Regarding dual boot system development

Part Number: TMS570LC4357
Other Parts Discussed in Thread: HALCOGEN

Tool/software: Code Composer Studio

Hello,

I 'd like to load the MCU with Boot loader and Operating system software separately.

I plan to use Halcogen, and I think that need to individual Halcogen projects to load these separatly.

I already check "sys_link.cmd" file, this file is automatically generated from Halcogen, but the Halcogen do not have the tab of memory configration.

In this case, I think that couldn't load each system separately, beacause both system use same adress.

Could you please tell me about how to set memory configration.

If you have recommendation, please give me advice.

Thanks,

Sho

  • Hi Sho,

    The HALCoGen do have tabs for SRAM and Flash. But the base address for Flash and SRAM are not changeable. The linker command files for both your bootloader and application are same.

    You need to modify the linker command manually: The following examples are for your reference:

    Linker CMD file for Bootloader (Only Memory section):

    MEMORY

    {

    /* USER CODE BEGIN (2) */

    /* USER CODE END */

    VECTORS (X) : origin=0x00000000 length=0x00000020 vfill = 0xffffffff

    FLASH0 (RX) : origin=0x00000020 length=0x001FFFE0 vfill = 0xffffffff

    FLASH1 (RX) : origin=0x00200000 length=0x00200000 vfill = 0xffffffff

    SRAM (RWX) : origin=0x08002000 length=0x0002D000

    STACK (RW) : origin=0x08000000 length=0x00002000

    /* USER CODE BEGIN (3) */

    /*

    ECC_VEC (R) : origin=0xf0400000 length=0x4 ECC={algorithm=algoL2R5F021, input_range=VECTORS }

    ECC_FLA0 (R) : origin=0xf0400000 + 0x4 length=0x3FFFC ECC={algorithm=algoL2R5F021, input_range=FLASH0 }

    ECC_FLA1 (R) : origin=0xf0440000 length=0x40000 ECC={algorithm=algoL2R5F021, input_range=FLASH1 }

    */

    #if 1

    ECC_VEC (R) : origin=(0xf0400000 + (start(VECTORS) >> 3))

    length=(size(VECTORS) >> 3)

    ECC={algorithm=algoL2R5F021, input_range=VECTORS}

    ECC_FLA0 (R) : origin=(0xf0400000 + (start(FLASH0) >> 3))

    length=(size(FLASH0) >> 3)

    ECC={algorithm=algoL2R5F021, input_range=FLASH0 }

    ECC_FLA1 (R) : origin=(0xf0400000 + (start(FLASH1) >> 3))

    length=(size(FLASH1) >> 3)

    ECC={algorithm=algoL2R5F021, input_range=FLASH1 }

    #endif

    /* USER CODE END */

    }

    Linker CMD file For Application:

    MEMORY

    {

    /* USER CODE BEGIN (2) */

    /* USER CODE END */

    VECTORS (X) : origin=0x00010020 length=0x00000020

    FLASH_CODE (RX) : origin=0x00010040 length=0x8000 - 0x40 fill=0xFFFFFFFF /*sector 4/5* for application */

    FLASH0 (RX) : origin=0x00018000 length=0x00200000 - 0x18000

    FLASH1 (RX) : origin=0x00200000 length=0x00200000

    STACKS (RW) : origin=0x08000000 length=0x00001500

    RAM (RW) : origin=0x08001500 length=0x0007EB00

    /* USER CODE BEGIN (3) */

    /* USER CODE END */

    }

  • Hello QJ, 

    Thanks for your information.

    I'll give it a try.

    Thanks,

    Sho