2017-05-09 2 views
0

Mein Programm löst eine Datenabbruch-Ausnahme aus, wenn ich einen Wert in eine Adresse eines Peripherieregisters (Multi I/O SPI Interface) schreibe. Ich verwende einen Renesas RZ/A1L Prozessor mit einem Cortex A9 Kern.Ausnahme für Datenabbruch beim Schreiben in Peripherieregister

Interessanterweise in einem anderen Projekt der gleiche Quellcode und der gleiche Speicherbefehl nicht zu einer solchen Ausnahme führen.

Vor der Ausführung der Speicheranweisung muss etwas vorhanden sein, das das Schreiben an diese Adresse verbietet oder zu einem widersprüchlichen Zugriff auf diese Adresse führt.

Interessanterweise werden einzelne Schritte über die kritischen Anweisungen in der Disassemblierung ausgeführt, was manchmal dazu führt, dass keine Ausnahme ausgelöst wird und die nächsten Anweisungen ausgeführt werden können. Aber selbst dann kann das Schreiben oder Lesen (Laden/Speichern) zu und von dem nächsten Register in dem gleichen Speicherbereich zu dem gleichen Verhalten führen.

Antwort

0

Die Ausnahme wurde von der MMU ausgelöst. Der Speicherabschnitt, der die Adressen für die Multi-I/O-SPI-Schnittstellenregister enthielt, wurde in der MMU nicht konfiguriert.

Warum einzelne Schritte in der Disassembly keine MMU-Daten auslösen, ist noch nicht behoben.

Verwandte Themen