Was sind die Bedeutung der Elemente in der "alignment trap" Fehlermeldung?
Während meiner Debuggen, habe ich die folgende Fehlermeldung.
Alignment trap: my_main (29858) PC=0x00170ad8 Instr=0xe5960008 Address=0x00f28daa FSR 0x0f3
Ist, habe ich mich ein bisschen herum und fand eine Menge von Informationen auf dieser real-time-embedded-website.
So, jetzt weiß ich, was PC
und Instr
bezieht, aber ich noch habe nicht gefunden was über die Address
und FSR
Teil.
Was ist FSR
? Welche Adresse hat Address
finden? Nach proc/xxxx/maps
diese Adresse auch außerhalb des Anwendungsbereichs von meinem Programm. Weiß jemand was die letzten beiden Punkte zu bedeuten? Ich brauche Informationen über diese zur Lösung dieses Problems Ausrichtung.
MAP-Ausgabe
00008000-001fe000 r-xp 00000000 03:02 16204 /home/myuser/my_main
00205000-00248000 rw-p 001f5000 03:02 16204 /home/myuser/my_main
00248000-00299000 rwxp 00248000 00:00 0
40000000-40018000 r-xp 00000000 03:01 2095 /lib/ld-2.3.3.so
40018000-4001b000 rw-p 40018000 00:00 0
4001f000-40020000 r--p 00017000 03:01 2095 /lib/ld-2.3.3.so
40020000-40021000 rw-p 00018000 03:01 2095 /lib/ld-2.3.3.so
40021000-40023000 r-xp 00000000 03:01 15724 /usr/lib/libem7.so.1.0.1
40023000-40029000 ---p 00002000 03:01 15724 /usr/lib/libem7.so.1.0.1
40029000-4002b000 rw-p 00000000 03:01 15724 /usr/lib/libem7.so.1.0.1
4002b000-40031000 r-xp 00000000 03:01 2057 /lib/tls/librt-2.3.3.so
40031000-40033000 ---p 00006000 03:01 2057 /lib/tls/librt-2.3.3.so
40033000-40038000 rw-p 00000000 03:01 2057 /lib/tls/librt-2.3.3.so
40038000-40039000 r--p 00005000 03:01 2057 /lib/tls/librt-2.3.3.so
40039000-4003a000 rw-p 00006000 03:01 2057 /lib/tls/librt-2.3.3.so
4003a000-4004a000 r-xp 00000000 03:01 2060 /lib/tls/libpthread-2.3.3.so
4004a000-40051000 rw-p 00008000 03:01 2060 /lib/tls/libpthread-2.3.3.so
40051000-40052000 r--p 0000f000 03:01 2060 /lib/tls/libpthread-2.3.3.so
40052000-40053000 rw-p 00010000 03:01 2060 /lib/tls/libpthread-2.3.3.so
40053000-40055000 rw-p 40053000 00:00 0
40055000-4010e000 r-xp 00000000 03:01 15703 /usr/lib/libstdc++.so.6.0.3
4010e000-40115000 ---p 000b9000 03:01 15703 /usr/lib/libstdc++.so.6.0.3
40115000-40119000 rw-p 000b8000 03:01 15703 /usr/lib/libstdc++.so.6.0.3
40119000-4011f000 rw-p 40119000 00:00 0
4011f000-401b7000 r-xp 00000000 03:01 2076 /lib/tls/libm-2.3.3.so
401b7000-401be000 rw-p 00090000 03:01 2076 /lib/tls/libm-2.3.3.so
401be000-401bf000 r--p 00097000 03:01 2076 /lib/tls/libm-2.3.3.so
401bf000-401c0000 rw-p 00098000 03:01 2076 /lib/tls/libm-2.3.3.so
401c0000-401c8000 r-xp 00000000 03:01 2005 /lib/libgcc_s.so.1
401c8000-401c9000 rw-p 00008000 03:01 2005 /lib/libgcc_s.so.1
401c9000-402cb000 r-xp 00000000 03:01 2078 /lib/tls/libc-2.3.3.so
402cb000-402d1000 ---p 00102000 03:01 2078 /lib/tls/libc-2.3.3.so
402d1000-402d2000 rw-p 00100000 03:01 2078 /lib/tls/libc-2.3.3.so
402d2000-402d4000 r--p 00101000 03:01 2078 /lib/tls/libc-2.3.3.so
402d4000-402d6000 rw-p 00103000 03:01 2078 /lib/tls/libc-2.3.3.so
402d6000-402d8000 rw-p 402d6000 00:00 0
402d8000-402e5000 rw-s 00000000 00:07 0 /SYSV12345678 (deleted)
402e5000-402e6000 ---p 402e5000 00:00 0
402e6000-402f5000 rwxp 402e6000 00:00 0
403c1000-4049d000 rw-p 403c1000 00:00 0
7efeb000-7f000000 rwxp 7efeb000 00:00 0
InformationsquelleAutor Naze Kimi | 2013-04-10
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser sagt Ihnen der aktuelle Wert der program counter, es kann verwendet werden, um zu bestimmen die Anweisung in deinem Programm verursacht die Falle. Wenn Sie auf den ARM, da ich denke, dass Sie sind, das ist eigentlich der aktuellen Instruktion plus 8, also die Anleitung verursacht die Falle befindet sich unter
0x00170ad0
.Dies ist die Kodierung der fehlerhaften Anweisung. Wenn das auf ARM, dass der Unterricht
ldr r0, [r6, #8]
Diese sagt Ihnen die Adresse, von der Ihr Programm versucht zu laden, verursacht den Fehler. Vorausgesetzt, dass alles andere so weit ist korrekt, dies ist
r6 + 8
, sor6
gehalten0x00f28da2
an die Zeit der Störung.Dies ist der Wert, gehalten in der Fehler-status-register. Es sagt Ihnen, welche Fehler aufgetreten ist. Dieser Besondere Wert ist eine ältere Codierung (pre-ARMv7) für eine Ausrichtung Schuld.
Wahrscheinlich dein CPU nicht unterstützt Lesen/schreiben vom/zum Speicher der Werte auf nicht ausgerichtete Adressen. Wenn Sie Zugriff auf eine 4-byte-variable, dann ist klar, Address=0x00f28daa ist nicht ein Vielfaches von 4 ist. Nur einzelne bytes können gelesen/geschrieben werden auf beliebig ausgerichtet Adressen.
Artikel erklärt es gut.