hallo,
ich suche nach einer möglichkeit, den bootloader anders zu fahren, wenn
er von der applikation angesprungen wurde.
hintergrund ist, dass in diesem fall kein timeout laufen soll. dieses
soll nur im reset-falle aktiviert werden und ggf. zuschlagen.
derzeit mache ich es über eine variable in der noinit:
int from_appl_jmp _attribute_ ((section (".noinit")));
die ich dann beim sprung aus der applikation setze:
from_appl_jmp = FROM_APPL_MAGIC;
asm volatile ("jmp 0x1E000"); // jmp main bootloader
und in der main des bl angekommen schaue, was sache ist:
if ( from_appl_jmp != FROM_APPL_MAGIC ){
static S_Start _s_start; // start timer
}
else{
from_appl_jmp = FROM_APPL_MAGIC + 1; // sram change for next reset
}
das funktioniert zwar, ist aber - imo - sehr sehr unschön. gibt es vll
einen weg, wie das besser zu bewerkstelligen ist? irq's sind tabu, die
brauche ich.
noch etwas: "jmp 0x1E000" .. wie kann ich an die erste adresse in der
bl-section springen? ich hatte die idee, die irq-vektoren zu verschieben
und dann an 0 zu springen, aber das funktioniert aus mir unbekannten
gründen leider nicht :(
vielen dank im voraus,
schönen sonntag, bye kosmo