PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WinAVR wo ist die hex-datei?



.orusA-
04.08.2010, 14:20
Hey

also folgendes : Zu Beginn der Anleitung steht ja dass man die .bat-Files mit WINAVR einbinden muss, sodass unter "Tools" die beiden Einträge "make" und "clean" erscheinen. Das hat auch geklappt und alles wunderbar.

Bis hierhin habe ich auch immer die vorliegende C-Datei "test.c" programmiert, ge"make"t und ge"clean"t. Meine Frage jetzt. Wenn ich bei WINAVR nun ein eigenes Programm schreiben will, nenn es sagen wir mal "programm1.c" und speichere es auf dem Desktop, kicke auf make und auf clean. Dann ist dort trotzdem keine "programm1.hex" erstellt worden. Anscheinend ist das makefile oder was weiß ich mit der test.c - Datei verknüpft?!!? Ich versteh das nicht...

Danke für eure Hilfe!

askazo
04.08.2010, 14:31
Wenn Du das clean weglässt, sollte es gehen.... ;)
Mit make kompilierst Du das Programm, mit clean löschst Du die kompilierten Dateien wieder....
Im makefile musst Du natürlich auch angeben, welche Datei kompiliert werden soll.

Gruß,
askazo

.orusA-
04.08.2010, 14:40
Und wie und wo kann ich das im makefile angeben?

Wird dann die hex-datei um Desktop gespeichert oder wo?

askazo
04.08.2010, 15:00
Puh, lange nicht mehr mit makefiles gearbeitet (wenn man AVR Studio verwendest, kannst man das alles über die Projekteigenschaften einstellen...)

Im makefile müsste es den Eintrag SRC geben. Dort gibst Du den Namen der C-Datei an. Die Objekt-Dateien und das hex-File sollten eigentlich im selben Verzeichnis wie die C-Datei landen.

Valen
04.08.2010, 15:17
Und wie und wo kann ich das im makefile angeben?

Wird dann die hex-datei um Desktop gespeichert oder wo?
Habst du den makefile schon geöffnet?


# Target file name (without extension).
TARGET = testDas ist die name der den hex-datei bekommen wird.


# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c

# If there is more than one source file, append them above, or adjust and
# uncomment the following:
SRC += asuro.cDas ist den teil das den compiler erzählt welches c-dateien er brauchen soll. Du siehst er macht eine ergänzung mit die 'variabele' TARGET. Also er sucht nach den c-datei der den gleichen nahme hat als was er den hex datei nennen soll. Bei das letzte teil wird an das make program mitgeteilt es soll den asuro code bibliothek (asuro.c) mit compilieren.

.orusA-
05.08.2010, 13:26
Ich hab im makefile jetzt folgendes verändert


# Target file name (without extension).
TARGET = programm1

Dann mein Programm gestartet, bei "make" kam dann die Fehlermeldung


make: *** No rule to make target `programm1.o', needed by `programm1.elf'. Stop.

> Process Exit Code: 2

Valen
05.08.2010, 13:29
Gibt es ein programm1.c in den gleichen mappe?

.orusA-
05.08.2010, 14:02
In welcher Mappe?

askazo
05.08.2010, 14:09
Valen meint, ob das makefile im selben Ordner liegt, wie die Datei programm1.c ...

.orusA-
05.08.2010, 18:14
Nein, das makefile war nicht im selben Ordner wie das C-File "programm1.c"

Aber jetzt funktioniert es immer noch nicht, es gibt immer den gleichen Fehler den ich oben schon gepostet habe.

Valen
05.08.2010, 19:07
Den anleitung geht davon aus das deine Asuro Programmen gespeichert sind in weitere tiefere Ordner in dem C:\ASURO_src Ordner. Es bindet den make-tool aber nur ein fur das FirstTry program. Weil es ein bestimmte Pfad zu diesen Ordner macht. Im Prinzip kannst du das auch auf den Desktop speichern, aber das Pfad ist etwas compliziert und lang. Und make braucht weitere dateien als nur dein programm1.c datei.

Den folgende Link ist ein Zip-datei mit die quellcode von den beide Beispiel Programmen (FirstTry und SelfTest) von Asuro:

http://www.arexx.com/downloads/asuro/asuro_src.zip

In den FirstTry Ordner stehen den folgende Dateien:

asuro.c
asuro.h
test.c
makefile.
Test-All.bat
Test-Clean.bat

Alle von diesen Dateien müssen in die selbe Ordner stehen damit man von diesen ein Hex datei machen kann. Dazu machst du ein Kopie von den FirstTry Ordner, und nennst du es nach Wunsch. Nur test.c darfst du ergänzen mit deine eigene programm1.c. Aber dan müsst auch die "TARGET =" Zeile geändert werden in dem makefile. (wie du schon gestern gemacht hat.)

Wen das Programm1.c richtig gespeichert ist in diesen Ordner, reichst es nur auf die Test-All.bat datei Döppel zu klicken. (und Test-clean.bat fur das reinigen des Ordner. ;) )Das ist das selbe was PN2 mit das "Make" und "Clean" in den Tools-Menu macht.

Fur jede zukunftiges program das du macht wurdest du ein 'make' und 'clean' einbindung machen mussen in das Tools menu von PN2. Persönlich finde ich das unsin. Direkt die .bat dateien döppelklicken in dem gewünschte Ordner ist viel einfacher und macht weniger müll.

.orusA-
05.08.2010, 19:51
Es geht immer noch nicht =(

Ich habe jetzt alle Dateien in den Ordner kopiert, in dem die DAtei "programm1.c" ist, und hab im makefile die Zeile in "TARGET = programm1" geändert. Aber die Fehlermeldung bleibt die gleiche bzw. wenn ich auf Test-all.bat klicke passiert nichts.

Was mache ich falsch?

Valen
05.08.2010, 20:34
Bitte pas den Test-All.bat datei an damit das folgende commando drin steht:


make all > out.log

Dan bitte noch ein mahl ausfuhren und die datei out.log hier posten.

.orusA-
05.08.2010, 21:12
Ok hab ich gemacht.


-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3.1
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=programm1.lst programm1.c -o programm1.o

Valen
05.08.2010, 22:08
Ist das alles? Sieht aus es bricht irgend wo ab.

War es fuhr dich uberhaupt möglich den FirstTry programme zu compilieren, ohne den anpassung von den makefile und erganzung von test.c mit dein eigenes Programm?

.orusA-
05.08.2010, 23:25
Ja, früher ging alles, wie gesagt, wenn ich die Programme mit dem test.c gespeichert hab, ging es.

Nur ich wollte halt nicht immer meine Programme test.c nennen...das wär ja blöd

Valen
05.08.2010, 23:30
Ja, früher ging alles, wie gesagt, wenn ich die Programme mit dem test.c gespeichert hab, ging es.Früher! Das impliziert eine lange Weile. Nun noch, oder bricht es dan auch ab? Ist etwas geändert an dein System seit dein letztes erfolgreiches compilier versuch.

.orusA-
06.08.2010, 13:51
Nein, nichts geändert..

Mit früher hab ich gemeint vor 2 Tagen...

Valen
06.08.2010, 14:19
Hmm, merkwurdig. Kannst du die Test-All.bat datei noch ein mahl anpassen mit das volgende? Und wieder posten? (aber das sind nun 2 .log dateien!!!) Ich möchte gern wissen was genau in dein projekt mappe steht.


dir > dir.log
make all > out.log

.orusA-
06.08.2010, 23:44
Okay also das was ich bei dem ersten Log gepostet hab belibt gleich.

Und bei dem anderen stand folgendes da.


Volume in Laufwerk C: hat keine Bezeichnung.
Volumeseriennummer: 6649-A8A6

Verzeichnis von C:\Asuro\Programme

06.08.2010 23:43 <DIR> .
06.08.2010 23:43 <DIR> ..
26.11.2003 18:17 7.680 asuro.c
05.08.2010 19:47 34 asuro.d
22.10.2003 09:34 4.874 asuro.h
06.08.2010 23:43 0 dir.log
05.08.2010 13:24 7.269 makefile
04.08.2010 14:10 263 programm1.c
05.08.2010 19:47 46 programm1.d
06.08.2010 23:43 34 Test-all.bat
06.01.2001 19:08 10 Test-clean.bat
04.08.2010 13:58 121 test.c
04.08.2010 14:08 31 test.d
04.08.2010 14:08 13 test.eep
04.08.2010 14:08 11.181 test.elf
04.08.2010 14:08 4.309 test.hex
04.08.2010 14:08 36.494 test.lss
04.08.2010 14:08 5.884 test.lst
04.08.2010 14:08 24.704 test.map
04.08.2010 14:08 2.844 test.o
18 Datei(en), 105.791 Bytes
2 Verzeichnis(se), 460.704.788.480 Bytes frei

Valen
07.08.2010, 02:28
Kannst du das Test-clean.bat einmal ausführen, danach wieder versuchen mit Test-all.bat? (aber nun kannst du das "dir > dir.log" weglassen) Da sind noch einige .d Dateien in den Ordner von einer altere Version von dein Programm. Sonnst muss ich leider aufgeben.

Vielleicht ein weitere Lösung könnte sein das du möglich bestimmte c-code verwendet hat in deiner letzte program das ein 'bug' aktiviert. WinAVR version 3.3 ist schon ser alt. http://winavr.sourceforge.net/