Hallo, ich verwende AVR Studio 5 und möchte gerne das generierte Hex-File mit einem bereits zuvor generierten Hex-File mergen. Dies sollte Aufgabe des Linkers sein. Kann ich das mit AVR Studio hinkriegen oder muß ich hierfür das Makefile erweitern? Ich hoffe auf Ersteres :) Viele Grüße, Martin
Die Frage kommt im Zusammenhang mit einem bootloader (was anderes ist auch kaum sinnvoll) hier alle paar Wochen. Der linker kann das nicht. Beitrag "Bootloader zu normalem Projekt "dazulinken"" Beitrag "AVR-GCC - Bootloader & Nutzprogramm in einem. Wie?" Oliver
>Dies sollte Aufgabe des Linkers sein
Was heisst "sollte"? Du nimmst es an? Du wünschst es Dir? Dein Linker
ist so spezifiziert?
Ich kenne keinen Linker der Hex-Files zusammenfügt. Eigentlich ist es
auch nicht seine Aufgabe.
Vielmehr ist er so spezifiziert, das er die in verschiedenen
Object-Files vorhandenen Referenzen auf Variablen und Funktionen in
jeweils anderen Object-Files auf konkrete Werte setzen damit diese zur
Laufzeit referenziert werden können.
Ein Makefile enthält zum Bau des Gesamtprojektes notwendige Kommandos
und deren gegenseitige Abhängigkeit. Insofern wäre hier eine weitere
Abhängigkeit und ein Kommand einzufügen, das die beiden Hex-Files
zusammenfügt.
Von dem zusammenfügen alleine hast Du aber ohne weitere, nicht triviale
Maßnahmen nichts. Keines der beiden Teile kennt irgendeine Referenz in
einem der anderen. Wiegesagt, nicht ohne weiteres und ohne etwas
komplexere Voränge.
Das einfachste wäre es, die beiden Projekte, die jeweils ein Hex-File
erzeugen, in ein Projekt zusammenzufügen bevor daraus Hex-Files
entstehen und sich ein ganzes erzeugen zu lassen. D.h. soweit beide
Hex-Files aus C-Code oder Assembler-Code entstehen, diese ersteinmal zu
kompilieren resp. assemblieren und dann vom Linker die Referenzen
ergänzen zu lassen und dann erst ein Hex-File erzeugen.
Üblicherweise wird aber eine solche Frage gestellt, wenn sich das eine
Hex-File nicht mehr neu erzeugen lässt. Ist das so? Dann wird es
komplizierter.
Vielen Dank Oliver für die Links und an auch Noname bzgl. der kleinen Belehrung :-). Ich habe eine Lösung gefunden. Entweder mit Hex2Bin und danach Bin2Hex mit Merge oder mit srec_cat. Viele Grüße, Martin
Warum eigentlich mergen? Wenn du sie mit AVRDUDE in den Chip bringst, kannst du sie einfach in zwei -U-Optionen angeben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.