Forum: Mikrocontroller und Digitale Elektronik AVR Studio 5 - uC Programmieren ("Write to Flash")


von Ben (Gast)


Lesenswert?

Hallo zusammen,

ich stehe gerade auf dem Schlauch...
Habe das AVR Studio 5 beta mal getestet, finde aber keinen Butten um den 
Microcontroller zu programmieren. Kann es nur umständlich über das 
Programmier-Menü machen, dort die Hex-Datei & den Programmer (MK2) 
auswählen und den "Program" - Button drücken.

Beim AVR Studio 4.18 gabs ja den Button "Write to flash" und sowas habe 
ich in der 5er Version vergeblich gesucht.

Wie geht es denn vereinfacht? Habe nichts gefunden...

Sorry für die dumme Frage & Danke für die Antworten,

Gruß Ben

von Mat (Gast)


Lesenswert?

Habe die gleiche Frage, man muss beim AVR Studio 5 immer auf Extras-Avr 
Programming, dann Apply und dann programmieren.

Das Fenster kann man nicht mal parallel zum programmieren offen lassen, 
sondern muss es immer schließen und neu öffnen.

Gibts da eine schnellere/bessere Variante?

Beim alten AVR Studio musste man ja nur einmal den Programmer öffnen und 
dann konnte man mit Write Flash Memory with Current Settings das 
Programm einfach runterschicken.

Vermisse sowas beim neuen.

Wäre über Tipps dankbar.

grüße Mat

von Thomas E. (thomase)


Lesenswert?

Für solche Sachen solltet ihr beide nicht hier im Forum Hilfe suchen, 
sondern das Atmel mitteilen.

mfg.

von Michael K. (Gast)


Lesenswert?

Mat schrieb:

> Gibts da eine schnellere/bessere Variante?

Ich habe mir für den Zweck in den Post-Build-Actions einen 
entsprechenden Aufruf des Kommandozeilen-Programmers abgelegt.

Ein Druck auf F7 reicht und das Projekt wird compiliert und auf den Uno 
geschoben.

42m

von bronko (Gast)


Lesenswert?

Hi.
Habe das gleiche Problem...

@Michael Krauth
Könntest Du Deine Lösung etwas genauer beschreiben? Hab keine Ahnung was 
Du da sagst ;)

Gruß

von Manuel (Gast)


Lesenswert?

Jap bin auch sehr interessiert und kenn noch einige die dir dankbar 
wären!

von Michael K. (Gast)


Lesenswert?

Ich habe es wie folgt gelöst:

In den Project Properties wähle ich den Reiter "Build Events" und trage 
unter "Post-build event command line" folgendes ein:
1
jtagiceii -e -pf -vf -if$(OutputDirectory)\$(Name).hex -d$(avrdevice)

Damit ruft das AVR-Studio nach jedem Build den Kommandozeilenprogrammer 
für den Jtagice auf.

Den Parameter für das Hex-File baut es sich dabei aus den 
Projekt-Einstellungen zusammen (Pfad zu den Kompilaten und Namen des 
Projekts mit angehängtem .hex), das Ziel-Device nimmt es sich ebenfalls 
aus den Projekteinstellungen.

Daß ich mit (im Studio Macros genannten) Variablen arbeite hat den 
Hintergrund, daß ich so diesen Text einfach in ein anderes Projekt 
kopieren kann und mich nicht um die Anpassung z.B. des Pfades kümmern 
muss.

Wird das Projekt jetzt erstellt (z.B. per F7) wird das soeben erstellte 
Hex-File direkt im Anschluss über dieses Post-build Event auf den 
Microcontroller übertragen.

Das sollte IMHO mit allen Kommandozeilen-Programmern funktionieren.

HTH,
42m

von bronko (Gast)


Lesenswert?

Super.
Das ist eine gute Hilfe gewesen. Ich habe die Zeile für meinen ARV-ISP 
mk2 zusammengeschrieben:
stk500 -cUSB:000200080357 -d$(avrdevice) -e -pf -vf 
-if$(OutputDirectory)\$(Name).hex
Nun schreibt er nach dem kompilieren: The command "...\test.hex" exited 
with code 9009. Eine google-Suche ergab, dass es sich um eine Problem 
mit der Visual Studio handelt:
http://support.microsoft.com/kb/908268
Man soll den Pfad der Regasm.exe vollständig angeben. Leider kann ich 
nicht herausfinden, wie das gehen soll.
Ist jemand ebenfalls diesem Problem begegnet?

Gruß

von Michael K. (Gast)


Lesenswert?

bronko schrieb:

> http://support.microsoft.com/kb/908268
> Man soll den Pfad der Regasm.exe vollständig angeben. Leider kann ich

Das mit regasm.exe solltest Du nicht zu wörtlich nehmen :)

Befindet sich stk500.exe denn im Pfad, so daß das Programm auch gefunden 
und gestartet werden kann?

Gib an der Kommandozeile (Start | Ausführen | "cmd" (ohne "")eintippen 
und Enter drücken) mal stk500 ein und drücke Enter. Was bekommst Du als 
Ergebnis?

42m

von Michael K. (Gast)


Lesenswert?

Nachtrag:

Worauf ich hinaus will ist folgendes: Wenn der Befehl/das Programm aus 
den Build-Actions nicht gefunden wird, gibt es eine Fehlermeldung.

In dem Fall kannst Du zweierlei tun: Zum einen gibst Du den (absoluten) 
Pfad zum Programm an, also z.B. statt "stk500.exe" 
"C:\avr\tools\stk500.exe".

Zum anderen kannst Du das Programm irgendwo ablegen, wo es von überall 
gefunden wird, weil es eben im Suchpfad auftaucht, in dem beim Aufruf 
eines Programmes nach dessen Existenz gefahndet wird. In welchen 
Verzeichnissen Windows sucht, kannst Du in den Umgebungsvariablen 
(verstecken sich bei Win7 unter Systemsteuerung | System | Erweiterte 
Systemeinstellungen | Erweitert). Die fragliche Variable heißt "Path". 
Dort kannst Du auch den Pfad zum stk500.exe angeben. Die Angabe wird 
dabei durch ein Semikolon abgetrennt.

Viel Erfolg,
42m

von Tobias S. (tryan)


Lesenswert?

Hallo,

ich versuche grade das "Write to flash" hin zu bekommen, aber irgendwie 
klappt das einfach nicht.

System:
Windows 7 SP1
AVR Studio 5.2 Beta
Jtagice MKII

Board:
XMega - A1 Xplained

Programmieren funktionert über "AVR Programmieren". Jedoch finde ich 
diesen Weg sehr "lang"...

Ich habe schon bei Post-build events den ausdruck
1
jtagiceii -e -pf -vf -if$(OutputDirectory)\$(Name).hex -d$(avrdevice)
probiert aber ich bekomme die Fehler meldung:
1
Error  1  The command "jtagiceii -e -pf -vf -ifC:\Users\Computer\Documents\AVRStudio\XMEGA_A1_XPLAINED_test\main\Debug\main.hex -dATxmega128A1" exited with code 9009.  C:\Program Files (x86)\Atmel\AVR Studio 5.0\Vs\Avr.common.targets  27  5  main
das Pfad wird richtig erkannt jedoch der Programmer wohl nicht.

Viele Danke für jede Hilfe

Mfg Tobias

von Michael K. (Gast)


Lesenswert?

Hallo Tobias,

baust Du beim Debug-Build auch das hex-File oder vielleicht nur beim 
Release?

42m

von Tobias S. (tryan)


Lesenswert?

Danke für die Antwort.

Es wird auch ein hex-File im Debug modus erstellt. Programmieren über 
den langen weg funktioniert ja. Ich habe irgendwie das Gefühl das der 
Programmierer nicht "gefunden" wird

grüße Tobias

von Sebastian H. (sh______)


Lesenswert?

Am besten den Befehl einfach mal direkt in der Konsole von Windows 
ausprobieren. Wenn es dann dort funktioniert kannst du die 
entsprechenden Werte durch die Variablen ersetzten. Dann siehst du auch 
ob es am Studio liegt oder an was anderem.

von Tobias S. (tryan)


Lesenswert?

hmm... wenn ich bei Windows Ausführen benutze meckert er das "jtagiceii" 
nicht gefunden werden kann. Jetzt stellt sich die frage woher Windows 
"jtagiceii" überhaupt kennen sollte.

Grüße Tobias

von Sebastian H. (sh______)


Lesenswert?

Dann wird das Studio das gleiche Problem haben, dass es die Datei nicht 
findet!

Abhilfe:
Kompletten Pfad zur .exe mit angeben oder den Pfad mit in den 
Umgebungsvariablen (Path) mit eintragen.

von Tobias S. (tryan)


Lesenswert?

Bitte nicht hauen, aber zur welcher *.exe? Bei AVR studio 4 gab es noch 
eine jtagiceii.exe aber die finde ich bei AVR studio 5 nicht.

Viele Grüße Tobias

von Sebastian H. (sh______)


Lesenswert?

Ist vermutlich ebenfalls bei WinAVR dabei. Das wird bei der v5 nicht 
installiert und müsste dann manuell installiert werden.

Evtl. gibt es die Tools auch einzeln? Ich hab bei mir für avrdude aber 
auch einfach WinAVR installiert, auch wenn es so nicht weiter benutzt 
wird :)

von Tobias S. (tryan)


Lesenswert?

OKey also Winavr ist installiert. Sprechen wir die ganze zeit über die 
avrdude.exe?

grüße tobias

von Michael K. (Gast)


Lesenswert?

Tobias S. schrieb:

> OKey also Winavr ist installiert. Sprechen wir die ganze zeit über die
> avrdude.exe?

Das Vorgehen ist eigentlich immer gleich, egal welchen Programmer Du 
verwenden willst.

Wichtig ist, daß er (und ggf. benötigte Libs) gefunden werden.

Dazu gibt es grundsätzlich zwei Möglichkeiten, den 
Kommandozeilen-Programmer zur Mitarbeit zu überreden.

1. Du packst ihn in den Suchpfad Deines Systems. Dann wird er gefunden, 
egal von wo aus Du ihn aufrufst.

2. Du gibst bei Programmaufruf den Pfad zum Programmer mit an.

42m

von Tobias S. (tryan)


Lesenswert?

Ahh.. okey jetzt ist der Groschen auch bei mir gefallen. Mit dem link
1
C:\WinAVR-20100110\bin\avrdude.exe -e -c jtag2 -p x128a1 -P usb -U flash:w:$(ProjectDir)Debug\main.hex
funktioniert es jetzt bei mir. Leider bleibt die Schaltung nach dem 
Programmieren im Reset und muss manuell nochmal neu gestartet werden, 
aber das ist wohl ein anderes Problem...

Danke für die Hilfe

von soundso (Gast)


Lesenswert?

Das mit dem Reset sollte bei einem Release nicht passieren ...

von Tobias S. (tryan)


Lesenswert?

Leider passiert das auch wenn Release active ist. Nach dem Programmieren 
muss ich die Schaltung (AVR XMega-A1 Xplaned) von der Versorgung (USB) 
nehmen und dann wieder verbinden...auch ganz schön nervig...

Viele Grüße Tobias

von MichaelH (Gast)


Lesenswert?

Hallo

nur mal zur Vollständigkeit... beim AVRISP MkII gehts mit folgendem 
Postevent-Befehl:
1
"C:\Programme\Atmel\AVR Tools\STK500\Stk500.exe" -cUSB:000200080357 -d$(avrdevice) -e -pf -vf -if"$(OutputDirectory)\$(Name).hex"
der Pfad zur Exe muss ggf. angepasst werden (ggf. für dei Exe erst das 
Studio4 installieren). Die Nummer des Programmers (-cUSB) muss auf jeden 
Fall angepasst werden...

Das Problem waren bei mir die fehlenden Anführungszeichen beim Parameter 
-if, da Pfade ja auch Leerzeichen enthalten können.

Gruß
Michael

von Carsten G. (carry)


Lesenswert?

Noch eine Ergänzung.
Bei importierten AVR Studio 4 Projekten ist '$(Name)' (in der 
Projektdatei) nicht definiert. Stattdessen kann man 
'$(MSBuildProjectName)' nehmen.


Carsten

von Alex E. (chekov-e)


Lesenswert?

Hi,

hab mir jetzt bei AVR-Studio 5 auch das post-build-event eingebaut,
sieht so aus
1
"C:\AVR\Programme\AVR Studio 4\STK500\Stk500.exe" -cUSB:000200058992 -d$(avrdevice) -e -pf -vf -if"$(OutputDirectory)\$(MSBuildProjectName).hex"
und funktioniert auch wunderbar.

Nun möchte ich aber nicht bei jedem Kompilieren gleichzeitig flashen, 
also habe ich mir über "Tools\External Tools..." einen Button gebaut 
mit:

Command:
1
C:\AVR\Programme\AVR Studio 4\STK500\Stk500.exe
Arguments:
1
-cUSB:000200058992 -d$(avrdevice) -e -pf -vf -if"$(OutputDirectory)\$(MSBuildProjectName).hex"

Beim Ausführen meckert er aber:
1
STK500 command line programmer, v 2.3 Atmel Corp (C) 2004-2009.
2
3
Connected to AVRISP mkII on port USB:000200058992
4
Device not specified

Wahrscheinlich sagt ihm das "-d$(avrdevice)" an dieser Stelle nichts.
Wie teile ich ihm den im aktuellen Projekt verwendeten Controller mit?

MfG

von Sebastian .. (zahlenfreak)


Lesenswert?

Das Problem wurde mitlerweile auch von Atmel erkannt und in der Finalen 
Version von Studio 5 angeganen:

Klickt man unter "Debug" auf "Start without debugging" wird das aktuelle 
Hex-file geflasht. Wie aus Studio 4 gewohnt - ohne große Einstellungen.
Dabei scheint automatisch das richtige hex ausgewählt zu werden. Die 
Einstellungen (welcher Programmer, ISP-Geschwindigkeit,...) scheinen in 
den Project Properties unter "Debugging" festgelegt zu werden.
Allerdings hab ich es noch nicht geschafft, auf die Weise mit dem Dragon 
über ISP zu flashen. Da besteht das Studio auf JTAG. Mit meinem ISP MKII 
läufts aber Problemlos.
Auch das EEPROM wird auf die weise nicht geschrieben. Der Haken bei 
"Preserve EEPROM" scheint leider auch keine Auswirkungen zu haben.

Gefunden hab ich das ganze bei den avrfreaks:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=105986

Sebastian

von Alex E. (chekov-e)


Lesenswert?

Wenn ich bei mir auf "start without debugging" gehe wird nur "gebuilded" 
ohne zu Flashen. Vielleicht müsst ich da von "Debug" auf "Release" 
wechseln.

Ebenfalls im avrfreaks Forum hab ich das hier gefunden:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=104378&highlight=avrstudio5

-> Im pre-build wird eine batch-Datei erstellt,
1
echo  "C:\AVR\Programme\AVR Studio 4\STK500\Stk500.exe" -cUSB:000200058992 -d$(avrdevice) -e -pf -vf -if"$(OutputDirectory)\$(MSBuildProjectName).hex" > $(MSBuildProjectDirectory)\controller_flashen.bat
die ich dann bei Bedarf über "External Tools" aufrufe.

Funktioniert super

MfG
Alex

von floggy (Gast)


Lesenswert?

Danke für die Anregungen. Hatte hierbei auch Probleme. Konnte es 
folgendermaßen Lösen:

AVRStudio Version 5.0.1163
AVRISP mkII

Unter den Projekteinstellungen auf Debugging klicken.
(Wählt man das nicht in den Projekteinstellungen aus, kommt später immer 
ein Dialog, wo die vorhandenen Debuggingtools ausgelistet werden, nur 
dass man da nicht den AVRISP mkII auswählen kann.)

Hier als Debugger den AVRISP mkII auswählen, des weiteren lassen sich 
dann noch die ISP Geschwindigkeit auswählen und der EEProm-Schutz.
Da auch eine Einstellmöglichkeit für das Interface besteht, lässt sich 
vielleicht auch der Dragon auf ISP umstellen.
Dann kann man einfach über F5 bzw. Start debugging das Projekt 
kompilieren und den Controller programmieren.

von Joachim (Gast)


Lesenswert?

Hallo Leuts, ich sitz hier grad' dran und hab das gleiche Prob.
Ich würde gerne die Lösung mit der build-project Eintragung versuchen.


> "C:\AVR\Programme\AVR Studio 4\STK500\Stk500.exe" -cUSB:000200058992 
>-d$(avrdevice) -e -pf -vf >-if"$(OutputDirectory)\$(MSBuildProjectName).hex" > 
>$(MSBuildProjectDirectory)\controller_flashen.bat


-cUSB:000200058992  <- Ist das eine "Portbezeichnung"?
Wo/wie finde ich die? Die Device-ID ist vermutlich nicht, die sieht bei 
mir ganz anders aus. Hab
XP pro
AVRStudio Version 5.0.1163
AVRISP mkII

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

floggy schrieb:
> AVRStudio Version 5.0.1163
> AVRISP mkII
>
> Unter den Projekteinstellungen auf Debugging klicken.
> (Wählt man das nicht in den Projekteinstellungen aus, kommt später immer
> ein Dialog, wo die vorhandenen Debuggingtools ausgelistet werden, nur
> dass man da nicht den AVRISP mkII auswählen kann.)
>
> Hier als Debugger den AVRISP mkII auswählen, des weiteren lassen sich
> dann noch die ISP Geschwindigkeit auswählen und der EEProm-Schutz.
> Da auch eine Einstellmöglichkeit für das Interface besteht, lässt sich
> vielleicht auch der Dragon auf ISP umstellen.
> Dann kann man einfach über F5 bzw. Start debugging das Projekt
> kompilieren und den Controller programmieren.

Wenn ich das mache, will der AVR-ISP mkII die DebugWire-Funktion 
aktivieren. Wenn ich diese Aktion bestätige, ist mein Controller später 
unbrauchbar. Es hängt ein Mega168 als Target dran...

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.