Frage zu ARM7 "Undefind Data Access Aboard"

Gast #1702264
Lesenswert?
• ▲
▼
Guten Tag.

Bei meiner Applikation mit einem LPC2148 kommt selten, aber doch
gelegentlich mal eine Data Access Abord Exception vor. Ich kann mir
erlauben bei unvorhersehbaren Exceptions einen Neustart durchzuführen.
Zuvor logge ich aber noch den Inhalt von R14 - 8 . Damit weiss ich
zwar die Adresse der Instruktion die den Zugriff ausführt, ich weiss
aber nicht auf welche Adresse.

Mein Frage ist nun, kann man diese Adresse zur Laufzeit (ohne Debugger)
herausbekommen um sie dann zu loggen ?

Vielleicht ein blöde Frage, aber ich trete im Moment auf der Stelle. Bei
Google scheine ich nicht das richtige Suchwort zu benutzen, denn da habe
ich jedenfalls nichts hilfreiches dazu gefunden.

Danke für sachdienliche Hinweise.

Gruss
#1702279
Lesenswert?
• ▲
▼
ARM7TDMI schrieb:

> Mein Frage ist nun, kann man diese Adresse zur Laufzeit (ohne Debugger)
> herausbekommen um sie dann zu loggen ?

Ja. Befehl dekodieren und Adresse berechnen. Entweder machst du das im 
Abort-Handler, oder du gibst alle relevante Information aus, also alle 
Registerinhalte 0-15 und PSR, und machst es dann selbst. Der Befehl 
lässt sich zwar ggf. dem Dump entnehmen, sofern nicht im RAM, aber es 
schadet wohl nicht, auch die betreffenden Bytes auszugeben.

http://www.design-reuse.com/articles/exit/?id=14079&url=http%3A%2F%2Fwww.embedded.com%2Fshared%2FprintableArticle.jhtml%3FarticleID%3D192202641
Gast #1702297
Lesenswert?
• ▲
▼
oh, wie soll ich das zur Laufzeit machen?

Hinterher geht es nicht mehr , weil ich die Registerinhalte ja nicht
mehr kenne. Selbst mein Debugger nutzt mir da nichts .

Wie gesagt, ich halte nicht an innerhalb des Exception Handlers, sondern
führe einen SW-Reset aus. Zuvor wird noch R14 - 8 auf die CD-Card mit
Uhrzeit und entsprechender Meldung geschrieben.

Meine naive Frage wäre (anders formuliert), ob es nicht irgendwo die
Adresse des fehlerhaften Datenzugriffes  gibt, die ich einfach so wie
die OPCODE Adresse noch mit loggen kann ?

Denke aber eher wohl nicht.


Gruss
#1702312
Lesenswert?
• ▲
▼
ARM7TDMI schrieb:

> oh, wie soll ich das zur Laufzeit machen?

Lies den verlinkten Text, dessen Autor hat das gemacht.

> Wie gesagt, ich halte nicht an innerhalb des Exception Handlers, sondern
> führe einen SW-Reset aus. Zuvor wird noch R14 - 8 auf die CD-Card mit
> Uhrzeit und entsprechender Meldung geschrieben.

Warum nur diese Register und nicht alle?

> Meine naive Frage wäre (anders formuliert), ob es nicht irgendwo die
> Adresse des fehlerhaften Datenzugriffes  gibt, die ich einfach so wie
> die OPCODE Adresse noch mit loggen kann ?

Beim ARM7 nicht, der Cortex-M3 hat das jedoch.
Gast #1702334
Lesenswert?
• ▲
▼
Ok danke, werde mir das mal ansehen. Ist ja eine etwas längere 
Abhandlung.

Zur Info : R14 - 8 soll nur heissen Registerinhalt von R14 minus 8.
Diese Adresse ist dann die Adresse des Codes der die Exception auslöst.
Alle anderen Register haben (denke ich) Inhalte die möglicherweise
nichts mehr dem Code zu tun haben der das Problem verursacht. Schon
alleine deswegen, weil ich ja Ausgaben machen muss (will). Könnte
also nicht hilfreich sein.

Danke jedenfalls nochmals für den Tip. Vielleicht hilft er ja weiter.

Gruss

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.