mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC23xx Prefetch Abort Interrupt


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe für den LPC2368 ein sehr umfangreiches Programm geschrieben, 
das auch viele Interrupts benutzt.
Immer bei einem größeren Datenverkehr (viele Interrupts) "stürzt" die 
CPU ab und hängt im "PAbt_Handler" Interrupt.
Im LR Register steht 0x20000048, aber da ist doch kein Flash?!?

In der ARM Doku steht "prefetched instruction is invalid..."

Was heist das?
Und wie kann ich das diagnostizieren, welcher SW-Teil hier anfängt zu 
spinnen?

Also bei sehr geringem Datenverkehr funktioniert alles, erst bei mehr 
Daten kommt irgendwas durcheinander.

Die Interrupts die kommen sind CAN und UART. Ich möchte ungern die 
Interrupt-Routinen umbauen und als Task laufen lassen.

Vielen Dank für eure Hilfe.

Autor: ARM-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Im LR Register steht 0x20000048, aber da ist doch kein Flash?!?

Na genau deshalb kommt doch der Abort!

Du hast dich irgendwo verpointert, z.b. durch einen Überlauf wenn
zuviele Daten kommen, und schon krachts.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mache nichts "manuell" mit Stack oder in Assembler, das überlasse 
ich alles dem GCC.

Ich hab jetzt mal allen interrupts die gleiche Prio gegeben. Jetzt 
scheint der Fehler nicht mehr auf zu tauchen.

Dennoch finde ich es merkwürdig warum da sowas überhaupt passiert.
Ein ungutes Gefühl hab ich immer noch.

(Ich hoffe blos, dass es den LPC1768 bald gibt, der Cortex ist in den 
Interrupts doch noch um Welten besser...)

Autor: ARM-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dazu mußt du auch nichts "manuell" machen.

Angenommen du versaust einen Funktionspointer und schon kriegst du einen
Prefetch-Abort.

Autor: Henry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht lasten die Interrups den Controller über 100 Prozent aus und 
der Stack rasselt in den Keller.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.