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
Wie kann ich das machen, brauche ich dazu einen Zusatzkitt von Atmel, oder geht das auch über eine direkte Verbindung zum Rechner?
http://www.siwawi.arubi.uni-kl.de/avr_projects/index.html#bf_boot suche mal unter "Programmer/Flashing"
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
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?
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.
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.
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
@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.
"- 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.
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
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).
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
> 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.
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.
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)
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
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.
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
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!
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.)
Aber wenn ich den Bootloader von der Atmel-Seite runterlade,nur Intel HEX FOrmat, und da kann man sehr wenig verändern?
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.
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
> avrdude tut bei mir über den USB-seriell Adapter auch leider nicht.
Warum eigentlich nicht?
Welche Version?
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.
> 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/
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...
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.
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.
> Programmer supports buffered memory access with buffersize=-128
bytes.
Da scheint mir der Hase im Pfeffer zu liegen...
Liegt das an avrdude? Ich habs mit mehreren unterschiedlichen Bootloadern (version 2, 3, gcc) versucht und immer das selbe Problem. Kannst du mir weiterhelfen?
> 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.
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.
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?
> 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.
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.
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.