Hi nochmal,
@anna:
Code zu linken, habe ich ERfahrung, aber nicht auf Atmelplattformen.
Auch Funktionen in Assemblercode lassen sich aus C aufrufen (um
sicherzustellen, dass die Funktion richtig benutzt wird, schreibt man
letztendlich auch die Headerfiles mit den Funktionsdeklarationen)
Das Prinzip ist das aber immer gleich:
Dein GccCompiler übersetzt dein C-Programm in "linkercode"
(eigentlich eher ein Zwischencode für den Linker)
Dein AVR Assembler wird ebenfalls übersetzt in "linkercode"
(assembliert).
Der Linker geht jetzt her, packt alles in eine Datei und löst die
relativen Sprungadressen auf (z.B. Funktionsaufrufe für C-Funktionen
die in anderen Dateien stehen, also separat übersetzt werden.) Dann
rechnet er realtive in absolute Adressen um (abhängig von der
Plattform)
Voraussetzung dafür, dass der Linker mit dem Code umgehen kann: beide
(AVRStudio und avr-gcc) müssen das gleiche Linkerformat erzeugen, was
sie IMHO aber auch tun, weil man mit AVRStudio auch Avr-gcc erzeugten
code debuggen kann.
(Ich glaube beide benutzen das ELF-Format, bin mir aber nicht sicher.)
Gruß Andreas