Hi All,
I am implementing a software upgrade mechanism (burning a new image into a flash memory area).
The problem: I don't know how to change the load region address at runtime.
Flash contains booter and application Additionally I allocated an area for new sw application on the same flash. After burning the new sw into the allocated area on the flash, I want to run the new sw instead of the old one.
Booter already knows how to jump to the new code in the flash. The problem is that new and old code are both compiled with the same scatter loading region mapping, so when i run the new code from the new address it still uses the "old" scatter loading region, i.e. it loads my old code.
Is there a way of setting the LR address to be relative and not absolute.
Of course i can compile the new SW with new scatter mapping, but this doesn't help me, because i don't know if it will run as a "new" or "old" image.
Thanks in advance
Hi,
Sorry but not sure I understand the answer.
I’m trying to focus only at load region address during the load time of scatter loading stage.
The C library function of __scatterload carries out code and data copying/decompressing (unpackaged from the load region address) – my problem is how to set a “dynamic” load address to load the RAM areas.
To my best understanding this can’t be achieved because load address is hard-coded in map file.
Thanks, Ronen
The .MAP simply reflects what the Linker has created.
What you need to do is Get a better understanding of how processor executes code. What causes address dependencies. How Linkers and Loaders manage different tasks. The difference between a binary file and an object file.
I suggested a very simple method to see how different things are, perhaps start by doing that and learning some basic things about the build process and tool functionality.
With all due respect I suggest you try to soften your criticism and be more helpful. Modest people are not preoccupied with themselves. Arrogant people have an inflated view of themselves.
You asked something and got the answer:
"The .MAP simply reflects what the Linker has created."
That is a perfectly correct answer and was followed by good suggestions of what you should study further.
I saw no criticism in what was written there.
Modest people are prepared to take advice. Arrogant people have an inflated view of themselves. I will ask you a rhetorical question: Which are you Ronen Wino ?
Hi All
The guy asked how to manipulate load regions, and he gets an answer - "go read and learn". The whole idea of forum is to share information for your experience and help with ideas. I believe Ronen did his "googling" and therefore posted here.
I am also interested in similar subject, and could not find solution in keil/arm documentation, nor in other sources, so posting here to follow the discussion.
Can anybody share a link to PI example
Thanks,.