AT91SAM7A3 boot loader

OP #1611694
Lesenswert?

Hallo,

ich bin gerade dabei einen Weg zu finden meinen SAM7A3 über RS232 
updatefähig zu machen.
Das heißt ich suche einen Weg ihn "in field" mit neuer Firmware zu 
bespielen.
Dazu dachte ich mir, setze ich einen einfachen bootloader auf adresse 
0x0 des internen flash, der nach einem Timeout automatisch auf Adresse 
0x8000 springt, wo die Firmware liegt.
Wird vor Ablauf des Timeouts über die rs232 ein Steuerkommando gesendet 
ermögliche ich das beschreiben des Flash.

Ich arbeite hier mit der IAR EWARM.
Ich habe den Sprung vom Bootloader zur Firmware folgendermaßen getestet:

  asm
  (
    "mov    r0, #0x00008000\n"
    "BX     r0 \n"
  );

dieses Stück inline Assembler funktioniert einwandfrei.

Problem ist jetzt, die Firmware findet nun keinen frisch resetteten 
Controller mehr vor und lässt ihren Startup-Code da drüber laufen.

Es klappt alles bis ich zum __enable_interrupt() komme. Dort spielt er 
dann verrückt.

Wahrscheinlich stimmt entweder etwas mit der Interrupt Vektor Tabelle 
nicht oder er kommt in die Systeminterrupts (Abort, Spurious, o.ä.).

Meine Frage ist jetzt, da ich den Sprung von "BootLoader" zu Firmware 
schon etwas rücksichtslos durchführe, was muss ich beachten um einen 
sauberen Softwarewechsel durch zu führen ohne den Prozessor zu resetten?

Beziehungsweise kennt jemand eine fertige Software die soetwas kann?
hatte schon an RedBoot o.ä. gedacht. Aber der SAM7A3 hat nur 32k RAM, da 
kann ich die Firmware nicht erst in den RAM kopieren bevor ich sie 
laufen lasse. Und Redboot an sich würde schon ein drittel meiner 256k 
internen Flash fressen.


Vielen Dank schonmal.
Gast #1612478
Lesenswert?

Wenn ich das richtig verstehe setzt der swi Befehl den SAM in den 
Supervisor-Modus. Anschließend wird zu lr = Linkregister Adresse 
gesprungen.

Hier noch einmal im Zusammenhang:
http://sylvainhb.blogspot.com/2007/08/arm7-et-arm9-sont-sur-un-bateau-arm9.html

Da das ganze Thema aber nicht so einfach ist schau erst mal hier in den 
arm Beispielen:
http://www.mikrocontroller.net/articles/Bootloader

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren