Forum: Compiler & IDEs AVR Butterfly AVRProg


von Martin (Gast)


Lesenswert?

Hallo, ich versuche ein Programm auf den AVR zu brennen mit WINAVR und
bekomme folgende Fehlermeldung:
Adress: 0x0000, Expected 0x940c, Received 0x0100.

Ich konnte den AVR nur einmal beschreiben, mit dem Originalprogram und
danach mit einem Testprogram wo ich nur den Port B auf 1 setze. Das hat
auch Funktioniert. Als ich ein anderes Programm brennen wollte, kam der
Fehler. Das Orignalprogramm von Atmel lässt sich auch nicht mehr
brennen, selber Fehler.
Bitte um Hilfe

von tex (Gast)


Lesenswert?

ich würde mal raten dass Du den Boatloder überschrieben hast?

von Martin (Gast)


Lesenswert?

das denke ich auch, kann man da noch was machen?

von tex (Gast)


Lesenswert?

mit spi oder jtag programmieren

von Martin (Gast)


Lesenswert?

Wie kann ich das machen, brauche ich dazu einen Zusatzkitt von Atmel,
oder geht das auch über eine direkte Verbindung zum Rechner?

von Werner B. (Gast)


Lesenswert?


von tex (Gast)


Lesenswert?

Ich benutze den SPI "ISP" ?? ach keine Ahnung jedenfalls den seriellen
Programmieradapter. Damit kannst Du dann auch einen haufen anderes Zeugs
programmieren ohne das STK500 kaufen zu müssen

von Martin (Gast)


Lesenswert?

erst mal vielen Dank für die hilfreichen Antworten ein par Fragen habe
ich dennoch:

"Ich benutze den SPI "ISP""

und das geht dann auch ohne den Bootloader? Ich wollte mir jetzt den
AVRISP bestellen, mit dem kann man auch über ISP programmieren, ich bin
mit nur nicht sicher, ob der den Bootloader benötigt, da der ISP
Anschluss des Butterfly auch auf PortB liegt.

Ich habe auf der Seite
http://www.mikrocontroller.net/articles/AVR_Butterfly#.28low-voltage-serial.29_ISP_Programmierung


im Abschnitt (low-voltage-serial) ISP Programmierung
gelesen das man den Auslieferungszustand mit hohen Aufwand wieder
herstellen kann. Leider ist nirgendwo beschrieben wie (oder ich finde
es nicht). Kann mir jemand sagen wie das geht?

von Jörg Wunsch (Gast)


Lesenswert?

Den AVRISP musst du nicht unbedingt nehmen, aber er ist insgesamt eine
gute Wahl -- insbesondere dann, wenn du als Schnittstelle zum
Programmieren nur eine serielle frei hast (oder gar nur eine serielle
via USB).  Mit einer Parallelschnittstelle funktionieren auch die
Einfachst-Adapter (Parallelschnittstelle im `bit-bang mode').

Wenn du nicht gerade auch die ISP-Fuse selbst zermüllt hast (geht
normalerweise nicht via Bootloader), sollte es nicht zu schwierig
sein, das damit hinzubekommen.  Allerdings habe ich mir jetzt das
Platinenlayout der Butterfly nicht angeguckt, wie schwierig das ist,
an die entsprechenden Portpins zu gelangen.

von tex (Gast)


Lesenswert?

die Portpins für isp sind sauber rausgeführt. Du musst nur untern rechts
6 Kontaktstifte anlöten. (siehe Manual auf der Atmel page)
ISP sollte in jedem Fall ohne Bootloader gehen. Ich habs zwar noch
nicht probiert, aber ich programmiere meinen Mega128 ja auch mit dem
isp und da ist ja auch kein Bootloader drauf.

von mthomas (Gast)


Lesenswert?

Falls nie eine andere Verbindung als "RS232" und der Bootloader mit
AVRProg benutzt wurde, ist der Bootloader "noch da". Der Bootloader
kann sich nicht selbst ueberschreiben und auch die Schreibschutzbits
(Locks) koennen darueber nicht gesetzt werden. Falls die Fehlermeldung
aus der urspruenglichen Frage von AVRProg stammt, hat das Login von
AVRProg beim Bootloader funktioniert und der BL ist "noch da".
- Ist die Stomversorgung stabil? Enerige aus der Knopfzelle reicht
mglw. nicht (mehr) zum Flashen. Externe Stromversorgung von max. 4,5V
hilft moeglicherweise.
- Kann der Flash-Speicher ueber AVRProg noch ausgelesen werden?
- Zeigt der "Advanced"-Dialog von AVRProg noch die
"AVR-Signature"?
Nach Moeglichkeit erstmal bei der "Bootloader"-Methode bleiben. Man
kann ueber ISP die "Taktquellen-Fuses" so verstellen, dass es etwas
"kniffig" wird. Bei Bedarf mehr zur "Wiederherstellung des
Ausgangszustands"

Martin

von tex (Gast)


Lesenswert?

@Martin
1. Ich habe irgendwo gelesen, dass 4,5 V schon oberste Kotzgrenze für
den Butterfly sind. Der mega168 kommt wohl klar damit aber der
aufgelötete Speicher ist mit 4,5V zu großzügig bedacht.
2. Es muss aber doch einen Weg geben, den Butterfly über die serielle
so zu  "zerlegen" dass man ihn seriell nicht mehr progrmmieren kann.
Ich habe das beim ersten Versuch geschafft und der Elektronikhändler
meines Vertrauens diagnostizierte einen überschriebenen Boatloader. Um
den Weg beim nächten Mal zu sparen habe ich mir dann bei dieser
Gelegenheit gleich den ISP-Programmer zugelegt.

von Martin (Gast)


Lesenswert?

"- Kann der Flash-Speicher ueber AVRProg noch ausgelesen werden?"

Ja das funktioniert, das ausgelesene File lässt sich auch wieder
draufschreiben, nur kein anderes Programm.

"- Zeigt der "Advanced"-Dialog von AVRProg noch die
"AVR-Signature"?"

Die Signatur ist noch vorhanden.

"Externe Stromversorgung von max. 4,5V
hilft moeglicherweise."

das hat leider auch keinen Erfolg gebracht.

von Claus-dieter S. (cdschulz)


Lesenswert?

Ist inzwische klar wo der Fehler herkommt?

Bei mir tritt der selbe Fehler auf.

Nach meinen bisherigen Test sieht es so aus als ob
das AVRProg den Flash nicht (richtig) auslesen kann.
Wenn man den kompletten Flash ausliest bekommt
man eine hex Datei sei sehr komisch ist.
Da wo eigentlich Programmcode sein sollte sind eher mehr
aufsteigende Zahlenfolgen zu finden

:020000020000FC
:10000000000102030405060708090A0B0C0D0E0F78
:10001000101112131415161718191A1B1C1D1E1F68
:10002000202122232425262728292A2B2C2D2E2F58
:10003000303132333435363738393A3B3C3D3E3F48
:10004000404142434445464748494A4B4C4D4E4F38
:10005000505152535455565758595A5B5C5D5E5F28

eigentlich sollte es so aussehen:

:020000020000FC
:100000000C94AB18189518950C947F070C94A107C5
:10001000189518950C94951118951895189518958C
:1000200018951895189518950C94C115189518954C
:100030001895189518951895189518951895189558
:100040001895189518951895189518951895189548
:1000500018951895189518950C94180926031C03E3

Wie man sieht ist jetzt auch die Fehlermeldung verständlich.

An Adresse 0x0000 liest das Programm eben die 0100 und nicht die 940c.

Habe allerdings (noch) keine Ahnung warum der Flash-Speicher nicht
richtig ausgelesen wird.

Der Bootloader-Code wird allerdings richtig aus dem Flash
ausgelesen !!! Sehr komisch.

Gruß
Claus

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


Lesenswert?

Bitte kapere keine alten Threads, das hat keinen Sinn.

Dein Muster sieht übrigens sehr nach gesetzten Lock-Bits aus.

Lässt sich der Speicher denn richtig beschreiben, d.h. arbeitet
die Applikation?

Kann natürlich auch ein Bug im Bootloader sein.  Den kann man ja
auch mal neu flashen (natürlich nicht mit sich selbst, sondern
extern).

von Claus-dieter S. (cdschulz)


Lesenswert?

Wollte halt keinen neuen Fred zum selben Thema aufmachen.
Der butterfly ist grad mal 2 Tage in betrieb.
Die Standardapplikation läuft sauber.
Fuse und Lock-bits hab ich sicher nicht verändert.
Das geht nicht über die serielle Schnittstelle.

Flash Speicher konnte ich bisher nicht schreiben
wegen besagtem Fehler.
EEprom schreiben/lesen funzt ohne Probleme.

Komisch ist das beim auslesen des Flash der Code
für den Bootloader-Code Teil korrekt der Programmcode-Teil aber
nicht richtig ausgelesen wird. Ich hab keine Ahnung
wie sowas mit Lockbits zu schaffen wäre.

Gruß
Claus

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


Lesenswert?

> Fuse und Lock-bits hab ich sicher nicht verändert.
> Das geht nicht über die serielle Schnittstelle.

Parziell geht das.  Allerdings ist wahr, man kann nur die
BLBs beschreiben.

Ansonsten weiß ich auch nicht, habe keinen hier, habe
bislang nur mit einem reinrassigen AVR109-Bootloader
gearbeitet (den ich aber selbst compiliert habe), da klappt
das alles ordentlich.

von Claus-dieter S. (cdschulz)


Lesenswert?

Hab mir inzwischen einen Progger für den Parallelport
gebastelt und bin dabei auf etwas sehr kurioses gestossen.
Wie es nun aussieht setzt der AVRProg beim Zugriff über
Bootloader die Fuse-Bits BLB01 und BLB02 und verhindert damit
das Auslesen und Programmieren des Application-Bereichs.
Keine Ahnung woher/wie das kommt und wo das Problem ist (Bootlader
bzw. AVRProg) selber.

von mthomas (Gast)


Lesenswert?

Koennte ein Seiteneffekt der Integration des BF-Bootloadercodes als
Option in den Code zu AVR109 sein. Vielleicht die alte Version des BL
versuchen, dort war die Option zum setzen von Lockbits deaktiviert.
(vielleicht hilft auch mein gcc-Port der alten Version inkl. hex auf
www.siwawi.arubi.uni-kl.de/avr_projects)

von Claus-dieter S. (cdschulz)


Lesenswert?

Danke. Das mit dem Seiteneffekt verstehe ich leider nicht ganz.
Hab leider keine alte Version des BL mehr auf der Atmel Seite
gefunden.
Habe deinen Bootloader versucht. AVRProg erkennt diesen aber
leider nicht (Fehlermeldung Board not supported).
Musste auch erst noch den Booloader-Code in die Anwendung
integrieren (sonst kann ich ihn ja nicht per Menü anwählen).
Funktioniert der booloader genauso wie der neue?
Jump to Bootloader auswählen und dann Joystick-Taste drücken
wenn man AVRProg startet?

Gruß
Claus

von mthomas (Gast)


Lesenswert?

Seiteneffekt war wohl etwas ungluecklich formuliert, will heissen, man
hat vielleicht eine bei der Integration der BF-Einstellungen in AVR109
irgendetwas vergessen. Ist nur Halbwissen, habe mir den neuen
AVR109-Code nur oberflaechlich angeschaut.
Sind die Fuses richtig gesetzt (Bootsize und BootReset)? Bootloader
sollte auch aktiv sein, wenn man Stomversorgung herstellt oder einen
Hardware-Reset ausloest. Beim Connect mittels AVRProg dann Joystick
gedrueckt halten - ist zumindest bei der alten Version so.

von Claus-dieter S. (cdschulz)


Lesenswert?

Habs mit dem alten Bootloader mal versucht. Die Verbindung
mit dem AVRProg ist eher sporadisch. Meist wird die Verbindung
nicht erkannt. Habs 1-2 mal aber eher zufällig hinbekommen.
Wie es aussieht ist die RS232-Verbindung nicht sehr zuverlässig.
Am besten gehst noch mit dem neuen Bootloader. Nur da hab ich ja das
Problem mit den Fuse-Bits. Setze einen USB-Seriell Adapter
ein. Vielleicht macht der ja Probleme.
Naja ich werd erstmal aufgeben mit der seriellen Programmierung.
Hat mich schon zuviel Zeit und Frust gekostet.
Hab ja noch die umständliche Möglichkeit zum Proggen mit meinem alten
Rechner.
Vielleicht gibts ja mal bald ein Update von Atmel.

Danke und Gruß
Claus

von AVR (Gast)


Lesenswert?

Habe das selbe Problem wie er oben beschreibt!Programmier es über
SERIELL to USB Converter (notebook) und über normale Schnittstelle (PC)
funktioniert beides nicht.Programmieren über ISP mit STK500 funktioniert
einwandfrei!!!!Versuche jetzt einen alten Bootloader zu beschaffen mit
dem müsste es dann gehen!Oda

Ich kann mit dem Stk500 FuseBits lesen und schreiben aber sobald ich
den Bootloader von Atmel raufspiele sind sie wieder so gesetzt wie
vorher! Das nenne ich eine Verarschung!

Hab mir extra diesen Butterfly gekauft, um das Programmieren zu lernen
und dann geht nichts!

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


Lesenswert?

Nimm doch mal avrdude, das setzt dir zumindest nicht leise weinend
irgendwelche lock bits.

> Das nenne ich eine Verarschung!

You've got the source.  Du kannst dem Bootloader also allemal auch
abgewöhnen, dass er überhaupt an den boot lock bits fummeln darf.
Vielleicht wäre das ja deine erste Programmierübung?  (Die ist
allerdings ziemlich simpel, meiner Erinnerung nach gibt's im
Bootloader-Code schon ein #ifdef dafür.)

von AVR (Gast)


Lesenswert?

Aber wenn ich den Bootloader von der Atmel-Seite runterlade,nur Intel
HEX FOrmat, und da kann man sehr wenig verändern?

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


Lesenswert?

Der Sourcecode steht in der Appnote 109.

Meine Version des GCC-adaptierten Sourcecodes findest du unter

http://www.sax.de/~joerg/AVR109-gcc.tar.gz

Allerdings habe ich nur AVR109 selbst portiert, das Unterverzeichnis
butterfly habe ich nicht angefasst.  Alternativ hat dir ja Martin
Thomas schon gesagt, wo du seine Portierung des Butterfly-Bootloaders
auf den GCC finden kannst.

von Claus-dieter S. (cdschulz)


Lesenswert?

Ich würde auchmal versuchen den Bootloader von Martin
auszuprobieren. In seinem Packet ist auch der alte Atmel Bootloader
dabei. Damit kannst du es ja auch mal versuchen.
Bei mir klappt es allerdings nicht mit dem AVRProg zusammen (siehe
oben). Wäre interessant zu sehen ob das bei dir klappt.
avrdude tut bei mir über den USB-seriell Adapter auch leider nicht.

Gruß
Claus

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


Lesenswert?

> avrdude tut bei mir über den USB-seriell Adapter auch leider nicht.

Warum eigentlich nicht?

Welche Version?

von Claus-dieter S. (cdschulz)


Lesenswert?

Gute Frage. Weiss ich ja auch nicht woran es liegt.
Ich verwende das avrdude aus WinAVR:
Built from CVS after 4.4.0

Habe derzeit auch wenig Zeit und Lust noch weiter nach der
Ursache zu forschen. Verwende jetzt nen SP12 Adapter.

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


Lesenswert?

> Gute Frage. Weiss ich ja auch nicht woran es liegt.

Naja, aber zumindest eine Fehlermeldung wirst du ja haben,
und mit -vvvv wird es auch einiges gesprächiger...

Ansonsten sind in avrdude 5.0 einige Fixes für butterfly
drin.  Eine Binärversion für Win32 habe ich hier abgelegt:

http://savannah.nongnu.org/download/avr/

von Schmetterling (Gast)


Lesenswert?

Ich hatte auch das Problem, dass ich per RS232 keine Verbindung mit
AVRProg hinbekommen habe. Ich habe dann einfach mal mit einem
JTAG-Adapter die Fuse-/Lock-Bits ausgelesen (nicht geschrieben!).
Danach funktionierte die serielle Verbindung einfach.

Keine Ahnung, was da passiert...

von Claus-dieter S. (cdschulz)


Lesenswert?

Hallo Jörg,

denk für den Link zur neuen Version.
Wollte nix gegen avrdude gesagt haben. Habe nur grad wenig
Zeit mich weiter um Problem mit der seriellen Programmierung
zu kümmern. Hab ja jetzt nen Programmer der funktioniert.
Vielleicht packe ich die Sache ja später nochmal an.

von Claus-dieter S. (cdschulz)


Lesenswert?

Habs gerade mal mit avrdude5 versucht.
Die Kommunikatiom mit dem Bootloader klappt jetzt.
EEprom lesen/schreiben kein Problem.
Aber beim Flash schreiben klappts nicht:

Connecting to programmer: .
Found programmer: Id = "AVRBOOT"; type = S
    Software Version = 1.4; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=-128 bytes.

Programmer supports the following devices:
    Device code: 0x75

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100%
0.00s

avrdude: Device signature = 0x1e9405
avrdude: safemode: lfuse reads as E2
avrdude: safemode: hfuse reads as 98
avrdude: safemode: efuse reads as FF
avrdude: reading input file "maingcc.hex"
avrdude: input file maingcc.hex auto detected as Intel Hex
avrdude: writing flash (14316 bytes):

Writing | ################################################## | 100%
0.01s

avrdude: failed to write flash memory, rc=-1

avrdude: safemode: lfuse reads as E2
avrdude: safemode: hfuse reads as 98
avrdude: safemode: efuse reads as FF
avrdude: safemode: Fuses OK

avrdude done.  Thank you.

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


Lesenswert?

> Programmer supports buffered memory access with buffersize=-128
bytes.

Da scheint mir der Hase im Pfeffer zu liegen...

von Claus-dieter S. (cdschulz)


Lesenswert?

Liegt das an avrdude? Ich habs mit mehreren unterschiedlichen
Bootloadern (version 2, 3, gcc) versucht und immer das selbe Problem.
Kannst du mir weiterhelfen?

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


Lesenswert?

> Liegt das an avrdude?

Sieht mir so aus.

> Kannst du mir weiterhelfen?

Mit einem Sourcecode-Patch vermutlich ziemlich schnell...
Mift.  Einen dieser Fehler hatte ich schon entdeckt vor dem
Release, aber zwei andere waren mir durch die Lappen gegangen.
1
Index: butterfly.c
2
===================================================================
3
RCS file: /cvsroot/avrdude/avrdude/butterfly.c,v
4
retrieving revision 1.11
5
diff -u -r1.11 butterfly.c
6
--- butterfly.c 20 Sep 2005 04:53:09 -0000      1.11
7
+++ butterfly.c 20 Oct 2005 11:34:23 -0000
8
@@ -297,9 +297,9 @@
9
     exit(1);
10
   };
11
   butterfly_recv(pgm, &c, 1);
12
-  buffersize = c<<8;
13
+  buffersize = (unsigned int)(unsigned char)c<<8;
14
   butterfly_recv(pgm, &c, 1);
15
-  buffersize += c;
16
+  buffersize += (unsigned int)(unsigned char)c;
17
   fprintf(stderr,
18
     "Programmer supports buffered memory access with buffersize=%i
19
bytes.\n",
20
      buffersize);

Mit einem Windows-Build davon kann ich dir leider aber nicht
so schnell dienen.

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


Lesenswert?

Dummerweise bricht die Forum-Software selbst im Code-Modus
noch um.  Den umgebrochenen String müsstest du daher vor
dem Patchen natürlich manuell reparieren.

von Claus-dieter S. (cdschulz)


Lesenswert?

Das ging ja schnell. Danke.
Kann leider hier selber keinen Windows-Build machen. Dann muss
ich wohl noch was warten.
Hat avrdude noch nie mit dem butterfly funktioniert oder
nur die aktuelle Version? Geht vielleicht ne alte Version?

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


Lesenswert?

> Hat avrdude noch nie mit dem butterfly funktioniert oder nur die
> aktuelle Version?

Das hier ist ein Bug, der erst in der aktuellen Version reingekommen
ist.  Brian Dean hat mit allen möglichen Compilerwarnungen aufräumen
wollen und hat sich dabei anderweitig signed/unsigned-Probleme
eingehandelt.

> Geht vielleicht ne alte Version?

Die 4.4.0 hatte wohl mit dem butterfly andere Bugs. :-(

Probier' doch mal die Version, die Martin Thomas hier angeboten hat.

von Claus-dieter S. (cdschulz)


Lesenswert?

Ich hoffe es gibt bald ne bereinigte Win Version.
avrdude würde ich schon gerne benutzen. Macht nen sehr guten Eindruck
und hat mir schon weitergeholfen.
Was Martin Thomas hier angeboten hat war doch ein booloader-code
und keine avrdude version. Oder verstehe ich da was falsch?

Inzwischen hab ich einigermassen erfolgreich ein altes AVRProg (V1.37)
mit nem alten Bootloader (V2) zum laufen bekommen.
AVRProg hat zwar des öfteren Starprobleme aber die lassen sich
mit avrdude (im Terminalmode) beheben.
Liegt wohl daran, dass der RS232 Puffer im Rechner manchmal erst
gesäubert werden muss.

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


Lesenswert?

> Was Martin Thomas hier angeboten hat war doch ein booloader-code
> und keine avrdude version.

Hat er aber auch irgendwo auf seiner Webseite.

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.