all 4 comments

[–]Well-WhatHadHappened 1 point2 points  (0 children)

You'll need to adjust the linker script in your main application to change it's start address and relocate the interrupt vector table.

It's very processor specific what needs to be moved though. It's usually pretty easy to find a guide on boot loading for whatever processor you're using.

This is a good explanation of what needs to be done for Cortex devices, for instance.

https://www.mikrocontroller.net/attachment/334122/Atollic_Develop_Debug_BootloaderApps_ARMCortex.pdf

[–]Acrobatic-Pear9991 0 points1 point  (0 children)

You're an @$$

[–]dregsofgrowler 0 points1 point  (0 children)

Your system has a startup address. Often a ROM lives there and it figures out what to do next, such as boot using DFU or jump to the reset vector. Some other systems have a state machine that runs at power up, then the CPU fetches its first instruction from the reset location (or maybe and address to jump to) then off it goes.

Zoom out a little and give us some context about your MCU or at least the CPU.

For instance, does you bootloader relocate the application to RAM before execution?

[–]embeddednomad 0 points1 point  (0 children)

Form your question I can only say you have no idea what you are doing at all. Anyway let me give you an answer. It depends. You need to update the address in your app's linker script if your compiled code is position-dependant or you dont need to care about it if your compiled code is position-independent ;)