ARM EABI für AT91SAM7S128
This application has requested the Runtime to terminate it in an unusual
way. Please contact the application's support team for more information.
make: *** [application/main.o] Error 3
Timo P schrieb:
> ARM EABI für AT91SAM7S128>> This application has requested the Runtime to terminate it in an unusual> way. Please contact the application's support team for more information.> make: *** [application/main.o] Error 3
Da sollte man zuerst einmal identifizieren, welches Programm eigentlich
mit 'This application' gemeint ist. Ist es der Compiler, der Linker oder
wer sonst.
So wie das aussieht kommt die Meldung vom make. Also: Welches Programm
ist gelaufen, bevor make die Meldung gebracht hat?
also, das einzige, was ich an "application" laufen habe, ist Cygwin
unter WinXP. Darunter läuft mein GCC compiler. desweiteren ist das
Projekt nur in C, nicht C++.
ich kompiliere mit einer makefile, die ich am anhang habe...
Timo P schrieb:
> also, das einzige, was ich an "application" laufen habe, ist Cygwin> unter WinXP. Darunter läuft mein GCC compiler. desweiteren ist das> Projekt nur in C, nicht C++.>> ich kompiliere mit einer makefile, die ich am anhang habe...
und?
wer schmiert jetzt ab?
Compiler, Linker?
Wenn Compiler: Welches Source Code File wird gerade compiliert.
Früher ist es bei Microsoft Compilern auch schon mal vorgekommen, dass
der Compiler die Grätsche machte. Dann identifizierte man, welches
Source Code File, welche Stelle im Source Code und verändert dann eben
diese Stelle ein wenig. Oftmals waren es komplizierte arithmetische
Ausdrücke, denen es sowieso nicht geschadet hat, wenn man sie in
Einzelteile aufgebrochen hat.
ich weiß nicht, wie ich herausfinden soll ob compiler oder linker
ich weiß aber eins: das Projekt habe ich vorgesetzt bekommen. Mitsamt
Verzeichnisstruktur. Jetzt kann ich nicht kompilieren.
Frage: hat der Compiler evtl. einen "core"-Ordner, sodass ich die der
installierten Compilerversion zugehörigen Dateien nutzen sollte? In der
Verzeichnisstruktur, die ich erhielt, war u.a. auch ein core ordner
enthalten.
Danke für weitere Hilfe!
@ Timo P
Sorry ich dachte das
> ARM EABI für AT91SAM7S128
in deinem ersten Beitrag hätte eine Bedeutung. Bei der DevkitPro and
devkitARM Toolchain (GCC Compiler usw. für ARM EABI für AT91SAM7S128)
wurde mehrmals die Fehlermeldung beschrieben, die du auch beobachtet
hast.
Die Meldung selbst kommt wahrscheinlich von M$. Wer das jetzt genau ist,
ob das das M$ XP OS selbst ist oder die M$ C-Runtimelibrary von VC++
6.0, müsste man nachforschen. Ist aber IMHO unwesentlich.
Auslöser ist die Anwendung, die die M$ C-Runtimelibrary von VC++ 6.0
benutzt. Und das ist eine derjenigen, die von make aufgerüfen wurden.
Also ein Programm der Toolchain. Welches genau müsste man
herausbekommen, indem man sich die Einzelaufrufe der Toolchain
protokollieren lässt. make räumt danach nur die Reste weg (make: ***
[application/main.o] Error 3).
mit make kenne ich mich nicht aus. Aber da ich ja google kenne, werde
ich mir die Grundlagen, wie z.B. Status-Echos aneignen....
;)
Letzte Frage:
ist es also Fakt, dass die Fehlermeldung NICHT vom Compiler/Linker/make
ist, SONDERN von einer anderen Instanz(z.B. Emuliertes Linuxsystem unter
Win XP) ausgelöst wird?
> Emuliertes Linuxsystem unter Win XP
Mensch du bist ja wie Houdini - stets ein neues Kaninchen parat :)
Auslöser ist eins der Programme das von make aufgerufen wurde. Das
schrottet irgendwas in Verbindung mit der M$ Runtime-DLL.
Die darauf folgende Meldung ("This application ... information") kommt
entweder von dieser M$ Runtime-DLL oder dem M$ XP Betriebssystem.
Der Fehler produziert auch einen Fehlercode beim Beenden des auslösenden
Programms und der wird von make angezeigt ("make: ... Error 3").
Protokollier doch mal die Ausgaben, die vor der Fehlermeldung kommen.
Da wird ja nicht nur die Fehlermeldung dort stehen, sondern auch noch
was davor. Interessant ist der letzte Aufruf vor der Fehlermeldung, das
letzte Programm das gestartet wurde, ehe es abgeschmiert ist. Diesen
Aufruf brauchen wir.
$ make
arm-elf-gcc -c -D ___ -D __AT91SAM7S128_ -Iconfig
-I../openbeacon-openpicc2/config -I../core/openbeacon -I
../core/openbeacon/nRF24L01 -I../core/os/core/include -I../core/os/usb
-I../core/os/core/ARM7_AT91SAM7 -Wall
-Werror -Wextra -Wno-multichar -Wstrict-prototypes -Wno-strict-aliasing
-D SAM7_GCC -mcpu=arm7tdmi -Tconfig
/atmel-rom.ld -g -O2 -fomit-frame-pointer -Iapplication
application/main.c -o application/main.o
This application has requested the Runtime to terminate it in an unusual
way.
Please contact the application's support team for more information.
make: *** [application/main.o] Error 3
Achtung! hier steht application, dies ist allerdings der Ordner, in dem
die Scourcen drin sind. z.B die main.c
arm-elf-gcc ist die gesuchte Applikation oder eines der Programme die
der Compilerdriver arm-elf-gcc wiederum aufruft (Präprozessor, Compiler,
Assembler, Linker). Sieht man in dem Log oben nicht.
Wer genau ist aber auch wenig spannend, weil das Problem für alle
Programme grundsätzlich gleich angepackt werden muss, z.B. mit dem ober
verlinkten Hotfix von M$ als erstem Versuch. Oder einer gefixten
Toolchain als nächstem Versuch.
Stefan B. schrieb:
> Wer genau ist aber auch wenig spannend, weil das Problem für alle> Programme grundsätzlich gleich angepackt werden muss, z.B. mit dem ober> verlinkten Hotfix von M$ als erstem Versuch. Oder einer gefixten> Toolchain als nächstem Versuch.
Würde ich auch sagen.
Erst mal die bekannten Fixes anwenden.
Hat man dann immer noch ein Problem, kann man die Sache trickreich
angehen :-)
Der Absturz passiert beim compilieren von main.c
Da kann man jetzt anfangen alle Funktionen auszukommentieren, so dass
sie der Compiler nicht mehr sieht
Dann kommentiert man die erste Funktion wieder ein, so dass sie der
Compiler wieder mitnimmt.
Compilieren
Da werden sicherlich ein paar Fehlermeldungen entstehen, aber die
ignoriert man. Wichtig ist nur: Absturz oder nicht Absturz.
Hat man keinen Absturz, dann steckt das Problem nicht in der zuletzt
einkommentierten Funktion. -> Die nächste Funktion wieder von ihrem
Kommentar befreien und weiter geht die Jagd: compilieren und nachsehen
ob der Absturz kommt.
Und so tastet man sich ran, bis man die Funktion gefunden hat, die das
Problem verursacht. Innerhalb der Funktion kann man dann die gleiche
Auskommentier/Einkommentier-Strategie anwenden um bis auf die Anweisung
vorzustossen, die das Problem verursacht.
"Und dann schaun wir mal"
Sicherlich gibt es auch eine Möglichkeit, das alles abzukürzen, indem
man den gcc anweist, die internen Datenstrukturen mitzudumpen, bzw.
Zwischenfiles anzulegen, aber davon verstehe ich nichts.
yupp, kann ich bestättigen
Danke Danke
Bin mal wieder in Windows unterwegs ;)
ps: in meinem Fall gehts um avr-gcc compiler, der .. aber sehen sie
selbst
1
$ avr-gcc -c main.c
2
3
This application has requested the Runtime to terminate it in an unusual way.
4
Please contact the application's support team for more information.