modify data placement from RAM to SDRAM using the script icf file

Hello I am using e2 studio Version: 5.3.1.002 AND ssp1.2.2 with a custom board and a Synergy S5D9. And IAR compiler and lkinker . I get this error when I build the Project: Error[Lp011]: section placement failed unable to allocate space for sections/blocks with a total estimated minimum size of 0xa0f50 bytes (max align 0x8) in <[0x1ffe0000-0x2007ffff]> (total uncommitted space 0x9fe40).

I have shown in the *.map file, that the GUIX_XXXXX_especifications.o is placed in the SRAM región and it has grown a lot. I would like to place it in SDRAM región.

I m trying to do that, typing the S5D9.icf file. 

...

place at start of VECT_region  { ro section .vectors };
place in VECT_region           { ro section .vector.* };
place in ROMREG_region         { ro section .rom_registers };
place at start of FLASH_region { block VECT_INFO };
place in FLASH_region   { block LOCK_LOOKUP,
                          ro,
                          ro section .rodata,
                          block QSPI_NON_RETENTIVE_INIT_BLOCK,
                          block RAM_INIT_CODE,
                          block USB_DEV_DESC_BLK };
/* If DTC is used, put the DTC vector table at the start of SRAM.
This avoids memory holes due to 1K alignment required by it. */
place at start of RAM_region   { rw section .ssp_dtc_vector_table };                       
place in RAM_region     { rw,
                          rw section .noinit,
                          rw section .bss,
                          rw section .data,
                          block HW_LOCK,
                          rw section HEAP,
                          rw section .stack,
                          block RAM_CODE }
                 except { rw section .bss object GUIX_XXXXX_specifications.o };
place in DF_region      { ro section .data_flash };
place in SDRAM_region   { rw section .sdram, rw section .frame ,
                          rw section .bss object GUIX_XXXXX_specifications.o };
place in QSPI_region    { section .qspi_flash };
place in QSPI_region    { block QSPI_NON_RETENTIVE_BLOCK};
place in QSPI_region    { ro section .rodata object GUIX_XXXXX_resources.o };
place in RAM_region     { last section FREE_MEM};

...

But it doesn´t work. The map file doesn´t change.

Can you help me,please?

  • In reply to Jeremy:

    Hello, Jeremy.

    This issue is caused by the "Language Provider" (for ARM) in IAR build plugin.
    See the project property of "Preprocessor Include Path, Macros etc." -> "Entries" then you will see  "IAR Language Settings Provider for ARM [Shared]".
    The symbol __section_begin and __section_size are NOT defined there.
    That's why editor detects as undefined symbol.
    Workaround is to add those symbols in "CDT User Setting Entries" just above "IAR Language Settings Provider ..".

    IAR should fix it, but you still can ignore such warnings.

  • In reply to Jeremy:

    Ok, it is only that I didn't want to see errors.
    Thanks