Hallo,
ich habe grad WINAVR und den AVR-COFF-Package installiert. Mit Hilfe vom
WINAVR und dem makefile(.cof) aus den demo.c die demo.elf erzeugt.
Anschliessend mit "make coff" die demo.elf in demo.cof konvertiert und
dann dass Programm erfolgreich in AVR-Studio 4.07 simuliert.
Meine Frage ist nun, ob man auch den AVR-Studio 4.07 als Editor
verwenden kann, und wenn ja, wie ich das bewerkstelligen kann?
Gruß
Zoltan
Erstens solltest Du für AS4 besser "make extcoff" sagen. Siehe
Doku.
Zweitens: jein. AS4 unterstützt derzeit keinerlei 3rd-party
Compiler. Du kannst es natürlich als Editor benutzen, wenn Du
das unbedingt willst, aber den Compilerlauf mußt Du extern
anwerfen.
Hi Joerg,
danke für die Antwort.
Ich finde es umständlich, immer in der Eingabeanforderung den "make
extcoff" einzugeben und ständg zwischen WINAVR und AS4 wechseln zu
müssen. Daher meine Frage. Aber so gehts natürlch auch.
"aber den Compilerlauf mußt Du extern anwerfen"
Könntest Du bitte genauer beschreiben wie das geht?
Gruß
Zoltan
Das ist eine Einleitung für die Installation von WINAVR und AVR Studio 4
unter Windows XP, so wie ich es bei mir gemacht habe. Vielleicht hilft
es ja manch einem weiter...
Gruß
Zoltan
hi ich glaub es gibt aber noch eine andere möglichkeit und zwar erstellt
das avr studio eine bat datei die dann den compiler aufruft jetzt muss
man nur das project einmal kompiliren, wenn nun die bat datei erstellt
wurde kann man dann den inhalt löschen und durch den befehl ersetzen der
winavr startet. danach datei schreibschütze. jetzt nimmt avr studio den
compiler von winavr : ) cu
Hi chris,
ich habe das jetzt so versucht:
1. einen Assembler Projekt erzeugt, den compiliert
2. den so entstandenen xxx.dat abgeändert, so dass beim "Build and Run"
pn.exe von winavr gestartet wird.
--> "C:\Programme\Atmel\winavr\pn\pn.exe"
war das so gemeint? Der PN bringt mich aber nicht viel weiter. Sollte
ich nicht anstelle des Programmers Notepads das so irgendwie machen:
in avrbuild.dat:
"C:\Programme\Atmel\winavr\utils\bin\make.exe"
"F:\AVR Studio 4\Beispiel\test\make exctcoff"
Leider funktioniert das so nicht.
Gruß
Zoltan
Mach mal folgendes:
Installiere WinAVR und die Coff Beta!
Nun gehst Du bei und machst aus dem makefile.cof im samples Menü ein
einfaches makefile(das was da vorher steht wird jetzt überschrieben oder
Du änderst vorher den Dateinamen ind z.B. makefile_old).
Rufe dir den Programmers Notepad auf und öffne Deinen Sourcecode.
Nun unter Tools/Options den Bereich Tools auswählen.
Als Scheme entweder Global (für immer sichtbar) oder c/c++ für nur bei
C/C++ Code sichtbar auswählen.
um z.B. <make all> als Befehl einzutragen siehe Bild.
Das kannst Du dann mit z.B. make clean oder make extcoff (für AVR
Simulation) auch machen.
Du kannst übrigens jede Variable im makefile über die Kommandozeile
angeben. Die optimierung z.B. oder den Prozessortyp. Mal mit dem
makefile experimentieren. Da kann man bestimmt noch einiges
vereinfachen, so dass man einer richtigen IDE doch schon recht nahe
kommt.
Ich habe festgestellt, dass man mit dem AVR Studio 4.07 auch Tools
implementieren kann mit make all und make clean hat es schon
funktioniert. Was noch geht habe ich noch nicht weiter getestet.
ciao Axel
Ich habs jetzt auch hinbekommen. Jetzt kann ich den Kompiler und clean,
die Konvertiereung in .cof, Ponyprog und meinen Terminal Programm aus
AVR Studio 4 starten. Jetzt muss ich auch nicht mehr immer zum
Simulieren zwischen den Programmen wechseln. Ich musste nur alles
richtig einstellen, siehe Anhang. Leider ist die "Tools" Menü nach einer
Weile aus der Leiste oben verschwunden. Das ist etwas merkwürdig??
Gruß
Zoltan
Das liegt wie gesagt daran, dass Du dann das falsche Scheme (so stehts
in den Optionen) ausgewählt hast. Hast Du also Deine Tools für das C/C++
Scheme eingestellt dann sind die auch nur sichtbar, wenn Du ein
Sourcecode mit der endung .c oder .cpp auf hast.
Konfiguriere die Tools mal unter global dann sind die auch immer
sichtbar !
Hi @Axel und @Zoltan!
Ich dachte eigentlich, dass AT4.07 ein 3th Party Tool nicht unterstütz.
Da ich mich nun in den lezten Tagen mit dem AT3.56<->WINAVR
auseinandergesetzt habe, bin da natürlich hellhörig geworden.
Das Projekt aus dem pn läuft problemlos (W98), ebenso macht der Compiler
etwas unter AT4.07, nur bleibt das makefenster nicht stehen, so das ich
nicht sehen kann was da wirklich abläuft.
Gibt's da 'ne Möglichkeit das als output stehen zu lassen?
Und dann noch: Wie kann ich das Projekt im AT4 als Tree darstellen, so
wie es unter AT3 ging?
Gruß
MooseC
MooseC
@Axel,
bitte lies die Beiträge richtig, bevor Du sie kommentierst: Bei mir war
die "Tools" Menü aus AVR Studio 4 verschwunden und nicht irgendwas in
PN. Die Lösung des Rätsels war, dass wenn man unter Tools das Customize
Fenster aufmacht sich die Menüs File, Project, Edit... verschieben
lassen.
@MooseChecker "nur bleibt das makefenster nicht stehen"
unter anderem deswegen benutze ich auch weiterhin das Programmers
Notepad. Man kann das Fenster aber auch loggen:
http://www.mikrocontroller.net/forum/read-2-30878.html
Hallo Zoltan,
ich habe alle Einstellungen nach deiner Anleitung getätigt,
und habe nach dem go folgene Meldung erhalten:
Failed to create process:
Der Vorgang wurde ausgeführt.
Im makefile stand DIRAVR = C:/Winavr
Nach deiner Anleitung soll man DIRAVR = C:\Winavr engeben.
Ist das richtig ?
Gruß
Reinhard
Hallo Reinhard,
versuchs halt mal mit /. Aber ich glaube nicht, das es daran liegt. Bei
mir stand damals DIRAVR = E:\Winavr. Wenn Du Dein WINAVR aber unter z.B.
c:\Programme instaliert hast, dann must Du das natürlich davorschreiben,
bzw. entsprechend ergänzen.
Was Du noch versuchen könntest ist in das Feld Command, wo jetzt make
steht, die make.exe sammt Verzeichnis einzufügen.
So ungefähr: ...winavr\utils\bin\make.exe
Gruß
Zoltan
Hallo Zoltan,
das eine hatgeklappt, es gibt jedoch immer noch ein Problem.
set -e; avr-gcc -MM -mmcu=at90s4433 -I. -g -Os -funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3 20030421 (prerelease)
Copyright (C) 2002 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=at90s4433 -I. -g -Os -funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c: In function `main':
test.c:3: warning: control reaches end of non-void function
test.c:3:2: warning: no newline at end of file
make: *** No rule to make target `foo.o', needed by `test.elf'. Stop.
> Process Exit Code: 2
Es wird keine test.elf erzeugt, somit kann ich auch keine
test.coff machen.
Hast Du noch einen Tip?
Gruß
Reinhard
Ja, füge wieder ein # in die Zeile 45 im makefile ein:
#SRC += foo.c bar.c. ":furchtbar ;-)"
Hier hin kommen weitere Sourcefiles, falls vorhanden. foo.c und bar.c
waren nur Beispiele, die natürlioch nicht vorhanden sind und somit zu
einem Fehler beim Kompilieren führen.
Gruß
Zoltan
P.S. Woran lags denn beim ersten Mal?
ich bins nochmal,
es gibt immer noch ein Problemchen, oben ist mein makefile.
makefile:224: no file name for `-include'
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3 20030421 (prerelease)
Copyright (C) 2002 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 -mmcu=at90s4433 -I. -g -Os -funsigned-char -funsigned-bitfields
-fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=
--output test.elf -Wl,-Map=test.map,--cref -Wl,-u,vfprintf -lprintf_flt
-lm
C:\WINAVR\BIN\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o(.ini
t9+0x0): undefined reference to `main'
make: *** [test.elf] Error 1
> Process Exit Code: 2
Warum lässt Du den makefile nicht in dem original zustand? Ich weiß
jetzt nicht was da alles geändert wurde. Versuchs aber mal mit dem, im
Anhang.
Gruß
Zoltan
Ich habe noch die Anleitung für WINAVR mit meinen Erkenntnissen aus
diesem Beitrag/Forum erweitert. Wenn sich keine Fehler eingeschlichen
haben, dann ist sie jetzt fertig.
Gruß
Zoltan
Hallo zusammen,
habe mit großem Interesse diesen Thread verfolg, da ich der Zeit
versuche mich in C zu programmieren versuche.
Da ich mir auch eine Kompakte und zentrale Programmierumgebung schaffen
möchte, priorisiere ich die Lösung alles mit AVR Studio 4 zu
realisieren.
Also, meinen C-Code darin zu schreiben und dann über das Menü Tool's
den Code mit avr-gcc zu kompilieren. Und auch mein .cof-File (welches
ich zum Simulieren brauche) zu erstellen. Das funktioniert meines
erachtens auch so weit.
Jedenfalls habe ich in meinem Verzeichnis all die Dateien und das
.hex-File. Mit Aufruf von AVR_GCC Extcoff erhalte ich auch mein
.cof-File.
Was ich jetzt noch wissen möchte:
Ich programmiere einen AT90S4433. Kann ich mit diesem MC auch eine
Simulation starten. bzw. was muss ich im Vorfeld alles im AVR Studion
einstellen, damit es für diesen Typ passt?
Habe in der Hilfe irgendwas gelesen, dass es für jeden Typ ein
.xml-File gibt, bzw. dass die -typ-def.inc eingebunden werden muss.
Aber irgendwie raffe ich dass nicht.
Auch habe ich das Problem, dass wenn ich mein Projekt öffne im
I/O-Fenster der Atmega128 angezeigt wird. Und wenn ich das .cof File
(zur Simulation) öffnen möchte, ich im Fenster in dem ich die
Debug-Plattform (hier dann 'Simulator') dann nur der ATMEGA128
auszuwählen ist. Alle anderen Typen sind grau und können nicht
ausgewählt werden.
Wenn ich diesen dann auswähle, dann wird mir eine Fehlermeldung
gebracht, dass das AVR-Setup dieses Device nicht unterstütz (oder so
ähnlich).
In meinem Project, habe ichnur das .c-File integriert (unter
Assembler). Stimmt vielleicht das nicht bzw. muss ich hier noch anderes
integrieren? Ich weiss es echt nicht.
Hoffe es kann mir einer von Euch helfen.
Vielen Dank schon im voraus.
Gruß
jobuma
Hallo,
>priorisiere ich die Lösung alles mit AVR Studio 4 zu
realisieren
Ja das habe ich auch ausprobiert. Ich fand es aber umständlich nach
jeder Simulation, ständig meinen C-File neu laden, und das
Simulationsfenster schließen zu müssen. Darüber hinaus kann man in AVR
Studio nicht verfolgen, was beim "make" passiert, denn das DOS
Fenster verschwindet immer gleich wider. Es gibt natürlich noch die
möglichkeit, wenn Du deine Reflexe verbessern möchtest, beim Erscheinen
des DOS Fensters auf die PAUSE Taste zu drücken..
>In meinem Project, habe ich nur das .c-File integriert (unter
Assembler). Stimmt vielleicht das nicht bzw. muss ich hier noch anderes
integrieren?
Versuch mal keinen Assembler Projekt zu öffnen. Statdessen einfach auf
open file.. , und dann nur deinen C-File öffnen. Dann unter tools auf
"go" (oder wie du es auch immer genannt hast) und "convert 2cof".
Nun wider auf open file.. und diesmal den .cof file öffnen.
Anschließend müsstest Du deinen AT90S4433 auswählen können.
Gruß
Zoltan
Hallo Zoltan,
danke für Deine Antwort. Hat aber leider nichts geändert. Kann immer
noch nur den 4433 auswählen.
Habe noch ein paar Fragen dazu.
Ich habe den Programmer von dieser HP (am Parallelport) und meine
Schaltung auf einem Steckbrett aufgebaut. Also kein STK500
angeschlossen. Daran kann es aber doch nicht liegen, oder?
Der SImulator ist doch von der Harwaeunäbhängig.
Wenn ich ein .c-File öffne habe ich im Workspace-Fenster (im Studio)
nicht's drin stehen. Ist da bei Dir auch so.
Bzw. was müsste man eigentlich ändern wenn man einen anderen MC
verwenden würde.
Wenn Du also jetzt z.b. einen 4433 proggen wolltest. Was müsstest Du
für einstellungen änder? Im makefile den mccu-Eintrag und im Code die
spezifischen Sachen natürlich anpassen, das ist klar. Aber was sonst
noch? Ich weiss immer noch nicht, was es mit den .xml-Files der
einzelnen Typen auf sich hat (im AVR Studio) die unter dem Verzeichnis
'PartDescriptionFiles'.
Was Dein Problem mit dem Fenster anbelangt (beim ausführen von
make.exe), denke ich dass sich eine Lösung finden lässt. Habe da auch
schon rumprobiert.
Am besten wäre ja wohl wenn, die ganzen Ausgaben im Output-Fenster im
AVR Studio angezeigt würden. Wird aber wohl nicht so einfach zu
realisieren sein.
HAb aber noch 2 andere Lösungen:
1.
Ein BatchFile (ich benenne es go.bat), in dem make %1 %2 aufgerufen
wird. Dieses File ins Verzeichnis, wo die make.exe liegt. (Damit kann
es zentral und von überall aufgerufen werden; wie ja auch make.exe)
Dann neuen Eintrag unter Tools erstellen. Bei 'comannd' go (für die
go.bat), bei Parameters all "target="%d eingeben, und wie gewohnt %d
beim Vezeichnis. Damit werden die Parameter all und target=(File ohne
Ext) an die Batch übergeben, welche dann make aufruft.
Die Anführungszeichen, bei target sind nötig, da sonst die Parameter
nicht sauber an die Batch übergeben werden, und beim ausführen von
make.exe ein Fehler auftritt.
So, jetzt kann man unter den Eigenschaften der Batch unter den Haken
bei 'Programm beenden' rausnehmen. Damit wird die Batch im
DOS_Fenster ausgeführt, welches nach Programmende nicht geschlossen
wird. Also das was wir wollen, und so das Ergebnis der Compilierung
sehen. Ich habe WIn98SE und es funktioniert. Unter NT, W2K, WXP sollte
dies aber auch so in etwa funktionieren.
2.
Die andere Lösung wäre, bis zur Batch bleibt alles gleich, nur wird
darin dann make %1 %2 > c:\CpmileResult.txt eigetragen (Zeile1)
Dann einfach notepade c:\CompileResult.txt eintragen (Zeile2).
Hier wird alles was normalerweise am Fensterausgegeben wird in die
angegebene Datei geschrieben (die ist frei wählbar, und wird erstellt
wenn es diese nocht gibt bzw. überschrieben wenn doch).
Anschließend wird notepad mit dieser Datei geöffnet, und Du siehst das
Ergebnis. Also auch das was wir wollen.
Soweit mal das.
Ich habe dann noch vor per vbscript, diese Datei zu durchsuchen und den
ErrorStatus zu ermitteln, und wenn der none ist, dann automatisch denn
Brennvorgang anzustossen.
Dazu brauche ich aber eine Kommandozeilen-Programmer-Software. Benutze
derzeit yaap, der kann aber nicht per Kommandozeile (Batch) aufegrufen
werden.
Es gibt aber glaube ich AVRDude, welche bei AVR-GCC dabei ist. Mit dem
versuchichs mal.
DAnn könnte man mit einem Klick Compilieren und wenn fehlerfrei
automatisch dass Programm auf den AVR brennen.
Auch das Extcoff könnte da mit rein. MAn hätte also mit einem Klick
alles.
Wäre doch cool. Oder? Was meinst Du?
Aber genug jetzt. Nochmal Danke und Gruß
jobuma
>Der SImulator ist doch von der Harwaeunäbhängig.
Ja, er ist Hardwareunabhängig.
>im Workspace-Fenster (im Studio) nicht's drin stehen.
Ist bei mir auch so.
>Wenn Du also jetzt z.b. einen 4433 proggen wolltest. Was müsstest Du
für einstellungen änder?
Nachdem man die xxx.cof geöffnet hat, hat man die Möglichkeit unter
debug -> select platform and device oder debug ->select avr
simulator options verschiedene Einstellungen zu ändern, wie z.B. den
MC Typ, Taktfrequenz. Das ist glaube ich alles.
>.xml-Files der einzelnen Typen auf sich hat (im AVR Studio) die unter
dem Verzeichnis 'PartDescriptionFiles'.
Da kenne ich mich leider nicht aus.
Deine 1. Lösung habe ich ausprobiert. Es läuft bestens. Ich habe noch
das 'make extcoff' auch in die Batch-Datei eingetragen. Nur kann ich
unter WINXP die Einstellung für das Batch-File, mit dem ich das DOS
Fenster offen lassen könnte , nicht finden.
>DAnn könnte man mit einem Klick Compilieren und wenn fehlerfrei>automatisch dass Programm auf den AVR brennen.
Die Sache mit dem automatischen brennen halte ich nicht für sehr
sinnvoll, denn meinereiner will nicht immer nach jedem erflogreichen
kompilieren gleich den MC brennen. :->
Jetzt noch zu dem "nur ATMEGA128"
ich glaube es hatte kürzlich auch jemand das selbe Problem. Schau mal
im Forum bischen rum. Hast Du vielleicht noch die alte AVR-Freaks
installiert? Wenn ja, dann die deinstallieren.
Gruß
Zoltan
hab gerade noch mal geschaut. Hab tatsächlich noch eine
avrfreaks-version drauf. Und ich dachte die sei schon längst runter.
Ich werde es dann noch mal versuchen.
Dann scheint es bei XP nicht einzustellen zu sein. Alternativ eine neue
Zeile in Dein Batch.
Am besten dann nach dem make und nach dem extcoff.
Dann müsste nach jedem ausführen die Textausgabe angehalten werden, und
Du siehst was der entsrechende Befehl ins Fenster geschrieben hat.
Oder Lösung 2. Die funktioniert bei mir auch.
Was das automatische brennen anbelangt, hat Du recht ist nicht sehr
sinnvoll bei jedem compilieren auch zu brennen.
Aber mann könnte mit einem neuen Tools-Eintrag mit einem Klick aus dem
Studio raus brennen.
Aber wie auch immer.
Gruß und Danke
jobuma
Hi Zoltan,
sorry hab ja das wichtigste vegessen.
Ich meinte mit dem Befehl 'Pause' in DeinemBAtch kannst Du die
weitere Abarbeitung des Batch's anhalten.
Also ein 'pause' nach dem make all und ein 'pause' nach dem make
extcoff.
Bzw. experemtiere selber mal ein bisschen rum wie es für dich am besten
wäre.
Oder aber wie gesagt Lösung2.
Gruß
jobuma
na also, wunderbar. Oder.
HAb die avrfreaks-version deinstalliert. Hat aber immer noch nicht
funktioniert.
Habe jetzt mal alles deinstalliert. Und installiere jetzt winavr und
avr-extcoff nochmal. Anschließend installiere ich nochmal AVR Studio
4.
Und hoffe das es dann klappt.
Das werde ich mir aber voraussichtlich morgen vornehmen.
Bis dahin werde ich mir jetzt ein bisschen Mut für diese schwierige
Aufgabe antrinken ;-)
Also schönen Samstag-Abend und vermutlich werde ich morgen wieder
reinschauen.
Gruß
jobuma
Hi,
@ Zoltan
WINAVR Installationsbeschreibung sehr gut.
Nur auf Seite 2 ist mir folgendes aufgefallen:
Ziele: 27 (anstatt 33) MCU = ATMEGA8
usw.
Gruß
DIetmar