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
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
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.
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
# MCU name
2
MCU = attiny2313
danach änderst du noch die Zeile mit TARGET= auf
1
# Target file name (without extension).
2
TARGET = mclock
du kanst auch noch die Zeile mit FCPU= auf
1
F_CPU = 1000000
ä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.
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.
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
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
>>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:
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
Ich sehe gerade das bei makefile von Herman-Josef leider doch keine
*.hex und *.eep erstellt wurden. Wenn man im makefile
1
all: $(TARGET).elf
zu
1
all: $(TARGET).elf $(TARGET).hex $(TARGET).eep
ä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
[April 26th, 2011] replace makefile, the old one does not make hex output, just elf, now it makes both.
@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
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