Hallo, ich habe ein Projekt von Roland Riegel von Seiner HP runter geladen. Entsprechende Änderungen (Prozessortyp in 128er geändert und Quarzfrequenz geändert) habe ich schon selber vorgenommen. Allerdings erzeugt das Makefile keine Datei mit der Endung "elf". Ich benutze AVR Studio 4.11 und benötige diese Datei daher. Ich möchte nicht auf das aktuelle AVR-Studio unsteigen, weil ich mich an das alte gewöhnt habe und damit zufrieden bin. Was für Einträge muß ich im Makefile machen, damit das Makefile eine entsprechende *.elf erzeugt? Wäre nett, wenn mir einer die Datei ändern und als Anhang hier posten könnte.
Hallo Martin, Übergebe in dem Makefile an avr-objcopy statt "-O ihex" einfach mal "-O elf32-avr" und ändere am Anfang des Makefile die Endung der Ausgabedatei. Ich kenne das AVR-Studio zwar nicht und auch das ELF-Format ist mir bei AVRs noch nicht untergekommen, aber wenn Du das so brauchst... Gruß, Roland PS: Ein wenig eigenständige Suche oder das Lesen der einschlägigen Man-Pages hätte Dich auch selbstständig weitergebracht. Was anderes habe ich auch nicht getan.
Wozu doppelt gemoppelt und so kompliziert? Das ELF-Format purzelt doch schon von ganz alleine aus dem Linker! Und avr-objcopy macht daraus dann das hex-Format. Warum der Autor des Makefile der Datei allerdings die Endung 'out' verpasst hat weis ich auch nicht. Einfach in dem geposteten Makefile am Ende der 4. Zeile aus dem 'out' ein 'elf' machen. CU
@Roland: Danke für die schnelle Antwort. Du meinst so: OUT := $(NAME).elf $(HEX): $(OUT) $(OBJCOPY) -R .eeprom -O elf32-avr $< $@ Bin gerade nicht an meinem Programmier-PC und kann es daher erst morgen testen.
@... Dann hätte ich es nur oben ändern müssen? Wie gesagt, bin gerade nicht an meinem Programmier-PC und kann es daher leider nicht gleich testen.
Ok, danke für die Korrektur. Die Wahl von .out war eher willkürlich. Ich verwende das AVR-Studio nicht, und unter Linux arbeite ich mit Intel-Hex-Dateien, deshalb überhaupt die Umwandlung mit avr-objcopy. Gruß, Roland
Nicht ganz :) Nur die eine Zeile ändern:
1 | OUT := $(NAME).elf |
Die andere bleibt wie sie ist, also mit dem "-O ihex" darin. Sonst suchst Du anschließend vergeblich nach der hex-Datei zum Flashen :)
OK. Vielen Dank für die Hilfe! Bin mal gespannt, ob das Auslesen und beschreiben der SD-Karte mit der Software von Roland klappt...
Huch, da war ich wohl zu langsam. Das ganze hat auch nicht direkt was mit dem AVRStudio zu tun. Das ELF-Format ist einfach das, was am Ende (nach dem linken) aus dem avr-gcc/WinAVR rauskommt. Egal ob unter Windows, Linux, BSD, <whatever>. Das AVRStudio braucht die Datei nur, weil da auch die Debuginfos für den Debugger/Simulator mit drin sind. Unter Linux hättest Du mit dem GDB auch nicht viel Freude, wenn die Dir fehlen würden. CU
Das geänderte Makefile hat funktioniert. Allerdings habe ich nun noch wieder die Version von Ulrich Rading verwendet, um die SD-Karte auszulesen, nachdem ich den Hardwarefehler gefunden habe (die Version von Roland Riegel hab ich aufgrund der vielen Zeiger im Programm leider nicht so ganz geblickt - funktioniert hat sie aber prinzipiell schon). Übrigens: Die Sache mit dem Spannungsteiler für die Signale hat bei mir die Signale extrem verschliffen. Hab die SPI-Taktfrequenz deutlich gedrosselt und dann war das Problem beseitigt.
... wrote: > Warum der Autor des Makefile der Datei allerdings die Endung 'out' > verpasst hat weis ich auch nicht. Weil Windows nun mal nur glücklich wird, wenn die Dateien auch einen Suffix haben. Normalerweise wird die ausführbare Datei unter Unix beim Linken ohne irgendeinen Suffix gespeichert, man compiliert also foo.c zu einem foo.o, und linkt das dann zu einer Datei namens foo. Da die für den AVR enstehenden Dateien ohnehin nicht direkt ausführbar sind und einer Nachbearbeitung bedürfen (avr-objcopy), und da Windows komplett auf Dateinamensendungen basiert, hat man dem beim AVR-GCC mal irgendwann einen Namen hinzu gegeben. Da der Default-Name einer ausführbaren Datei unter Unix »a.out« heißt, lag der Suffix .out hier nahe. Der Suffix .elf ist nicht minder Unfug, denn alle Objektdateien sind im ELF-Format, auch die .o-Dateien, die als verschiebliche Objekte zwischendrin entstehen.
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.