Forum: Mikrocontroller und Digitale Elektronik AVRDude als Tool in AVR Studio 4 einbinden


von Frank (Gast)


Lesenswert?

Liebe Gemeinde,

ich weiß, wir sind beim Studio inzwischen bei V6, aber bei mir fristet 
noch ein alter PC sein Gnadenbrot im Bastelkeller und der schafft den 
Wechsel von 4 auf 5 nicht (P-III-660MHz mit 0,5GB RAM). Aber mit Studio 
4 funktioniert der perfekt. Soviel zur Vorgeschichte.

Nun habe ich den uISP-Stick aus dem Hause eHajo, der funktioniert am USB 
auch perfekt. Ich erzeuge mit AVR Studio 4 die Hexdatei und kann sie 
anschließend manuell aus einer DOS-Box mit AVRDude per uISP-Stick auf 
den ATmega8 übertragen. Ich kann sogar AVRDude als "Tool" in das AVR 
Studio hinein-"customizen". Es wird dann auch gestartet, ABER...es 
blitzt nur ganz kurz ein DOS-Fenster auf und das war's. Weder 
programmiert da was noch gelingt es mir, die Ausgabe per > in eine 
Textdatei umzuleiten.

Daher folgende Fragen:
a) Gibt es bei Studio 4 überhaupt schon die Möglichkeit, Informationen 
per Variable aus dem Studio an das Tool zu übergeben wie bei
-U flash:w:$(OutputDirectory)\$(Name).hex:i
oder kann Studio 4 das noch gar nicht

b) Gibt es eine Kommandozeilenoption, die AVRDude zur Ausgabe in eine 
Logdatei bewegt? Ich habe keine gefunden, aber vielleicht gibt's ja 
Cracks, die hidden options aus dem Quellcode kennen.

Danke,
Frank

von Oliver (Gast)


Lesenswert?

Das Studio 4 kann ja noch nicht einmal die Atmel-eigenen 
Programmiertools mit dem aktuellen Projektnamen versorgen, da wird es 
das wohl auch mit Fremdtools nicht können.

Oliver

von spess53 (Gast)


Lesenswert?

Hi

>Das Studio 4 kann ja noch nicht einmal die Atmel-eigenen
>Programmiertools mit dem aktuellen Projektnamen versorgen,

Nur wenn man sich nicht auskennt.

MfG Spess

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Frank schrieb:
> Gibt es eine Kommandozeilenoption, die AVRDude zur Ausgabe in eine
> Logdatei bewegt?
1
avrdude ... 2> \temp\logfile.txt

Kein Fietscher von AVRDUDE, aber eins von cmd.exe ;-) bzw. der
Bash, falls diese durch das Makefile aufgerufen wird.  In
letzterem Falle muss man jedoch die Backslashes durch Vorwärts-
schrägstriche ersetzen:
1
avrdude ... 2> /temp/logfile.txt

Ansonsten gibt's doch auch irgendein Kommando (“wait” vielleicht?),
mit dem man auf einen Tastendruck warten kann, damit das Fenster
vom cmd.exe nicht gleich wieder verschwindet.  Dieses Kommando
kannst du mit einem Semikolon nach dem AVRDUDE-Kommando angeben.

von Frank (Gast)


Lesenswert?

Jörg Wunsch schrieb:
>
1
> avrdude ... 2> \temp\logfile.txt
2
>


Danke zwar für die Antwort, aber ich hatte explizit geschrieben, dass 
das im Studio 4 nicht funktioniert. Man kann die Umleitung entweder in 
das obere Feld hinter das avrdude-kommando hängen, dann werden 
vermutlich die Parameter aus dem zweiten Feld dahinter gehängt. Oder man 
schreibt die Umleitung in das mittlere Feld als fiktiven letzten 
Parameter. Beides führt nicht zur Erzeugung einer Log-Datei. Hat das 
schon mal jemand hinbekommen (via "Tools" im Studio 4!). Dann bitte 
Screenhots pasten, wo man welche Kommandoelemente hinpacken soll und wo 
welche Anführungsstriche hingehören.
Vielen Dank!

Zu den Übergabevariablen gab's bislang nichts Konkretes. Weiss jemand, 
ob und wie man im Studio 4 Übergabevariablen an die Tools-Kommandos 
leiten kann?
Auch hier: Danke!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Frank schrieb:
> aber ich hatte explizit geschrieben, dass
> das im Studio 4 nicht funktioniert

Ich war mir aber nicht sicher, ob es ggf. daran liegt, dass du
">" statt "2>" geschrieben hast.

Scheint aber so zu sein, dass sie da selbst einen spawn-Aufruf
starten ohne cmd.exe, dann geht das natürlich nicht.  Prinzipiell
könnte ich natürlich in avrdude einbauen, dass man statt stderr
auch eine Logdatei angeben kann.  Dafür wäre nur ein freopen()
notwendig, das gehört zum Umfang von Standard-C (ist also auch
auf jeden Fall unter Windows verfügbar).  Die Option -l wäre ja
noch frei.

Ich weiß nur nicht, ob dir das jetzt was nützt, wenn ich das
einbaue …

von Frank (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Scheint aber so zu sein, dass sie da selbst einen spawn-Aufruf
> starten ohne cmd.exe, dann geht das natürlich nicht.  Prinzipiell
> könnte ich natürlich in avrdude einbauen, dass man statt stderr
> auch eine Logdatei angeben kann.  Dafür wäre nur ein freopen()
> notwendig, das gehört zum Umfang von Standard-C (ist also auch
> auf jeden Fall unter Windows verfügbar).  Die Option -l wäre ja
> noch frei.
>
> Ich weiß nur nicht, ob dir das jetzt was nützt, wenn ich das
> einbaue …

Ich parliere mit einem AVRDude-Entwickler? Cool! Ja, wäre schon 
hilfreich. Dann könnte ich nämlich das -l in die zweite Zeile des Studio 
4 zu den anderen Parametern stecken und würde dadurch mitbekommen, was 
ihn quält. Ich kann aber kein C kompilieren, von daher wäre ein 
Win-Binary nett.

Grüße und Danke
Frank

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Frank schrieb:
> Ja, wäre schon
> hilfreich. Dann könnte ich nämlich das -l in die zweite Zeile des Studio
> 4 zu den anderen Parametern stecken und würde dadurch mitbekommen, was
> ihn quält.

OK, habe ich eingebaut.  Leider ist das eine Einbahnstraße: freopen()
schließt zuerst den bisherigen stderr-Stream, erst danach wird
versucht, das neue Logfile zu öffnen.  Geht dies schief, hat man kein
stderr mehr (zumindest nicht mehr auf portable Weise), auf dem man
diese Tatsache vermelden könnte.  Ich schreibe daher dann die
Fehlermeldung in diesem Falle nach stdout und beende das Programm
sofort.

> Ich kann aber kein C kompilieren, von daher wäre ein
> Win-Binary nett.

Ach, aber unsereiner als gar-nicht-Windows-benutzen-Woller muss für
dich eins compilieren können? ;-)

Du hast Glück: ich habe gerade vor zwei Tagen einen Script eingecheckt,
mit dem man ein Win32-Binary mit den MinGW-Tools als Crosscompiler
unter Unix bauen kann.  Das hier wäre also mal eine Gelegenheit, das
damit erzeugte Binary getestet zu bekommen.

Prerequisites: du musst die libusb-win32 installiert haben, damit er
die entsprechende DLL findet, gegen die gelinkt worden ist.

(Ich habe das Zipfile mal 6.0rc2 genannt, weil es sich vom als 6.0rc1
veröffentlichten Sourcecode bereits unterscheidet.  In der Versions-
ausgabe meldet es sich jedoch noch als 6.0rc1.)

von Frank (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Du hast Glück: ich habe gerade vor zwei Tagen einen Script eingecheckt,
> mit dem man ein Win32-Binary mit den MinGW-Tools als Crosscompiler
> unter Unix bauen kann.  Das hier wäre also mal eine Gelegenheit, das
> damit erzeugte Binary getestet zu bekommen.

Erstmal allerherzlichsten Dank für diesen Turbo-Service.

Und nun:

a) Der Cross gebackene Release Candidate funktioniert! Ich habe 
allerdings nur Betanken des Flashes eines ATMega8 getestet. Läuft sauber 
mit und ohne -l.

b) Mittels -l konnte die Fehlermeldung eingefangen werden:
1
avrdude.exe: reading input file "$(OutputDirectory)\$(Name).hex"
2
avrdude.exe: can't open input file $(OutputDirectory)\$(Name).hex: No such file or directory
3
avrdude.exe: read from file '$(OutputDirectory)\$(Name).hex' failed
Offensichtlich ersetzt Studio 4 die Übergabevariablen nicht, wenn man 
sie so notiert.

Weiß irgendwer, ob Studio 4 das überhaupt kann und wenn ja, wie?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Frank schrieb:
> a) Der Cross gebackene Release Candidate funktioniert! Ich habe
> allerdings nur Betanken des Flashes eines ATMega8 getestet. Läuft sauber
> mit und ohne -l.

Schön.

Zu den Übergabeparametern von AVR Studio kann ich dir jedoch leider
nicht helfen.  Als Idee nur noch: es gab dafür meines Wissens auch
einen SDK, mit dem man sich selbst Plugins bauen kann.  Auf diese
Weise sollte man in der Lage sein, ein AVRDUDE-Plugin zu bauen.
Wird aber vermutlich nur für Visual C/C++ unterstützt sein.

von Helmut (Gast)


Lesenswert?

AVRISP MKII-Programmer - Clones, z.B. basierend auf LUFA und Andere, 
funktionieren nicht mehr mit avrdude 6.xxx hingegen mit 5.1.xx 
einwandfrei.

Es erfolgt entweder die Meldung "cant find any usb device" oder:
1
C:\avrdude\avrdude.exe -C C:\avrdude\avrdude.conf -B 1.1851852 -p m328p -P usb -c avrispmkii  -U lfuse:r:"C:\TEMP\rbt84AE.tmp":r -U hfuse:r:"C:\TEMP\rbt84AF.tmp":r -U efuse:r:"C:\TEMP\rbt84BF.tmp":r -U lock:r:"C:\TEMP\rbt84C0.tmp":ravrdude.exe: stk500v2_recv_mk2: error in USB receive
2
avrdude.exe: stk500v2_recv_mk2: error in USB receive
3
avrdude.exe: stk500v2_recv_mk2: error in USB receive
4
avrdude.exe: stk500v2_recv_mk2: error in USB receive
5
avrdude.exe: stk500v2_recv_mk2: error in USB receive
6
avrdude.exe: stk500v2_recv_mk2: error in USB receive
7
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
8
avrdude.exe: stk500v2_recv_mk2: error in USB receive
9
avrdude.exe: stk500v2_recv_mk2: error in USB receive
10
avrdude.exe: stk500v2_recv_mk2: error in USB receive
11
avrdude.exe: stk500v2_recv_mk2: error in USB receive
12
avrdude.exe: stk500v2_recv_mk2: error in USB receive
13
avrdude.exe: stk500v2_recv_mk2: error in USB receive
14
avrdude.exe: stk500v2_recv_mk2: error in USB receive
15
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
16
avrdude.exe: stk500v2_recv_mk2: error in USB receive
17
avrdude.exe: stk500v2_recv_mk2: error in USB receive
18
avrdude.exe: stk500v2_recv_mk2: error in USB receive
19
avrdude.exe: stk500v2_recv_mk2: error in USB receive
20
avrdude.exe: stk500v2_recv_mk2: error in USB receive
21
avrdude.exe: stk500v2_recv_mk2: error in USB receive
22
avrdude.exe: stk500v2_recv_mk2: error in USB receive
23
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
24
avrdude.exe: stk500v2_recv_mk2: error in USB receive
25
avrdude.exe: stk500v2_recv_mk2: error in USB receive
26
avrdude.exe: stk500v2_recv_mk2: error in USB receive
27
avrdude.exe: stk500v2_recv_mk2: error in USB receive
28
avrdude.exe: stk500v2_recv_mk2: error in USB receive
29
avrdude.exe: stk500v2_recv_mk2: error in USB receive
30
avrdude.exe: stk500v2_recv_mk2: error in USB receive
31
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
32
avrdude.exe: stk500v2_recv_mk2: error in USB receive
33
avrdude.exe: stk500v2_recv_mk2: error in USB receive
34
avrdude.exe: stk500v2_recv_mk2: error in USB receive
35
avrdude.exe: stk500v2_recv_mk2: error in USB receive
36
avrdude.exe: stk500v2_recv_mk2: error in USB receive
37
avrdude.exe: stk500v2_recv_mk2: error in USB receive
38
avrdude.exe: stk500v2_recv_mk2: error in USB receive
39
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
40
avrdude.exe: stk500v2_recv_mk2: error in USB receive
41
avrdude.exe: stk500v2_recv_mk2: error in USB receive
42
avrdude.exe: stk500v2_recv_mk2: error in USB receive
43
avrdude.exe: stk500v2_recv_mk2: error in USB receive
44
avrdude.exe: stk500v2_recv_mk2: error in USB receive
45
avrdude.exe: stk500v2_recv_mk2: error in USB receive
46
avrdude.exe: stk500v2_recv_mk2: error in USB receive
47
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
48
avrdude.exe: stk500v2_recv_mk2: error in USB receive
49
avrdude.exe: stk500v2_recv_mk2: error in USB receive
50
avrdude.exe: stk500v2_recv_mk2: error in USB receive
51
avrdude.exe: stk500v2_recv_mk2: error in USB receive
52
avrdude.exe: stk500v2_recv_mk2: error in USB receive
53
avrdude.exe: stk500v2_recv_mk2: error in USB receive
54
avrdude.exe: stk500v2_recv_mk2: error in USB receive
55
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
56
avrdude.exe: stk500v2_command(): failed miserably to execute command 0x03
57
avrdude.exe: stk500v2_getparm(): failed to get parameter 0x98
58
avrdude.exe: Unable to get parameter 0x98
59
avrdude.exe: stk500v2_recv_mk2: error in USB receive
60
avrdude.exe: stk500v2_recv_mk2: error in USB receive
61
avrdude.exe: stk500v2_recv_mk2: error in USB receive
62
avrdude.exe: stk500v2_recv_mk2: error in USB receive
63
avrdude.exe: stk500v2_recv_mk2: error in USB receive
64
avrdude.exe: stk500v2_recv_mk2: error in USB receive
65
avrdude.exe: stk500v2_recv_mk2: error in USB receive
66
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
67
avrdude.exe: stk500v2_recv_mk2: error in USB receive
68
avrdude.exe: stk500v2_recv_mk2: error in USB receive
69
avrdude.exe: stk500v2_recv_mk2: error in USB receive
70
avrdude.exe: stk500v2_recv_mk2: error in USB receive
71
avrdude.exe: stk500v2_recv_mk2: error in USB receive
72
avrdude.exe: stk500v2_recv_mk2: error in USB receive
73
avrdude.exe: stk500v2_recv_mk2: error in USB receive
74
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
75
avrdude.exe: stk500v2_recv_mk2: error in USB receive
76
avrdude.exe: stk500v2_recv_mk2: error in USB receive
77
avrdude.exe: stk500v2_recv_mk2: error in USB receive
78
avrdude.exe: stk500v2_recv_mk2: error in USB receive
79
avrdude.exe: stk500v2_recv_mk2: error in USB receive
80
avrdude.exe: stk500v2_recv_mk2: error in USB receive
81
avrdude.exe: stk500v2_recv_mk2: error in USB receive
82
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
83
avrdude.exe: stk500v2_recv_mk2: error in USB receive
84
avrdude.exe: stk500v2_recv_mk2: error in USB receive
85
avrdude.exe: stk500v2_recv_mk2: error in USB receive
86
avrdude.exe: stk500v2_recv_mk2: error in USB receive
87
avrdude.exe: stk500v2_recv_mk2: error in USB receive
88
avrdude.exe: stk500v2_recv_mk2: error in USB receive
89
avrdude.exe: stk500v2_recv_mk2: error in USB receive
90
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
91
avrdude.exe: stk500v2_recv_mk2: error in USB receive
92
avrdude.exe: stk500v2_recv_mk2: error in USB receive
93
avrdude.exe: stk500v2_recv_mk2: error in USB receive
94
avrdude.exe: stk500v2_recv_mk2: error in USB receive
95
avrdude.exe: stk500v2_recv_mk2: error in USB receive
96
avrdude.exe: stk500v2_recv_mk2: error in USB receive
97
avrdude.exe: stk500v2_recv_mk2: error in USB receive
98
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
99
avrdude.exe: stk500v2_recv_mk2: error in USB receive
100
avrdude.exe: stk500v2_recv_mk2: error in USB receive
101
avrdude.exe: stk500v2_recv_mk2: error in USB receive
102
avrdude.exe: stk500v2_recv_mk2: error in USB receive
103
avrdude.exe: stk500v2_recv_mk2: error in USB receive
104
avrdude.exe: stk500v2_recv_mk2: error in USB receive
105
avrdude.exe: stk500v2_recv_mk2: error in USB receive
106
avrdude.exe: stk500v2_getsync(): timeout communicating with programmer
107
avrdude.exe: stk500v2_command(): failed miserably to execute command 0x02
108
109
avrdude.exe: stk500v2_setparm(): failed to set parameter 0x98
110
111
avrdude.exe done.  Thank you.

Lösung siehe:

https://savannah.nongnu.org/bugs/index.php?40831

könnte das eingepflegt werden? Das wäre prima!

von Brumm (Gast)


Lesenswert?


von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Brumm schrieb:
> Das Wiki zeigt auf obigen Anhang.

Dann editier' es bitte.  Dafür ist es ein Wiki.

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
Noch kein Account? Hier anmelden.