We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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