This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

scatter file causes linker error

Hello,
I'm trying to create a elf file with the help of a scatter file.
I'm using the RVCT 2.2.
This is my scatter file:

LOAD_FLASH 0x100000 0x80000 ; defines begin and size of the load region
{
  FLASH 0x100000 0x80000 ; defines begin and size of the int. Flash execute region
  {
    * (Reset, +FIRST)  ; interrupt vector has this  'Reset' attribute
    * (+RO)            ; places all remaining Read Only CODE and DATA in this section
  }

  IRAM_CODE 0x200000   ; defines begin of the int. Ram region
  {
    * (IntCode, +FIRST) ; places code with 'IntCode' attribute exactly at IRAM_BASE
    * (IntData)   ; places data with 'IntData' attribute here
  }

  XRAM_CODE 0x20000000  ; defines begin of the ext. Ram execute region
  {
    * (ExtCode)  ; places code with 'ExtCode' attribute exactly at XRAM_BASE
    * (ExtData)  ; places data with 'ExtData' attribute here
    * (+RW)      ; places all remaining Read/Write Code and Data in this section
  }

  XRAM_HEAP +0x0 UNINIT
  {

    * (ExtHeap)  ;  this heap size is defined implicitly via defined variables
    * (+ZI)
  }

  XRAM_STACK 0x21000000 UNINIT  ; stack is located on top of memory and grows downward
  {
    * (ExtStack)  ; this stack size is defined implicitly via defined stack areas in startup code
  }
}

I've also reimplemented the __user_initial_stackheap function (as recommended in linker user guide):

__value_in_regs struct __initial_stackheap __user_initial_stackheap(
        unsigned R0, unsigned SP, unsigned R2, unsigned SL)
{
    struct __initial_stackheap config;
    config.heap_base = (unsigned int)&Image$$XRAM_HEAP$$Base;
    config.heap_limit = (unsigned int)&Image$$XRAM_HEAP$$Limit;
    config.stack_base = (unsigned int)&Image$$XRAM_STACK$$Base;
    config.stack_limit = (unsigned int)&Image$$XRAM_STACK$$Limit;
    return config;
}

The linker returns following error:

Error: L6788E: Scatter-loading of execution region IRAM_CODE will cause the contents of execution region XRAM_HEAP to be

corrupted at run-time.
Error: L6788E: Scatter-loading of execution region IRAM_CODE will cause the contents of execution region XRAM_HEAP to be

corrupted at run-time.

I've no idea what this error causes. Can anyone say what is going wrong here?
Thanks in advance,

Greetings
Christian

0