Forum: Mikrocontroller und Digitale Elektronik Problem beim Bootloader brennen Atmega4809


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
auf die Platine Beitrag "Atmega4809nano" soll ein 
Bootloader.

als UPDI Programmer wird ein Atmega328 mit der Software von ElTangas 
verwendet. Atmega328 Pin D6 ist über 4.7k mit dem UPDI-Pin des 
Atmega4809 verbunden und Pin RST des Atmega328 ist über 470nF mit VCC 
verbunden, so wie ElTangas das zeigt.

Atmega328 und Atmega4809 sind über VCC, GND miteinander verbunden. Die 
Spannung über USB beträgt laut Oszi ~4.5V.

Der Atmega328 Programmer meldet sich als USB-SERIAL CH340 (COM4).

In der Arduino-Umgebung 1.8.9 ist eingestellt:
"Werkzeuge", "Board", "MegaCoreX" Atmega4809
Bootloader: "Optiboot (UART3 default pins)"
Clock: "Internal 16 MHz"
Pinout: "48 pin standard"
Reset pin: "Reset"
Programmer: "JTAG2UPDI"
Port COM4

Bei "Bootloader brennen" Bootloader erscheint "Fehler beim Brennen des 
Bootloaders" und diese Ausgabe:
Arduino: 1.8.9 (Windows 7), Board: "ATmega4809, 48 pin standard, Reset, BOD 
2.6V, Internal 16 MHz, Optiboot (UART3 default pins)"

avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino
\hardware\MegaCoreX-master\megaavr/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : jtag2updi
JTAG ICE mkII sign-on message:
Communications protocol version: 1
M_MCU:
  boot-loader FW version:        1
  firmware version:              6.00
  hardware version:              1
S_MCU:
  boot-loader FW version:        1
  firmware version:              6.00
  hardware version:              1
Serial number:                   00:00:00:00:00:00
Device ID:                       JTAGICE mkII
         AVR Part                      : ATmega4809
         Chip Erase delay              : 0 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 0
         StabDelay                     : 0
         CmdexeDelay                   : 0
         SyncLoops                     : 0
         ByteDelay                     : 0
         PollIndex                     : 0
         PollValue                     : 0x00
         Memory Detail                 :

                                  Block Poll               Page                 
      Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  
MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- 
----- ---------
           signature      0     0     0    0 no          3    0      0     0    
 0 0x00 0x00
           prodsig        0     0     0    0 no         61   61      0     0    
 0 0x00 0x00
           fuses          0     0     0    0 no          9    0      0     0    
 0 0x00 0x00
           fuse0          0     0     0    0 no          1    0      0     0    
 0 0x00 0x00
           fuse1          0     0     0    0 no          1    0      0     0    
 0 0x00 0x00
           fuse2          0     0     0    0 no          1    0      0     0    
 0 0x00 0x00
           fuse4          0     0     0    0 no          1    0      0     0    
 0 0x00 0x00
           fuse5          0     0     0    0 no          1    0      0     0    
 0 0x00 0x00
           fuse6          0     0     0    0 no          1    0      0     0    
 0 0x00 0x00
           fuse7          0     0     0    0 no          1    0      0     0    
 0 0x00 0x00
           fuse8          0     0     0    0 no          1    0      0     0    
 0 0x00 0x00
           lock           0     0     0    0 no          1    0      0     0    
 0 0x00 0x00
           data           0     0     0    0 no          0    0      0     0    
 0 0x00 0x00
           usersig        0     0     0    0 no         64   64      0     0    
 0 0x00 0x00
           flash          0     0     0    0 no      49152  128      0     0    
 0 0x00 0x00
           eeprom         0     0     0    0 no        256   64      0     0    
 0 0x00 0x00

         Programmer Type : JTAGMKII_PDI
         Description     : JTAGv2 to UPDI bridge
         M_MCU hardware version: 1
         M_MCU firmware version: 6.00
         S_MCU hardware version: 1
         S_MCU firmware version: 6.00
         Serial number:          00:00:00:00:00:00
Fehler beim Brennen des Bootloaders.
         Vtarget         : 5.0 V

avrdude: jtagmkII_initialize(): part ATmega4809 has no PDI interface
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: jtagmkII_close(): bad response to sign-off command: 
RSP_ILLEGAL_MCU_STATE

avrdude done.  Thank you.

die Verbindungen erscheinen ok. Auf der UPDI-Leitung kann ich ein paar 
Pulse sehen die der Atmega328 sendet. AVRDUDE scheint auch aktuell. Bei 
der 2. Platine kommt dieselbe Meldung.

woran kann das Problem liegen?
hat jemand Lust ein Leerboard zu bestücken und testen?

Gruss
Matthias

von Georg M. (g_m)


Bewertung
0 lesenswert
nicht lesenswert
Matthias W. schrieb:
> und Pin RST des Atmega328 ist über 470nF mit VCC
> verbunden

Mit GND.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
> avrdude: jtagmkII_initialize(): part ATmega4809 has no PDI interface

Warum PDI? Es müsste doch UPDI sein!

Im der Konfigurationsdatei die dem offiziellen Download von avrdude 6.3 
(aus dem Jahr 2016!) beiliegt, gibt es es aber weder "udpi" noch "4809". 
Auch im Quelltext kommt das Wort "updi" nicht vor.

Aber in der Version, die in Debian 10 und Arduino enthalten ist, gibt es 
"updi" sowohl in der Konfigurationsdatei als auch im Quelltext. Der 
m4809 gehört zur avr8x Familie und die hat dort "has_updi = true".

Offenbar hat jemand fehlerhaft gepatchte Versionen des Programms in 
Umlauf gebracht, die inzwischen sogar in Debian enthalten sind.

Jörg, sage mal was dazu.

: Bearbeitet durch User
von Matthias W. (matt007)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Georg M. schrieb:
> Matthias W. schrieb:
>> und Pin RST des Atmega328 ist über 470nF mit VCC verbunden
> Mit GND.

Danke Georg, das ist auf dem Steckbrett gleich umgesteckt.

Laut dem Bild sah es so aus als ob das auf VCC soll.

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Warum PDI? Es müsste doch UPDI sein!

meine Vermutung ist dass ggf. mit dem Weg von ElTangas zusammenhängt. Er 
musste das ja irgendwie dem System unterjubeln.

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
laut Beispiel klappt es mit avrdude -c jtag2updi -P COM15 -p m4809 -U 
flash:w:4809_Blinky.hex einen 4809 zu programmieren.

das Blink-Beispiel mit avrdude -v -v -p atmega4809 -c jtag2updi -P COM7 
-U flash:w:Blink.ino.hex bringt auf dem anderen Laptop die 
Fehlermeldung: avrdude: Can't find programmer id "jtag2updi".

in avrdude.conf ist kein Eintrag zu jtag2updi. Es gibt jedoch 
"jtag2pdi".

welches avrdude.conf soll ich nehmen?

Gruss
Matthias

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Warum so umständlich? Du willst doch nur per UPDI flashen, oder?

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
Wilhelm M. schrieb:
> Du willst doch nur per UPDI flashen, oder?

ja, erst mal will ich genau das !

wenn das per Arduino-IDE geht will ich das Chip auch per Makefile und 
AVRDUDE programmieren, so wie ich es schon jahrelang mache.

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
nimm eine Diode und ein Cp1202-Modul und pyupdi: fertig ist der 
Programmer

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
hier steht ein Beispiel von ElTangas für einen Tiny mit UPDI:
https://github.com/ElTangas/jtag2updi
avrdude -c jtag2updi -P com7 -p t1614

"You can make the setting permanent by editing the jtag2updi entry on 
"avrdude.conf"."

demnach muss ElTangas ein avrdude.conf haben das einen jtag2updi-Eintrag 
hat.

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
Elektor muss auch etwas Funktionierendes gehabt haben:
https://www.elektormagazine.com/labs/arduino-for-updi-programming-for-atmega4809-and-tiny816817-with-jtag2updi

"For the ATMega48090 to give an example, we assume a 4809_Blinky.hex and 
also COM15 as the programmers port. In this case the command would be:
avrdude -c jtag2updi -P COM15 -p m4809 -U flash:w:4809_Blinky.hex"

daran hatte ich mich angelehnt - nur klappt es bei mir so eben nicht.

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Wie oben gesagt: vergiss diesen ganzen ElTanga-Kram. Braucht man doch 
nicht um per UPDI zu flashen.

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
Wilhelm M. schrieb:
> nimm eine Diode und ein Cp1202-Modul und pyupdi: fertig ist der
> Programmer

Danke für den Hinweis Wilhelm. Das kann ich auch noch probieren !
Hast Du da einen Link mit Beschreibung dazu?

gerne würde ich auch die Arduino IDE und AVRDUDE wieder am Laufen haben.

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
Wilhelm M. schrieb:
> Braucht man doch nicht um per UPDI zu flashen.

Du hast recht - es gibt mehrere Wege die man gehen kann.

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Matthias W. schrieb:
> Hast Du da einen Link mit Beschreibung dazu?

Google?

https://github.com/mraardvark/pyupdi

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
Matthias W. schrieb:
> nimm eine Diode und ein Cp1202-Modul und pyupdi

Du meinst das?
https://github.com/mraardvark/pyupdi
die schließen am Ausgang des 4.7k noch RX an. Das sah ich bei dem Bild 
bei ElTangas so nicht. Wie will er das dann zurücklesen?

normalerweise sind seriell immer 2 Pins die ja für UPDI wohl 
zusammengeführt werden.

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Besser Diode statt R.

UPDI ist Half-Duplex -> s.a. Datenblatt

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
Wilhelm M. schrieb:
> Google?

ja.

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
Wilhelm M. schrieb:
> Besser Diode statt R.

ok.

von Matthias W. (matt007)


Bewertung
0 lesenswert
nicht lesenswert
wenn ich http://download.savannah.gnu.org/releases/avrdude/ anschaue, so 
scheint dies 2016: avrdude-6.3-mingw32.zip 17-Feb-2016 10:03.

meines ist neuer, 6.3-20171130.

hier wird behauptet dass AVRDUDE 6.3 jtag2updi kann:
https://www.avrfreaks.net/forum/atmega4809-pf-programming-avrdude
"But Avrdude v6.3 can use: -c jtag2updi"
"And if I ask for -c? I get:
jtag2updi        = JTAGv2 to UPDI bridge"

es gibt offenbar mehrere builds:
"I suspect that there are several "v6.3" builds on the Internet."

wo finde ich den richtigen Build?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.