Using freeRTOS with RM48 and IAR-Tools

menggaardp wrote on Tuesday, January 21, 2014:

Has anybody tried and successeded making a project with RM48L952 and freeRTOS in IAR-embedded Workbench?
I am trying but get link errors like this:
Error[Lp002]: relocation failed: value out of range or illegal: 0x7fff078
Kind : R_ARM_LDR_PC_G0[0x4]
Location: 0x000010ac
Module: .\App02\Debug\Obj\portASM.o
Section: 6 (.text)
Offset: 0x0
Target : 0x0800012c
Module: .\App02\Debug\Obj\tasks.o
Section: 8 (.bss)
Offset: 0x0

I have taken demo-code for the CCS and corrected errors to make it suit the IAR-tools.
Has anybody had the success in making it work?

Best regards
Michael c".)

rtel wrote on Tuesday, January 21, 2014:

Branch/data referencing instructions can often only branch/reference data a certain distance from their own position in the memory map. For example, a branch instruction may encode a fixed number of bits for the branch target, and if that number of bits were 4 (exaggerating) then you could only branch a maximum of 0xff bytes away from the location of the branch instruction itself.

The error sounds like you are using an assembly instruction to try and reference pxCurrentTCB when pxCurrentTCB is too far away for that particular assembly instruction to be used. I suspect the code you have copied this from will not be referencing the variable directly, but through a constant that holds the address of the variable. You can then load the full 32-bit address of the variable into a register and dereference the address to get the variable’s value.


menggaardp wrote on Wednesday, January 22, 2014:

Thank You for the fine reply, - it solved my troubles.
Well, now I can link my program, it still needs to prove that it can run :slight_smile:
I changed a const-link in portasm.asm from DCW to DWD, that made the difference!

Best regards
Michael c".)