Hallo zusammen, ich habe seit einiger Zeit Probleme beim Schreiben des Bootloaders auf einen atmega 168A-PU bzw. 328P-PU. Ich habe das schon einige Male gemacht und kann mir nicht erklären warum das jetzt nicht funktioniert. Das Schreiben des Bootloaders bricht mit folgender Meldung ab: Reading | avrdude: stk500isp_read_byte(.., lock, 0x0, ...) avrdude: stk500isp_read_byte(): Sending read memory command: avrdude: Sent: . [1a] . [04] X [58] . [00] . [00] . [00] avrdude: Recv: . [1a] . [00] . [ff] . [00] ################################################## | 100% 0.00s avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0000 0xff != 0x3f avrdude: verification error; content mismatch avrdude: Sent: . [11] . [01] . [01] avrdude: Recv: . [11] . [00] Das flashen von Sketches funktioniert ohne Probleme. Kann mir jemand weiter helfen?
:
Bearbeitet durch User
Stefan M. schrieb: > ich habe seit einiger Zeit Probleme beim Schreiben des Bootloaders auf > einen atmega 168A-PU bzw. 328P-PU. Einen Bootloader kann man nicht mit einem Bootloader programmieren, wenn es das ist was du machen willst. Allerdings hast du deine Konfiguration nicht genau beschrieben.
Sorry, hast du meine Frage verstanden? Ich möchte den Arduino Bootloader auf den Controller flashen per avrdude oder aus de ide direkt. Bootloadkünstler schrieb: > Stefan M. schrieb: >> ich habe seit einiger Zeit Probleme beim Schreiben des Bootloaders auf >> einen atmega 168A-PU bzw. 328P-PU. > > Einen Bootloader kann man nicht mit einem Bootloader > programmieren, wenn es das ist was du machen willst. > > Allerdings hast du deine Konfiguration nicht genau beschrieben.
Schwanzlurch schrieb: > Sorry, hast du meine Frage verstanden? Sorry, hast du verstanden was du machen willst? Bootloadkünstler schrieb: > Allerdings hast du deine Konfiguration nicht genau beschrieben. ... und damit meine ich was du wie anschliesst um zum Erfolg zu kommen ...
Schwanzlurch schrieb: > Sorry, hast du meine Frage verstanden? Zuerst Stefan Müller und dann Schwanzlurch.
Um das mal aufzuklären: Den Bootloader kann man nur mit einem ISP Programmieradapter über die ISP Schnittstelle in den Mikrocontroller flashen. Sketches hingegen kann man wahlweise über die ISP Schnittstelle oder über den USB Anschluss (oder seriellen Anschluss) des Arduino Moduls flashen. Wenn man den USB/serellen Anschluss verwendet, muss dann allerdings ein Bootloader installiert sein. Arduino Module werden mit vorinstalliertem Bootloader verkauft. Programmierst du über den Bootloader oder über ISP? Wie lautet die ganze Befehlszeile, mit der avrdude aufgerufen wird?
Warum ist geheim, welchen Programmer du nutzt? Kommandozeile? Welche IDE? Warum sind die Uploadmeldungen geheim? Tipp: -v -v -v -v ... Warum beschäftigst du mehrere Foren gleichzeitig mit deinem Kram?
Kannst du etwas zu Problemlösung beitragen oder nur rumpöbeln? Ich habe klar geschrieben was ich machen will: Mit der Arduino IDE den Bootloader flashen. Das habe ich schon mehrfach gemacht, es geht also. Deine "Beiträge" tragen nicht zur Lösung bei. Bootloadkünstler schrieb: > Schwanzlurch schrieb: >> Sorry, hast du meine Frage verstanden? > > Zuerst Stefan Müller und dann Schwanzlurch.
Schwanzlurch schrieb: > Ich habe klar geschrieben was ich machen will: Nö. Bootloadkünstler schrieb: > ... und damit meine ich was du wie anschliesst um zum Erfolg > zu kommen ...
Arduino F. schrieb: > Warum ist geheim, welchen Programmer du nutzt? > Kommandozeile? > Welche IDE? > Warum sind die Uploadmeldungen geheim? Tipp: -v -v -v -v ... > > Warum beschäftigst du mehrere Foren gleichzeitig mit deinem Kram? Weil dann die Chance höher ist eine Antwort zu bekommen. Ich benutze die Arduino IDE, als Programmer einen avrispmkII. Die Uploadmeldungen sind nicht geheim. Ich habe nur die letzten Zeilen gepostet um nicht alles zuzumüllen.
Schwanzlurch schrieb: > Weil dann die Chance höher ist eine Antwort zu bekommen. Sind sie nicht! Nur besser Chancen Helfer zu vertreiben. Vermutlich: Die Besten zuerst. Schwanzlurch schrieb: > Die Uploadmeldungen sind > nicht geheim. Ich habe nur die letzten Zeilen gepostet um nicht alles > zuzumüllen. Merksatz: Der Fehler steckt immer da, wo man ihn nicht vermutet. Bestätigung: Wenn du wüsstest, wo der Fehler steckt, würdest du ihn schon gefunden haben. Resultat: Du blockierst dich selber. Und nimmst uns jede Chance dir zu helfen.
Gehörst du zu den Besten? Dann verzichte ich auf den Rest! Arduino F. schrieb: > Schwanzlurch schrieb: >> Weil dann die Chance höher ist eine Antwort zu bekommen. > Sind sie nicht! > Nur besser Chancen Helfer zu vertreiben. > Vermutlich: Die Besten zuerst.
Was ist denn nun mit meinen Rückfragen? Du hättest längst Hilfe bekommen können, wenn Du unsere Zeit nicht mit Herumpöbeln bzw. Antworten auf Pöbeleien vergeudet hättest.
Stefan U. schrieb: > Um das mal aufzuklären: > > Den Bootloader kann man nur mit einem ISP Programmieradapter über die > ISP Schnittstelle in den Mikrocontroller flashen. > > Sketches hingegen kann man wahlweise über die ISP Schnittstelle oder > über den USB Anschluss (oder seriellen Anschluss) des Arduino Moduls > flashen. Wenn man den USB/serellen Anschluss verwendet, muss dann > allerdings ein Bootloader installiert sein. Arduino Module werden mit > vorinstalliertem Bootloader verkauft. > > Programmierst du über den Bootloader oder über ISP? > > Wie lautet die ganze Befehlszeile, mit der avrdude aufgerufen wird? - Es ist ein atmega 168A-PU bzw. 328 P-PU. Der Schaltplan ist im Anhang. - Ich benutze einen avrispmkII - Die Arduino IDE Spuckt folgenden avrdude Aufruf auf: /usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -v -v -v -v -patmega168 -cstk500v2 -Pusb -e -Ulock:w:0x3F:m -Uefuse:w:0x00:m -Uhfuse:w:0xdd:m -Ulfuse:w:0xff:m
Schwanzlurch schrieb: > - Die Arduino IDE Spuckt folgenden avrdude Aufruf auf: Da werden Fuses gesetzt, kein Bootloader geschrieben. Das folgt im zweiten Aufruf
Du Setzt die Fuses für eine externen Oszilator, hast aber einen Quarz im Schaltplan. Tada! Du hängst dich selber ab, und durch ignorieren der Meldungen fällt dir das nicht auf.
Da die Arduino IDE es nicht schafft den AVRISP MKII in der Eigenschaft als Jungo-Getriebender anzusprechen schlage ich folgendes vor: https://forum.arduino.cc/index.php?topic=118089.0
Der weitaus einfachere und kompatiblere Weg wäre sich einfach ein AVR Studio 4.18 zu installieren und von dort aus den Programmer aufzurufen.
Arduino F. schrieb: > Du Setzt die Fuses für eine externen Oszilator Externer Oszillator bei > -Ulfuse:w:0xff:m ? Ich sehe 'Low power crystal oscillator' für einen ATmega168.
Hast du keinen Abblock-Kondensator an VCC und GND?
S. Landolt schrieb: > Ich sehe 'Low power crystal oscillator' für einen ATmega168. Und ich einen externen Oszilator. Quelle: http://www.engbedded.com/fusecalc/
O. K. was ich nicht begreife ist folgendes: Ich habe den Bootloader mit der Arduino IDE schon mehrmals erfolgreich geschrieben. Der avrdude Befehlsstring stammt aus dem log Fenster der IDE. Ich habe die Fuses im aktuellen Zustand mit dem AVR-BURN-O_Mat ausgelesen. Was ich dann aber nicht verstehen kann ist: Warum ist es nach dem umfusen auf ext. Oszilator auch ohne diesen möglich einen Sketch aus der IDE zu übertragen und Hello World blinken zu lassen? Arduino F. schrieb: > Du Setzt die Fuses für eine externen Oszilator, hast aber einen > Quarz im > Schaltplan. > > Tada! > Du hängst dich selber ab, und durch ignorieren der Meldungen fällt dir > das nicht auf.
Würde ich machen wenn es das für Linnux gäbe. Soweit mir bekannt gibt es das nur für Windows. Bootloadkünstler schrieb: > Der weitaus einfachere und kompatiblere Weg wäre sich > einfach ein AVR Studio 4.18 zu installieren und von > dort aus den Programmer aufzurufen.
O. K. danke.Muß ich mir erstmal durchlesen und evtl. ausprobieren. Ich melde mich dann nochmal. Bootloadkünstler schrieb: > Da die Arduino IDE es nicht schafft den AVRISP MKII in der > Eigenschaft als Jungo-Getriebender anzusprechen schlage ich > folgendes vor: > > https://forum.arduino.cc/index.php?topic=118089.0
Arduino Fanboy schrieb: > Und ich einen externen Oszilator. > Quelle: http://www.engbedded.com/fusecalc/ Ich hab's nicht so mit Kästchen und Häkchen, noch weniger mit Drittquellen, halte mich lieber an das Datenblatt.
S. Landolt schrieb: > Ich hab's nicht so mit Kästchen und Häkchen, noch weniger mit > Drittquellen, halte mich lieber an das Datenblatt. Vertraust Du dem AVR-Studio 4.18 auch nicht? Im Gegensatz zu den neueren, vollkommen unbrauchbaren Schweineversionen stimmt das nämlich noch. MfG Paul
an Paul Baumann:
Von Ihnen hätte ich eine andere Reaktion erwartet; aber können Sie mir
sagen, wie sich
> -Uhfuse:w:0xdd:m
erkärt?
S. Landolt schrieb: > an Paul Baumann: > > Von Ihnen hätte ich eine andere Reaktion erwartet Was soll das? Eine andere Reaktion? Wie sollte die auf so eine Parole hin sonst aussehen?# S. Landolt schrieb: > Ich hab's nicht so mit Kästchen und Häkchen, noch weniger mit > Drittquellen, halte mich lieber an das Datenblatt. > ; aber können Sie mir > sagen, wie sich >> -Uhfuse:w:0xdd:m > erkärt? So erklärt sich das: Schwanzlurch schrieb: > /usr/share/arduino/hardware/tools/avrdude > -C/usr/share/arduino/hardware/tools/avrdude.conf -v -v -v -v -patmega168 > -cstk500v2 -Pusb -e -Ulock:w:0x3F:m -Uefuse:w:0x00:m -Uhfuse:w:0xdd:m > -Ulfuse:w:0xff:m Ich habe die Einstellungen so übernommen, weiter Nichts. Paul
an Paul Baumann: Ich weiß nicht, ob wir uns richtig verstehen. Arduino Fanboy behauptet, es würde auf 'externer Oszillator', also 'External clock', gestellt, ich halte dagegen mit 'Low power crystal oscillator'. Das ist alles. Parole - was meinen Sie damit? Könnte es sein, dass Sie "Ext. Crystal Osc." mit 'External clock' verwechseln?
S. Landolt schrieb: > Könnte es sein, dass Sie "Ext. Crystal Osc." mit 'External clock' > verwechseln? Wenn verwechseln, dann ich! Von mir ist "Ext. Crystal Osc." gemeint. Das sagen die Fuses.
S. Landolt schrieb: > Könnte es sein, dass Sie "Ext. Crystal Osc." mit 'External clock' > verwechseln? Ich verwechsele das genau so wenig, wie das AVR-Studio das verwechselt. Das Bild habe ich nicht aus Langeweile angehangen. Mir genügt das hier. Das GeSIEze geht mir auf den Sack, HERR Landolt. Ab dafür -Paul- Idiot geblockt.
:
Bearbeitet durch User
> Von mir ist "Ext. Crystal Osc." gemeint.
Ja okay, und ein (externer) Quarz ist ja angeschlossen, also läuft der
Controller.
an Paul Baumann: Die Grundaussage war doch, dass der Controller mangels Takt stehenbleibt, und das ist m.E. falsch.
Hi
>... first mismatch at byte 0x0000
Was hat ein Bootloader dort zu suchen? Die Boot Loader Flash Sections
liegen auf 0x1F80-0x1FFF, 0x1F00-0x1FFF, 0x1E00-0x1FFF oder
0x1C00-0x1FFF.
MfG Spess
Da der avrdude String von der Arduino IDE generiert wird muß das Problem doch auch bei anderen auftauchen. Hat das jemand mal auf meine Weise probiert? Hätte ich selbst die Fuses falsch gesetzt wäre das halt einfach mein Fehler gewesen.
Ich benutze Ubuntu und nicht Windows. Ich habe die Datei boards.txt um den im Link genannten Block ergänzt. Beim flashen des Bootloaders kommt diese Fehlermeldung: Arduino: 1.6.13 (Linux), Board: "AVRISP mkII w/ ATmega328" Fehler beim Brennen des Bootloaders: Konfigurationsparameter 'bootloader.tool' fehlt Beim hochladen eines Sketches: Arduino: 1.6.13 (Linux), Board: "AVRISP mkII w/ ATmega328" Warning: Board arduino:avr:atmega328bb doesn't define a 'build.board' preference. Auto-set to: AVR_ATMEGA328BB Bootloader-Datei angegeben, aber nicht vorhanden: /home/stefan/Schreibtisch/arduino-1.6.13/hardware/arduino/avr/bootloader s/ATmegaBOOT_168_atmega328_pro_8MHz.hex Der Sketch verwendet 1.980 Bytes (6%) des Programmspeicherplatzes. Das Maximum sind 30.720 Bytes. Globale Variablen verwenden 210 Bytes des dynamischen Speichers. Fehler beim Hochladen: Konfigurationsparameter 'upload.tool' fehlt Schwanzlurch schrieb: > O. K. danke.Muß ich mir erstmal durchlesen und evtl. ausprobieren. > Ich > melde mich dann nochmal. > > Bootloadkünstler schrieb: >> Da die Arduino IDE es nicht schafft den AVRISP MKII in der >> Eigenschaft als Jungo-Getriebender anzusprechen schlage ich >> folgendes vor: >> >> https://forum.arduino.cc/index.php?topic=118089.0
Hast du nicht zuerst geschrieben, dass du Sketches problemlos hochladen kannst? Nach den neuen Infos, die wir nun haben würde ich Dir raten, die ganze Arduino IDE zu löschen und neu zu installieren.
So, ich habe die boards.txt ergänzt. Sie sieht jetzt so aus: ############################################### atmega328bb.name=AVRISP mkII w/ ATmega328 atmega328bb.upload.tool=avrdude atmega328bb.upload.protocol=arduino atmega328bb.bootloader.tool=avrdude atmega328bb.upload.using=arduino:avrispmkii atmega328bb.upload.maximum_size=30720 atmega328bb.upload.speed=57600 atmega328bb.bootloader.low_fuses=0xE2 atmega328bb.bootloader.high_fuses=0xDA atmega328bb.bootloader.extended_fuses=0x05 atmega328bb.bootloader.path=arduino:atmega atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex atmega328bb.bootloader.unlock_bits=0x3F atmega328bb.bootloader.lock_bits=0x0F atmega328bb.build.mcu=atmega328p atmega328bb.build.f_cpu=8000000L atmega328bb.build.core=arduino:arduino atmega328bb.build.variant=standard ############################################### Hinzugekommen sind die Einträge: atmega328bb.upload.tool=avrdude atmega328bb.upload.protocol=arduino atmega328bb.bootloader.tool=avrdude Dafür stimmen wohl die hex files des Bootloaders nicht mit denen der IDE überein. Ich werde das noch korrigieren und mich dann wieder melden. Hier noch die Fehlermeldung der IDE: avrdude: 1 bytes of lfuse written avrdude: verifying lfuse memory against 0xE2: avrdude: load data lfuse data from input file 0xE2: avrdude: input file 0xE2 contains 1 bytes avrdude: reading on-chip lfuse data: Reading | ################################################## | 100% 0.01s avrdude: verifying ... avrdude: 1 bytes of lfuse verified avrdude done. Thank you. /home/stefan/Schreibtisch/arduino-1.6.13/hardware/tools/avr/bin/avrdude -C/home/stefan/Schreibtisch/arduino-1.6.13/hardware/tools/avr/etc/avrdud e.conf -v -patmega328p -cstk500v2 -Pusb -Uflash:w:/home/stefan/Schreibtisch/arduino-1.6.13/hardware/arduino/avr/ bootloaders/ATmegaBOOT_168_atmega328_pro_8MHz.hex:i -Ulock:w:0x0F:m avrdude: Version 6.3, compiled on Sep 12 2016 at 15:21:49 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "/home/stefan/Schreibtisch/arduino-1.6.13/hardware/tools/avr/etc/avrdude .conf" User configuration file is "/home/stefan/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : usb Using Programmer : stk500v2 avrdude: usbdev_open(): Found AVRISP mkII, serno: 000200204337 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : STK500V2 Description : Atmel STK500 Version 2.x firmware Programmer Model: AVRISP mkII Hardware Version: 1 Firmware Version Master : 1.23 Vtarget : 5.1 V SCK period : 8.00 us avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x1e950f (probably m328p) avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading input file "/home/stefan/Schreibtisch/arduino-1.6.13/hardware/arduino/avr/bootloade rs/ATmegaBOOT_168_atmega328_pro_8MHz.hex" avrdude: can't open input file /home/stefan/Schreibtisch/arduino-1.6.13/hardware/arduino/avr/bootloader s/ATmegaBOOT_168_atmega328_pro_8MHz.hex: No such file or directory avrdude: read from file '/home/stefan/Schreibtisch/arduino-1.6.13/hardware/arduino/avr/bootloade rs/ATmegaBOOT_168_atmega328_pro_8MHz.hex' failed avrdude done. Thank you. Fehler beim Brennen des Bootloaders.
> No such file or directory
Ja, wo isses denn...
so, dieser Eintrag der boards.txt scheint funktioniert zu haben: ############################################### atmega328bb.name=AVRISP mkII w/ ATmega328 atmega328bb.upload.tool=avrdude atmega328bb.upload.protocol=arduino atmega328bb.bootloader.tool=avrdude atmega328bb.upload.using=arduino:avrispmkii atmega328bb.upload.maximum_size=30720 atmega328bb.upload.speed=57600 atmega328bb.bootloader.low_fuses=0xE2 atmega328bb.bootloader.high_fuses=0xDA atmega328bb.bootloader.extended_fuses=0x05 atmega328bb.bootloader.path=arduino:atmega atmega328bb.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex atmega328bb.bootloader.unlock_bits=0x3F atmega328bb.bootloader.lock_bits=0x0F atmega328bb.build.mcu=atmega328p atmega328bb.build.f_cpu=8000000L atmega328bb.build.core=arduino:arduino atmega328bb.build.variant=standard ############################################### Vielen Dank nochmal allen.
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.