Forum : ARM
Post Information | Post |
---|---|
December 11, 2007 - 1:37pm
|
hi, I'm using Reva v2.10 with RIDE (BN747) and an STR912FAW44X6. For my project i need to store parameter und structures in the flash, it should be possible to change the values so that they are persistent in flash. My program code is in flashbank0. flashbank1 (32kB) is reserved for another task of my project. My purpose is to write and erase an area in flashbank0 from my execution code which is in same bank. For this i need a function executed in ram, i know. I have adapted the linker scripts for my requirements. memory mapping >>> Quote: MEMORY this is for my USERSPACE section >>> Quote: .usertext : for example to use this : int __attribute__((section(".usertext"))) flash_var; for my ram function i have adapted the .data section in this way >>> Quote: .data : AT ( _sidata ) example of function declaration:__attribute__((section(".fastrun"))) void FMI_BANK0_Write(void) But when i want to run my program code, the linker reports an error like section.data[000037fc -> 00003a37] overlaps section .fastrun [000037fc -> 00003867] map report from linker >>> Quote: *(.glue_7t) I'm not an expert in view of linker syntax, but i don't understand why the .fastrun section is located in adresses which belongs to the flash (000037fc...). Maybe there is a simple mistake i made. Hope anyone can help me. thanks a lot in advance... |
my problem in a short way: How to run Code from RAM?
best regards
solution: using __attribute__ ((long_call, section (".data"))) instead of own section in .data section works fine
Hello,
if you use your own section in .data, adding "-mlong-calls" to GCC command-line (Options->Project->GCC-ARM->More) would do the trick too. Can you give it a try?
regards
Lionel
edit: in spite of adding this to options I'm not able to write my function in my own ram section, i can only use longcall in view of the .data section...
regards
a further problem: i can declare variable in my own flash section (.usertext), i can erase and write this section with the FMI library functions from ST executing from ram. But when i want to declare and initialize some global constant variables or structures in .usertext i get this error message again, but only in view of my .usertext section.
section .data[00003ac0->0000425b] overlaps section .usertext[00003ac0->00003ac0]
.data section is the part which will be copied in startup routine from flash0 to ram, for intializing some variables, right?In my Opinion the overlapping shouldn't happen because my .usertext section begins at address 0x0007000.
Maybe someone can help?
best regards