Hello. I want to relocate some function’s from Flash to a different position in PSRAM for a bootloader.
The problem is: Keil generates absolute jumps in the original function. With relative jumps whould it work.
I have copied the original functions to the RAM like this: ------------ Flash function a at 0xC01000 ------------ Flash function b at 0xC02000 ------------ Flash function c at 0xC02800 ->(to copy in RAM at 0xE00000) ------------
Now I copy the c-function from 0xC02800 to RAM at 0xE00000.
The Problem: In the function c is a IF cause, that jumps to the end of the function at 0xC02872:
JMPA cc_UC, 0xC02872 ( +72 Bytes)
If i execute this copied function at the new position (E00000), the jump is located to E02872
JMPA cc_UC, 0xE02872 ( + 2872 Bytes)
and not to 0xE00072 ( + 72 Bytes).
Is there a compiler switch to generate relative jumps (JMPR, CALLR) instead to absolute Jumps (JMPA+,JMPA-,CALLA)?
Or is there a other solution for this problem?
(I need to use the HCompact model, to access all functions and the whole address-space for variables.)
Thanks