Gast
#1113813
Hallo,
ich verwende den GNU GCC für einen Cortex-M3.
Mein Problem:
Ich habe im Adressbereich 00000-03FFF eine Art Bootloader. Mein
eigentliches Programm startet oberhalb von 04000. Der Programmteil
ändert sich immer mal wieder und die ISR sind nicht sicher immer auf der
gleichen Adresse. GCC schreibt eine Vektortabelle an den Anfang des
Programmteils.
Die Interrupts wandern natürlich alle nach ganz unten. Wie kann ich die
Interrupts in mein Programm umleiten?
Meine Idee ist, im Bootloader die Interrupts in eine Routine springen zu
lassen, die dann die Adresse der tatsächlichen ISR aus der Tabelle des
Programmteils holt und dort hinspringt. Also Quasi so:
Boot-ISR()
{
final-adr=(0x4000+32);
jump final-adr;
}
Ich weiß, das geht so in C nicht. Aber wie kann ich sowas in C
programmieren? Kann mir da jemand weiterhelfen?
Danke...