AT91SAM7A3 boot loader

OP #1611694
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
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
OP #1618920
Naja, wie gesagt, das Springen zur Firmware geht soweit.
Ich habe nur das Problem mit meinem Bootloader, der aus dem Flash läuft 
andere Bereiche im Flash zu programmieren.

Gibt es eine Möglichkeit den Bootloader aus dem SRAM laufen zu lassen 
(ohne jtag) ?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.