Forum: Mikrocontroller und Digitale Elektronik Arduino UNO mit AVR Studio: Connect failed


von Nico (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich möchte gerne ein Programm auf das Arduino UNO (ATmega328P) mit Hilfe 
des AVR Studios laden. Den Treiber habe ich installiert und der PC 
erkennt das Board (siehe Anhang)

Wenn ich  "Display The Connect Dialog" anklicke, erscheint das untere 
Bild im Anhang. Ich gehe also davon aus, dass das Programm sowohl das 
Board (integrierte Bootloader STK500) und den COM-Port erkennt. Wenn ich 
allerdings Connect anklicke, kommt jedes Mal "Connect failed".

Ich habe hier im Forum einzelne ähnliche Berichte bereits gefunden. 
Allerdings haben sie mir nicht weiter geholfen. Das generieren eines 
Hex-files und dann das rüberschieben mit avrdude, war immer der 
Alternativ-Ansatz bzw. -Lösung.

Ich denke aber, das viele das gleiche Problem haben und es wäre schön, 
wenn mir jemand weiterhelfen könnte. Bestimmt hat bzw. hatte der ein 
oder andere schon die gleichen Schwierigkeiten.

Grüße,
Nico

von Ronald S. (mline)


Lesenswert?

Arduino und AVR Studio können nur via ISP zusammenarbeiten.

von Nico (Gast)


Lesenswert?

Hallo Roland,
danke für deine schnelle Antwort!
Auf dem Atmega befindet sich doch ein Bootloader, der dem Computer 
vorgibt ein STK-500 zu sein. Dann müsste es doch via AVR Studio auch 
gehen.
Grüße

von Thomas E. (thomase)


Lesenswert?

Ronald S. schrieb:
> Arduino und AVR Studio können nur via ISP zusammenarbeiten

Das funktioniert auf jeden Fall.

Der Bootloader des Arduino verwendet nur das STK500 Protokoll zum 
Flashen. Damit wird aber kein STK500 emuliert.

mfg.

von Nico (Gast)


Lesenswert?

Hi Thomas,
hast du mir vielleicht ein Tipp oder Hinweis, was das falsch läuft oder 
was ich ändern muss?
Ich häng total in der Luft.
Bin für jeden Hinweis dankbar!
VG

von Nico (Gast)


Lesenswert?

Mir ist soeben noch aufgefallen,
das unter Tools, das STK500 gar nicht aufgelistet ist. Nur wenn ich 
"Display The Connect Dialog" aufrufe, wir das STK500 aufgelistet. Keine 
Ahnung, ob das vielleicht ne Rolle spielt...

von Thomas E. (thomase)


Lesenswert?

Ein STK500 ist ein In-System-Programmer.

Damit kannst du, logisch, das Flash programmieren. Aber auch Fuses und 
Lockbits setzen, das Signaturebyte auslesen, die Speicher löschen.

Das wird am Controller über die SPI-Schnittstelle gemacht, die in 
Verbindung mit Reset zu einer speziellen Programmierschnittstelle wird.
Ein spezieller Controller auf dem STK500-Board setzt das entsprechend 
um.
Deshalb kann man mit dem STK500 auch nagelneue Chips verwenden.

Im Arduino ist ein Bootloader integriert, das ist ein Programm, das in 
einem speziellen Bereich des Flashs abgelegt ist, mit dem man nur 
flashen kann. Nichts anderes.

Die sogenannte STK500-Kompatibilität bezieht sich ausschliesslich auf 
das Protokoll mit dem man mit dem Arduino, besser gesagt dem Bootloader 
des Arduino, kommuniziert.

Hinzu kommt noch, dass der Arduino nach dem Reset mit dem Bootloader 
startet und dann eine kurze Zeit, einige ms, wartet, ob ein Connect vom 
Arduino Uploader erfolgt. Ist dies nicht der Fall, springt er im Flash 
auf Adresse 0x0000 und führt ganz normal das Programm aus.

Das ist wie beim PC, wo du beim Booten ein paar Sekunden Zeit hast F2 
oder Entf zu drücken, um ins Bios zu kommen. Sonst startet das 
Betriebssystem.

Ein Reset wird beim Arduino per Hardware über eine Steuerleitung der 
virtuellen Schnittstelle gemacht. Das macht das AVR-Studio aber nicht. 
D.h. das AVR-Studio bekommt nicht mal den Bootloader präsentiert, da der 
ja nur ein paar ms wartet, ehe er die Anwendung startet.

Zusammengefasst: 1. Der Bootloader läuft gar nicht. 2. Der Bootloader 
kann nur Flashen und hat nicht die ganze Funktionalität vom STK500.

mfg.

von chris (Gast)


Lesenswert?

Irgendwo meine ich gesehen zu haben, dass man mit Hilfe von avrdude ein 
HEX File zum Bootloader des Arduino übertragen kann. Damit wäre es also 
möglich, mit AVR-Studio das Hex-File zu erzeugen und dann mit Hilfe von 
ARV-Dude zu transferieren.

Leider habe ich mir die Seite nicht gemerkt, vielleicht kennt von euch 
jemand die Anleitung.

von Nico (Gast)


Lesenswert?

> Zusammengefasst: 1. Der Bootloader läuft gar nicht. 2. Der Bootloader
> kann nur Flashen und hat nicht die ganze Funktionalität vom STK500.

Ok, im Grunde wäre es also das Beste, wenn ich mir ein 
ISP-Programmierer, wie etwa der AVR ISP mkII anschaffe. Den gibts ja 
schon für ca. 36€. Im Grund schließe ich dann mein Programmer an mein 
USB-Anschluss vom PC und an den ISP-Anschluss auf meinem Board an.
Gehe in AVR-Studio suche mir die Plattform AVRISP mkII aus und klicke 
auf USB. Gebe dann das Input-Hexfile in den Flash.

Im Grunde die beste Möglichkeit den Arduino mit einem C-Programm bzw. 
AVR-Studio zu flashen, oder?!

Ich muss den Bootloader also etwas losgelöst von dem STK500 sehen. Nur 
weil Arduino das STK500-Protokoll verwendet ist es nich gleich ein 
STK500. Aus diesem Grund klappt das auch nicht mit dem AVR-Studio. Die 
Arduino IDE löst also ein Reset aus, dass das Flashen über den USB 
ermöglicht. Das AVR-Studio hingegen macht das nicht. Aus diesem Grund 
benötige ich hier ein externen Programmer,der das macht, oder?! 
Irgendwie hab ich das noch nicht so richtig verstanden.

Ich kann auch ein Hex-file mittels AVR-Studio generieren und dann mit 
avrdude übertragen. Das mit dem Programmer würde mir allerdings besser 
gefallen.

siehe blog.elenika.net
>Using Arduino as an AVR development board
>Once you have the HEX file you have to use avrdude in the following way:

>avrdude -p m328p -P com10 -c arduino -b 57600 -F -u -U >flash:w:arduino.hex

>The above command uploads the program to the Arduino Microcontroller, >making use 
of the Arduino bootloader.
>You can change the serial baud rate (-b), the serial port (-P), the micro >model 
(-p) and the rest of the options according to your specific case.

>There seemed to be an attempt of writing a plugin for AVR Studio to >program the 
Arduino straight from there but it does not seem to be >following up.
.
.
.

VG

von Thomas E. (thomase)


Lesenswert?

Nico schrieb:
> ermöglicht. Das AVR-Studio hingegen macht das nicht. Aus diesem Grund
>
> benötige ich hier ein externen Programmer,der das macht, oder?!
>
> Irgendwie hab ich das noch nicht so richtig verstanden.

Entweder eine reinen Programmer, AVRISP MKII. Vorsicht bei den 
ebay-Angeboten. Das ind meistens nachgemachte.

Oder ein echtes STK500. Da kannst du auch den Aduino anschliessen und 
von da aus flashen und einstellen. Oder du benutzt das Board zum 
rumspielen oder was auch immer.

Preislich dazwischen liegt dann noch der AVR Dragon.

Und ganz oben drüber der JTAGICE.

In allen Fällen brauchst du den Bootloader nicht mehr. Wird beim ersten 
Flashen ohnehin gelöscht. Den kannst aber jederzeit wieder draufspielen, 
dann ist das wieder ein normaler Arduino.

Was alle vier ausmacht ist, dass du direkt vom AVR-Studio flashen 
kannst, mit dem Dragon und JTAGICE sogar debuggen.

Das ist das, was Atmel u.a. im Angebot hat. Natürlich gibt es dann noch 
diverse Third Party Produkte. Bin ich persönlich allerdings kein Feund 
von.

mfg.

von Nico (Gast)


Lesenswert?

Hi Thomas,
danke für deine Antworten, die haben mir jetzt wirklich weiter geholfen 
und mich in die richtige Richtung gelenkt. Dann werde ich mich mal ran 
halten:-)
Bis dann und schönen Abend noch!

von Pinoccio (Gast)


Lesenswert?

Hallo,

ich hatte mich auch schon einmal damit beschäftigt das Arduino-Board 
über den Bootloader aus dem AVR-Studio zu programmieren.
Aus Zeitgründen habe ich es aber ersteinmal beiseite gelegt.
Aber ich habe mir folgendes überlegt:

Man kann man im AVR-Studio über "Tools" -> "Coustomize..." -> "Tools"
AVRDUDE mit den dazugehörenden Parametern einbinden.
Ich hatte leider nicht die Zeit mich mit den Parametern und der 
Einbindung zu beschäftigen.

Falls Jemand damit weiterkommt, dann gebt bitte eine Rückmeldung.

Gruß Pinoccio

von chris (Gast)


Lesenswert?


von chris (Gast)


Lesenswert?

Gerade gefunden: es gibt sogar hier im MC-Net einen Artikel dazu:
http://www.mikrocontroller.net/articles/AVRDUDE#AVRDUDE_mit_Arduino_Bootloader_benutzen

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.