Topic : IAP and Bootloader question

Forum : ST7/STM8

Original Post
Post Information Post
June 13, 2011 - 5:24am
Guest

I am developing a custom bootloader for an STM8S208RB with CAN communication with Ride7. The firmware is already created, and is rather large. Many of the documents recommend loading the bootloader from the default 0x8080 to 0xXXXX, and then starting the normal firmware from 0xXXXX. From these forums, I have read about the "at 0xXXXX void main()" command, and that works fine with the firmware's main function.

The problem is, it only seems to move a small portion of the firmware, just the main function, to 0xXXXX. The rest of the firmware (Im assuming all the global variables, functions, etc) are still around 0x8080, and are overlapping with my bootloader.

Is there anyway to easily shift the addresses of all the objects in a project? Or is the only option assigning specific addresses to each function and variable?

Replies
Post Information Post
+1
0
-1
June 14, 2011 - 9:30am
Raisonance Support Team

Hi,

Please refer to http://forum.raisonance.com/viewtopic.php?id=3308, which should be helpful to your project.
Don't forget that the interrupt vectors are NOT remapped if you do not reflash 0x8000-0x8080, so you need to explicitly place the interrupt handlers at absolute addresses (except for the interrupt handlers that are held by your bootloader code.

Good luck!