Execute FreeRTOS from RAM

yuhleon wrote on Wednesday, April 25, 2007:

Hi all

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 .

Thanks.

nobody wrote on Wednesday, April 25, 2007:

This is an IAR file.  Take a look in your IAR installation directory for a RAM equivalent.

Dave.

yuhleon wrote on Wednesday, April 25, 2007:

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

nobody wrote on Wednesday, April 25, 2007:

You are now putting your executable code and data both in RAM and there is not enough space.

yuhleon wrote on Wednesday, April 25, 2007:

My Board only have 96 KBytes SRAM . So if I want put executable code and data both in RAM , it must need more then 96 KBytes of SRAM ?