Hallo,
ich habe mir einen gcc mit crosstools-ng gebaut der prinzipiell auch
läuft. Allerdings schreibt er, wenn man sich das Ergebnis als Binärdaten
ansieht, immer 35 Bytes mit denen ich nichts anfangen kann, an den
Anfang. Was danach kommt sieht wie die normale Vektortabelle aus, mit
der eigentlich alles starten sollte. Mit dem "offiziellen" gcc von arm
selber funktioniert alles. Ich wüsste jetzt trotzdem gerne was da hakt.
Das Linkercommandfile habe ich von Atmel genommen.
Im ungewünschten Vorspann taucht im Kauderwelsch auch die ASCII
Zeichenkette "GNU" auf, falls das jemandem was sagt.
Hat jemand eine Idee wie man diesen Vorspann wegbekommt?
Und wo ist hier dein „Kauderwelsch“ oder gar das „GNU“ (47 4E 55)?
Kannst du mal ein komplettes Minimalprojekt („Hello world“) zimmern
und sowohl Sourcecode als auch erzeugtes ELF-File hier hinlegen?
ps: Natürlich bitte mit dem benutzten Makefile.
Hier der Projektordner. Header und alles sind drin.
man beachte die "tastatur.bin" und "tastatur-kaputt.bin" Dateien. Welche
aus den elfs der zwei Compiler mittels objcopy generiert wurden.
Stefan A. schrieb:> 00000000 <exception_table>:> 00000024 <exception_table>:
Offensichtlich sind da noch andere Daten in ".vectors". Was sagt die
Map-Datei dazu? (-Wl,-Map=output.map)
Der ausgenullte Vektor ist die 7 für den USB-Handler, den dein Device
nicht hat. Die anderen Vektoren zeigen ordnungsgemäß auf den
DummyHandler.
Der Fehler muss also irgendwo beim Erzeugen deines Binfiles liegen.
Wofür brauchst du das eigentlich überhaupt? Die meisten Tools
nehmen doch heutzutage lieber das ELF-File direkt.
Trotzdem verwunderlich, dass er das an den Anfang des ELF-Files
setzt.
Mein Linker macht sowas allerdings nicht, vermutlich älter als deiner.
Daher kann ich es hier nicht nachvollziehen.
Stefan A. schrieb:> Es scheint also noch eine Linkersection ".note.gnu.build-id" zu geben.
Da fehlt die Zeile "/DISCARD/ : { *(.note.gnu.build-id) }" in der
.ld-Datei.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang