problema a flashare un bootloader su un atmega2560

Buongiorno a tutti ragazzi! ci sto impazzendo!

devo ri-flashare il bootloader in una board che monta un atmega 2560 utilizzando come un nano come isp.

sto utilizzando avrdude da cmq ma quando do il comando mi compare un messaggio di errore legato al file hex contenente il bootloader. Il file hex l'ho pescato nella cartella di installazione di arduino e si chiama stk500boot_v2_mega2560.hex

il comando che do è il seguente:

avrdude -P com6 -b 57600 -c avrisp -p m328p -F -v -U flash:w:stk5
00boot_v2_mega2560.hex -U efuse:w:0xF4:m -U hfuse:w:0xD9:m -U lfuse:w:0xFF:m -U
lock:w:0x0F:m

mentre il messaggio di errore che mi compare è il seguente

vrdude: Version 5.10, compiled on Jan 19 2010 at 10:45:23
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "C:\WinAVR-20100110\bin\avrdude.conf"


Using Port : com6
Using Programmer : avrisp
Overriding Baud Rate : 19200
AVR Part : ATMEGA2560
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
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 Max
W ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
-- ---------
eeprom 65 10 20 0 no 4096 8 0 9000 90
00 0x00 0x00
flash 65 10 256 0 yes 262144 256 1024 4500 45
00 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 90
00 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 90
00 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 90
00 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 90
00 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 : STK500
Description : Atmel AVR ISP
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s

avrdude: Device signature = 0x1e9801
avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D8
avrdude: safemode: efuse reads as FD
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 "stk500boot_v2_mega2560.hex"
avrdude: input file stk500boot_v2_mega2560.hex auto detected as Intel Hex
avrdude: error: address 0x3e010 is out of range at line 2

qualcuno sa cosa da possa dipendere ?

Te l'ho già chiesto io a suo tempo QUI, poi te lo ha chiesto Nid QUI , te lo richiedo ancora ...

... nel rispetto del regolamento, ti chiedo di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

nessuno sa come aiutarmi?

Credo che l'errore sia il parametro -p m328p, visto che stai programmando un 2560.

Raro vedere una Nano come programmatore ISP.
Presumo hai seguito una guida su qualche sito. Arduino sul suo sito ufficiale da indicazioni e utilizza una board Uno.

A questo indirizzo Arduino Nano as an ISP Programmer | Martyn Currey
leggo un sito che usa la Nano ma… alla fine usa l’IDE di Arduino per caricare il bootloader, cosa che mi pare più semplice.
Nell’esempio del sito seleziona una Uno (anzi si crea una sua voce board, lascia stare) per rimettere il bootloader su un ATmega328 standalone. Se selezioni la Mega 2560 dovrebbe andare bene al tuo caso. L’IDE passerà i parametri giusti ad avrdude

Una Nano va benissimo come programmatore con ArduinoISP! Alla fine è uguale a una Uno. Io me ne sono saldato uno su una basetta con un paio di socket per i vari ATtiny che uso ed è lì che fa il suo dovere da almeno un anno. Una volta l’ho anche usato proprio per rimettere il bootloader sulla mia Mega cinese senza alcun problema.

Lo uso sempre tramite IDE però, per precisione.

Ragazzi, grazie mille delle risposte....mi conforta sapere che sicuramente sto sbagliando io qualcosa e non che il mio nano non sia adatto come ISP.

Per rendere le cose piu chiare lasciatemi scrivere 2 righe cosi vi spiego al storia e magari con vostro aiuto ne veniamo a capo.

Innanzitutto la scelta del nano dipende dal fatto che avevo quello in casa. L'at mega2560 da programmare è montato su una pcb di un arducopter(un flight controller per droni per intenderci).

L'utilizzo di avr dude dipende dal fatto che ho seguito una guida abbastanza dettagliata dove appunto utilizzavano questo software e un arduino mega.

Il parametro - p m328p dovrebbe indicare(se non ho capito male) il chip del programmatore e non il chip da programmare. Infatti nella guida che ho seguito, dove usano un arduino mega, passano il parametro -p m2560 e -b 19200 visto che il boundrate della cpu del emga è quella.

Quindi io, logicamente, ho sotituito i parametri da passare con quelli che mi sembravano corretti....

ho forse inteso male il "-p" ?

Il -p è l’unico parametro obbligatorio. E’ il chip da programmare.
Il programmatore lo indichi con -c.
AVRDUDE: 2.1 Option Descriptions

ah....allora devo provare a cambiare il parametro -p...ma il -b resta lo stesso giusto?

Io inizierei senza -b, poi se non va proverei diversi valori.

turborocket:
L'utilizzo di avr dude dipende dal fatto che ho seguito una guida abbastanza dettagliata dove appunto utilizzavano questo software e un arduino mega.

Mi ripeto. L'IDE di Arduino anche utilizza avrdude. Solo che lo invoca lui con i parametri giusti a seconda della board da programmare che scegli. A me pare più sicuro usare l'IDE che non avrdude da linea di comando.

nid69ita:
Mi ripeto. L'IDE di Arduino anche utilizza avrdude. Solo che lo invoca lui con i parametri giusti a seconda della board da programmare che scegli. A me pare più sicuro usare l'IDE che non avrdude da linea di comando.

ok allora stasera provo con la ide....

cosa devo fare nel dettaglio una volta collegato Arduino al mio 2560 da programmare?
Ci sono impostazioni particolari per far si che funzioni?

Se non hai particolari esigenze di programmazione dei fuse, l'IDE è sicuramente la scelta giusta. Basta collegare programmatore e scheda da programmare, selezionare il tipo di quest'ultima dal menù e quindi fare "Scrivi il bootloader".

Come ho scritto prima: Arduino Nano as an ISP Programmer | Martyn Currey
vedi sezione "Set Fuses by Burning a Boot Loader"

MA invece di selezionare la board nuova che suggerisce quel sito, selezioni semplicemente la board Arduino Mega, gli altri passi indicati sono quelli.
Ovvero:
1.Select the Board Arduino Mega
2.Set the Arduino as ISP as the programmer
3.Select Burn BootLoader

(ovviamente prima devi aver caricato Arduino as ISP sul Nano)

Allora, ho provato a fare come mi avete consiglaito attraverso la IDE,

sembra che tutto abbia funzionato in quanto la IDE mi dice caricamente bootloader completo, ma purtroppo la scheda sulla quale è montato il 2560 da programmare non sembra funzionare. Ovvero si alimenta, viene vista dal pc, ma non comunica tramite l’usb presente sulla pcb.

Ho riprovato quindi da avrdude andando a modificare qualche parametro come consigliato nel topic.
L’istruzione è andata a buon fine e sembra che tutto abbia funzionato, ma il risultato aspettato è diverso da quello ottenuto. Mi spiego meglio. Seguendo questa guida, dovrei ottenere i bit fuses programmati ma in realtà quello che ottengo è questo:

E:\Droni\APM\AVRdude + bootloader atmega2560>avrdude.exe -P com7 -c arduino -pm2
560 -F -v -U flash:w:stk500boot_v2_mega2560.hex -U efuse:w:0xF4:m -U hfuse:w:0xD
9 -U lfuse:w:0xFF:m -U lock:w:0x0F:m -b57600

avrdude.exe: Version 6.0.1, compiled on Oct 17 2013 at 21:37:20
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch

             System wide configuration file is "E:\Droni\APM\AVRdude + bootloade
r atmega2560\avrdude.conf"

             Using Port                    : com7
             Using Programmer              : arduino
             Overriding Baud Rate          : 57600
             AVR Part                      : ATmega2560
             Chip Erase delay              : 9000 us
             PAGEL                         : PD7
             BS2                           : PA0
             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    10     8    0 no       4096    8      0  9000
  9000 0x00 0x00
               flash         65    10   256    0 yes    262144  256   1024  4500
  4500 0x00 0x00
               lfuse          0     0     0    0 no          1    0      0  9000
  9000 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  9000
  9000 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  9000
  9000 0x00 0x00
               lock           0     0     0    0 no          1    0      0  9000
  9000 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 : Arduino
             Description     : Arduino
             Hardware Version: 2
             Firmware Version: 1.16
             Vtarget         : 0.0 V
             Varef           : 0.0 V
             Oscillator      : Off
             SCK period      : 0.1 us

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude.exe: Device signature = 0x1e950f
avrdude.exe: Expected signature for ATmega2560 is 1E 98 01
avrdude.exe: safemode: lfuse reads as 0
avrdude.exe: safemode: hfuse reads as 0
avrdude.exe: safemode: efuse reads as 0
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be per
formed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "stk500boot_v2_mega2560.hex"
avrdude.exe: input file stk500boot_v2_mega2560.hex auto detected as Intel Hex
avrdude.exe: writing flash (261406 bytes):

Writing | ################################################## | 100% 0.20s

avrdude.exe: 261406 bytes of flash written
avrdude.exe: verifying flash memory against stk500boot_v2_mega2560.hex:
avrdude.exe: load data flash data from input file stk500boot_v2_mega2560.hex:
avrdude.exe: input file stk500boot_v2_mega2560.hex auto detected as Intel Hex
avrdude.exe: input file stk500boot_v2_mega2560.hex contains 261406 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 0.22s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x3f800
             0x0c != 0x8e
avrdude.exe: verification error; content mismatch

avrdude.exe: safemode: lfuse reads as 0
avrdude.exe: safemode: hfuse reads as 0
avrdude.exe: safemode: efuse reads as 0
avrdude.exe: safemode: Fuses OK (H:00, E:00, L:00)

avrdude.exe done.  Thank you.

che si differenzia leggermente dal risultato della guida indicata sopra.

I collegamenti dovrebbe essere corretti, nel dettaglio:

D13–>SCK
D12–>MISO
D11–>MOSI
D10–>RST
+5V–>+5V
GND–>GND

Il Pinout di arduino l’ho preso da qui
Il pinout dell’header della scheda da programmare è(file allegato):

turborocket:
avrdude.exe: Device signature = 0x1e950f
avrdude.exe: Expected signature for ATmega2560 is 1E 98 01

AvrDude sta cercando di programmare il 328P del Nano.
Non ricordo quale devi indicare per Arduino as ISP.

PaoloP:
AvrDude sta cercando di programmare il 328P del Nano.
Non ricordo quale devi indicare per Arduino as ISP.

quindi c'è qualche parametro errato nel comando che do, per indicare ad avrdude di usare il nano come ponte...

qualche idea?

Prova con: -c stk500v1 -b 19200
Sono i parametri che usa l’IDE di Arduino quando si programma con l’Arduino as ISP.

PaoloP:
Prova con: -c stk500v1 -b 19200
Sono i parametri che usa l'IDE di Arduino quando si programma con l'Arduino as ISP.

come da te suggerito ho fatto questa prova, ma ancora senza risultato....

questo è quello che mi è venuto fuori

E:\Droni\APM\AVRdude + bootloader atmega2560>avrdude.exe -P com7 -F -v -b 19200
-c stk500v1 -p m2560 -U flash:w:stk500boot_v2_mega2560.hex -U efuse:w:0xF4:m -U
hfuse:w:wxD9:m - U lfuse:w:0xFF:m -U lock:w:0x0F:m

avrdude.exe: Version 6.0.1, compiled on Oct 17 2013 at 21:37:20
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch

             System wide configuration file is "E:\Droni\APM\AVRdude + bootloade
r atmega2560\avrdude.conf"

             Using Port                    : com7
             Using Programmer              : stk500v1
             Overriding Baud Rate          : 19200
             AVR Part                      : ATmega2560
             Chip Erase delay              : 9000 us
             PAGEL                         : PD7
             BS2                           : PA0
             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    10     8    0 no       4096    8      0  9000
  9000 0x00 0x00
               flash         65    10   256    0 yes    262144  256   1024  4500
  4500 0x00 0x00
               lfuse          0     0     0    0 no          1    0      0  9000
  9000 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  9000
  9000 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  9000
  9000 0x00 0x00
               lock           0     0     0    0 no          1    0      0  9000
  9000 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 : STK500
             Description     : Atmel STK500 Version 1.x firmware
             Hardware Version: 2
             Firmware Version: 1.18
             Topcard         : Unknown
             Vtarget         : 0.0 V
             Varef           : 0.0 V
             Oscillator      : Off
             SCK period      : 0.1 us

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.06s

avrdude.exe: Device signature = 0xffffff (retrying)

Reading | ################################################## | 100% 0.05s

avrdude.exe: Device signature = 0xffffff (retrying)

Reading | ################################################## | 100% 0.06s

avrdude.exe: Device signature = 0xffffff
avrdude.exe: Yikes!  Invalid device signature.
avrdude.exe: Expected signature for ATmega2560 is 1E 98 01
avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as FF
avrdude.exe: safemode: efuse reads as FF
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be per
formed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "stk500boot_v2_mega2560.hex"
avrdude.exe: input file stk500boot_v2_mega2560.hex auto detected as Intel Hex
avrdude.exe: writing flash (256458 bytes):

Writing | ################################################## | 100% 0.06s

avrdude.exe: 256458 bytes of flash written
avrdude.exe: verifying flash memory against stk500boot_v2_mega2560.hex:
avrdude.exe: load data flash data from input file stk500boot_v2_mega2560.hex:
avrdude.exe: input file stk500boot_v2_mega2560.hex auto detected as Intel Hex
avrdude.exe: input file stk500boot_v2_mega2560.hex contains 256458 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 0.06s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x3e000
             0xff != 0x0d
avrdude.exe: verification error; content mismatch

avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as FF
avrdude.exe: safemode: efuse reads as FF
avrdude.exe: safemode: Fuses OK (H:FF, E:FF, L:FF)

avrdude.exe done.  Thank you.

sono ancora in dubbio se avrdude stia cercando di programmare la scheda da programmare oppure se stia tentando di programmare arduino(che in realtà è il programmatore). i bit fuse non corrispondo con quello che dovrebbe venire fuori.....
Premetto che io sto utilizzando solo avrdude, quindi senza caricare nulla sull'arduino. E' giusto?
altre idee?

Il programmatore viene visto correttamente. Verifica le connessioni verso la Mega, e ricordati di alimentarla.