Hi Habe hier ein Makefile,aber nicht den passenden Programmer dazu Ich hab zwar etliche programmer,aber jetzt keine Lust mehr weitere zu bauen. Was muss ich denn am file ändern,damit nur ein .Hexfile erstellt wird,welches ich dann mit einem Programmer meiner Wahl übertragen kann? Habe hex: $(TARGET).hex eingetragen,das funktionierte aber nicht.Auch die ganze Zeile mit usbtiny usw entfernt,ging aber auch nicht Aus dem Makefiletutorial hier auf der Seite,werde ich leider auch nicht schlau. Habe das M.file mal angehängt
Gast
#2159364
avr-objcopy macht dir aus einem elf file ein hex. cmd line optionen bitte selbst nachlesen mit avr-objcopy -? .
Gast
#2159529
Vielen Dank tom,für den Tip. Der brachte mir aber leider nix ein,außer 2Stunden sitzen am PC bei dem schönen Wetter Kriege es nicht hin. Da kommt immer ne Fehlermeldung:interleave must positiv. Außerdem wurde beim Kompilierversuch zum mclock.o,ja auch noch das file mclock.map erzeugt,da weis ich ja grad mal garnicht was ich da mit machen soll.Da liest man sich auch nicht nmal eben schnell ein,im Gegenteil das bedeutet wieder tagelanges Experimentieren mit unbekanntem Ausgang Das ist scheinbar das Ziel jeden Programmierers: Unbedarfte in den Wahnsinn zu treiben lol Denke mal,daß ich mir den usbtiny doch bauen sollte,ist in 2-3St gemacht,damit wird es dann ja hoffentlich gehen. LG
Gast
#2159547
Carlito Schnipp schrieb: > Habe hier ein Makefile,aber nicht den passenden Programmer dazu > Ich hab zwar etliche programmer,aber jetzt keine Lust mehr weitere zu > bauen. Das hat mit deinem Programmer gar nichts zu tun. Der ist nur dafür zuständig, anhand der Daten im Hexfile deinen Prozessor zu programmieren. Du hast ein Compiler/Linker Problem.
Gast
#2159554
Da du ja sowieso compilieren möchtest, hast du bestimmt den WinAVR Compiler bei dir installiert. Lösche am besten das makefile und kopiere dir aus <laufwerk>:\WinAVR\sample das Beispiel makefile. Das öffnest du in einem Texteditor und änderst jetzt die Zeile mit MCU= auf
1 | |
2 | |
danach änderst du noch die Zeile mit TARGET= auf
1 | |
2 | |
du kanst auch noch die Zeile mit FCPU= auf
1 | |
ändern. Jetzt hast du ein makefile, das dir eine *.hex und eine *.eep erzeugt. Damit müsstest du jetzt deinen Programmer (welchen du auch immer hast) füttern können.
Gast
#2159557
Tip schrieb: > Das hat mit deinem Programmer gar nichts zu tun. Der ist nur dafür > zuständig, anhand der Daten im Hexfile deinen Prozessor zu > programmieren. > > Du hast ein Compiler/Linker Problem. Aha! Ich hab das jetzt so verstanden,daß beim Kompilieren,das kompilat aufgrund der Avrdudezeile direkt auf den Zielprozessor geschrieben wird Wenn es sich aber so verhält wie Du sagst,dann wäre das Sourcefile fehlerhaft Bzw unvollständig. Also ne ganz andere Ausgangssituation.
Gast
#2159561
Öh quatsch,ich meine natürlich das Makefile
Hallo carlito_s, ich habe Dir mal das makefile geändert und angehägt. Aber wenn Du nicht in diese Untiefen steigen möchtest, das rate ich Dir, den Vorschlag von SF zu folgen. Auch mfile (v. Jörg Wunsch) ist ein empfehlenswerter Makefile-Generator für den AVR. Viel Erfolg Hermann-Josef
Gast
#2159916
Hermann-Josef Vielen Dank,für Deine Bemühungen. Ja diese Untiefen,werde ich wohl früher oder später ausloten müssen,es ist nur so,daß ich momentan schon soviel Neues habe(Elektronik,eagle,soweiter) Und dann noch µC ,und Programmieren,damit bin ich ehrlich gesagt etwas überfordert zu viel input wie man so schön sagt. Denn es soll ja auch Spass machen und nicht nur Frust,ist quasi ne Freizeitbeschäftigung. Zum Makefile: Danke dafür,aber leider läufts immernoch nicht (make.exe: *** [mclock.elf] Error 1) Was mich auch wundert,ist: Ich habe an mehreren Stellen gelesen,daß wenn das quellfile nicht main heist,es immerwieder Probleme geben soll. Ich frage mich eh,wieso im Netzt meist sourcecode upgeloadet wird,statt ausführbarer files. Es hat ja nicht jeder ein toolchain(so heist´s glaube) zur Verfügung.In meinem Fall z.B. könnte ich ein Bascomfile garnicht kompilieren wenns größer als 4kb ist,da ich nur die Demoversion besitze und als Ottormalmensch auch nie die Vollversion kaufen würde. Bei dem programm,handelt es sich übrigens um eine Uhr,mit deren hilfe ich meine zammgelötete 8x8Matrix ausprobieren wollte LG Carlito
Gast
#2159931
>>Ich habe an mehreren Stellen gelesen,daß wenn das quellfile nicht main >>heist,es immerwieder Probleme geben soll. Das stimmt so nicht. Aber das makefile sollte natürlich zum Quellcode passen. Wenn man seine C-Datei mclock.c nennt aber dann im makefile versucht eine main.c Datei zu kompilieren, dann klappt das natürlich nicht. Aber das ist hier nicht der Fall. Das makefile Hermann-Josef funktioniert. Du hast ein anderes Problem. Eventuell ist WinAVR bei dir nicht richtig installiert, oder du hast mehrere make.exe am Start oder du rufst make nicht richtig auf... Möglichkeiten was falsch zu machen gibt es leider viele. So sieht es aus wenn alles funktioniert:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
PS: Hier scheint dein Quellcode ja herzukommen: http://www.simpleavr.com/avr/multimode-clock und da kann man auch eine *.hex und eine *.eep runterladen ...
Hallo Carlito_s, das ist merkwürdig, ich hatte das makefile mit einem anderen Source-Code ausprobiert. Welche Toolchain hast Du denn? Nee, der Namen des Programms sollte i.A. keine Rolle spielen. Bei Makefiles musst Du aufpassen, dass an der richtigen Stelle Tabulatoren anstelle von Leerzeichen verwendet werden, in Deinem Original war es der Fall und in dem geänderten zumindest noch vor dem Upload. Also etwa so: target: source(s) -------> command Möglicherweise fehlt auch ein Kommando, welches aufgerufen werden soll, beispielsweise könnten die Tools (avr-gcc etc.) nicht im PATH sein. Gruß Hermann-Josef
Gast
#2159945
Ich sehe gerade das bei makefile von Herman-Josef leider doch keine *.hex und *.eep erstellt wurden. Wenn man im makefile
1 | |
zu
1 | |
ändert, dann werden die Dateien auch wirklich erstellt. (Deshalb ist es besser man nimmt das Beispiel makefile von WinAVR... als Basis von Änderungen.) Aber wie auf der Webseite http://www.simpleavr.com/avr/multimode-clock beschrieben, produziert die neuste Version des WinAVRs etwas größeren Code, so das es nicht mehr in den Mikrokontroller passt (.text 2124 ist leider größer als 2048)! Also am besten einen älteren Compiler verwenden oder den Quellcode abspecken.
@SF: Ja, Du hast recht, hatte make -f makefile avrledtest.hex getippt. Das makefile auf der von Dir zitierten Seite enthielt übrigens noch das avr-objcopy. Hermann-Josef Nachtrag: Wurde aber erst heute dort geändert...
1 | |
Gast
#2159969
@SF Das ist zwar nicht die Seite,von der ich es habe,aber in der Tat,ist es genau das Projekt.Von dort werd ich das hex mal runterladen @Hermann-Josef Also ich habe das Atmelstudio und das winavr.Über die Installation,kann ich nix sagen,hat ein Bekannter hier aufgespielt. Normalerweise,erstelle ich in Winavr ein neues Projekt,in dem Ordner,wo ich das Main.c und das Makefile drinn habe,adde die beiden teile und schaue im Makefile rein und ändere da evntl den µc,den Takt und den programmer,stell ich auf stk500 Dann drück ich auf make clean,make all,make programm und fertig.Auch wenns manchmal nicht progtrammiert,ist meistens ein hexfile erzeugt worden,das ich dann mit dem avrstudio brennen kann
Gast
#2160088
Hätte noch ne Frage Könnte ich den einen anderen µc nehmen z.B.atmega48 oder Atmega8,bei entsprechender pinbelegung? und reicht es,wenn man z.B.das Makefile entsprchend ändert und die fuses? Oder läuft das dann nur auf dem attiny? Weil die Ports,hat der ja auch
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.