Forum: Mikrocontroller und Digitale Elektronik AT91RM9200 undefined mode wird ausgelöst


von Bernd S. (mms)


Lesenswert?

Hallo,

wie kann eigentlich ein undefined mode ausgelöst werden?

Bis jetzt weiß ich nur, dass das der Fall ist, wenn der Prozessor eine 
Instruktion bekommt, die er nicht kennt? Aber was kann so eine 
Instruktion / unbekannter Befehl sein?

Dann wenn man mit Floating-Points arbeitet, obwohl kein Koprozessor zur 
Verfügung steht, der dies verarbeiten kann?

Habe gerade das Problem, dass eine solche undefined instruktion 
auftritt, wenn über die Ethernet-Schnittstelle Pakete empfangen werden. 
Es gibt ein Register, in dem die Adresse von einem Pointer angegeben 
wird, wo die Pakete per DMA hingespeichert werden sollen (nämlich in den 
externen SDRAM). Ich nehme an, dass erst anschließend der Interrupt 
ausgelöst wird, dass neue Pakete vorhanden sind - auf jeden Fall wird 
dieser Interrupt nicht mehr ausgelöst wegen der undefined instruktion.

Arbeiten tu ich mit dem AT91RM9200 Prozessor. Solange keine Pakete 
ankommen, läuft das Programm ohne Fehler. Daraus würde ich vermuten, 
dass der Programmcode auf jeden Fall die Ethernet Schnittstelle 
freischaltet so dass Pakete empfangen werden können.

Wenn der SDRAM / oder die Speicheradresse für die empfangenen Pakete 
nicht stimmen würde oder icht vorhanden sein würde, würde doch ein Data 
Abort und keine undefined instruktion ausgelöst werden, oder?

Vielleicht hat jmd. von euch einen Hint warum so eine undefined 
Instruktion ausgelöst werden könnte.

Bernd

von ARM-Fan (Gast)


Lesenswert?

>Vielleicht hat jmd. von euch einen Hint warum so eine undefined
>Instruktion ausgelöst werden könnte.

Funktionspointer, der zwar auf gültigen Speicher zeigt, an dessen
Stelle aber kein gültiger Code steht.

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
Noch kein Account? Hier anmelden.