I’m using ARM9_STR91X_IAR project , and I can execute it from FLASH successfully .
Now I want to copy the image from flash to ram and execute it from ram .
I have IAP bootloader to do copy work then jump to ram .
There is a link file : lnkarm_flash.xcl
I don’t know how to modify it to support execute from ram .
I refer some example file lnkarm_ram.xcl in the IAR installation directory . And I modify the FreeRTOS’s lnkarm_flash.xcl of the following :
// Code memory in flash
//-DROMSTART=0x00000000 Marked by Paul 96.4.25
//-DROMEND=0x00080000 Marked by Paul 96.4.25
//-DROMSTART=0x00080000
//-DROMEND=0x003FFFFF
//-DVECSTART=ROMSTART Marked by Paul 96.4.25
// Data memory
-DRAMSTART=0x4000000
-DRAMEND=0x04018000
-DROMSTART=RAMSTART
-DROMEND=RAMEND
…
But when I make my workspace , it will generate some errors during linking :
Building configuration: RTOSDemo - ARM
Updating build tree…
Linking
Error[e16]: Segment DATA_Z (size: 0x123c8 align: 0x2) is too long for segment definition. At least 0x68e3 more
bytes needed. The problem occurred while processing the segment placement command
"-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND", where at the moment of placement the available
memory ranges were "CODE:400c51a-4018000"
Reserved ranges relevant to this placement:
4000000-4000107 INTVEC
4000108-400035b ICODE
400035c-400a1cb CODE
400a1cc-400a1e3 INITTAB
400a1e4-400aa2b DATA_ID
400aa2c-400bcd0 DATA_C
400bcd1-4018000 DATA_I
Total number of errors: 1
Total number of warnings: 0