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.
>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.
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...)
Dazu mußt du auch nichts "manuell" machen. Angenommen du versaust einen Funktionspointer und schon kriegst du einen Prefetch-Abort.
Vielleicht lasten die Interrups den Controller über 100 Prozent aus und der Stack rasselt in den Keller.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.