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
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 presentartiQUI (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.
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.
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....
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".
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:
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?