arm-elf-gdb load probleme

OP #605254
Lesenswert?
• ▲
▼
Hi,
ich habe ein zum besseren debuggen ein SRAM an meinen STR710 gehängt. 
Das SRAM läuft jetzt dank dieses Forums anstandslos. Ich habe das EMI 
initialisiert und kann in meinem Code das komplette SRAM beschreiben und 
auch ohne Fehler wieder auslesen. Das ganze sogar ohne wait cycles 
einfügen zu müssen.
Mein Verständnis sagt mir das es hardware mässig in Ordnung ist.

So nun will ich das ja zum debuggen benutzen, also meinen Code da rein 
laden. Dazu habe ich mein OpenOCD script erweitert, sodass vor dem Laden 
das EMI initialisiert wird:

# set P2.0-P2.3 to alternate function
monitor mww 0xE0005000 0x000F
monitor mdw 0xE0005000
monitor mww 0xE0005004 0x000F
monitor mdw 0xE0005004
monitor mww 0xE0005008 0x000F
monitor mdw 0xE0005008
# enable EMI Bank1
monitor mww 0x6C000004 0x80098009
monitor mdw  0x6C000004

Die mdw-Befehle zeigen mir das die entsprechenden Werte in die Register 
geschrieben wurden. Die Werte entsprechen dem Ist, als ich das EMI in 
meinem Code initialisiert hatte. Sollten also funktionieren...

Ich kann nun mit dem mww-Befehl auch einzelne werte in das SRAM 
schreiben und wieder auslesen. Führe ich allerdings den Load Befehl von 
GDB aus, gibt es probleme. Der geladene Code entspricht dann nicht mehr 
dem Code in dem file das auf meiner Platte liegt. Die Daten sind dann 
korrupt und es kann nicht sinnvoll ausgeführt werden. z.B. aus NOPs 
werden MOVS, allerdings willkürlich das könnte auch zu einem BX geworden 
sein.

Also sobald ich das load einsetze scheint mein SRAM nicht mehr die 
richtigen Daten zu speichern. Woran kann das liegen?

Natürlich habe ich mein linker-script angepasst, sodass der Code jetzt 
zu der Adresse 0x62000000 geladen wird, was die Startadresse meines 
SRAMs ist.
OP #606091
Lesenswert?
• ▲
▼
Ich muss das externe RAM auf 0x00 mappen, wenn ich davon booten möchte. 
Da ich aber schon "gebootet" habe ist das normalerweise nicht nötig. 
Beim laden durch gdb wird der Programcounter auf die Startadresse des 
externen RAM gesetzt also 0x62000000. Die Ausführung des Codes beginnt 
also schon an der richtigen Stelle.

Mein Problem beginnt ja auch schon vor dem Booten, indem der code 
garnicht korrekt am SRAM ankommt bzw. ausgelesen werden kann.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.