In Short: Is it possible, to tell the linker, to place the same piece of
code in multiple flash locations?
What I'm trying to do is, to write a linker script, to run an
application either in "standalone mode" or with a bootloader installed,
for in application programming.
For this I want the isr vector table to be located at the controllers
default location - where it gets overridden, if the bootloader is
flashed - and in the applications section, where the bootloader jumps
to, when it is finished.
This is how the parts in my linker script look like:
[code]
.bootloader :
{
. = ALIGN(0x80); /* PM0056, Rev.1 (4/2009), 4.3.3 */
KEEP(*(.isr_vector)) /* Initial isr table. It gets overridden, as
soon as bootloader is installed. */
} >BL
.application :
{
. = ALIGN(0x80); /* PM0056, Rev.1 (4/2009),
4.3.3 */
_app_isr_vectors_offset = . - 0x08000000;
KEEP(*(.isr_vector)) /* This is the application
vector table to use, when
bootloader is installed.
*/
} >APP
The result is, that the KEEP(*(.isr_vector)) in the .application section
produces no output in the binary file. Maybe already used input sections
are marked as used and cannot be inserted again?
I searched the GNU LD manual, but did not find a hint how to do this.
Can you tell me, if this is possible and if yes, how?
Thanks!
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.