Arduino Ethernet board and TFTP Bootloader
This is an unfinished TFTP bootloader for the Arduino Ethernet. The developer that was hired to write it never finished it so we are opening it up to the community in the hope that somebody will fix it and make it work.
in pratica è un bootloader che permette di uppare gli sketch, invece che con la classica seriale, attraverso la ehternet! Certo nasce per essere per la board arduino ethrnet, ma con qualche cambiamento e un poco di circuiteria credo possa essere espanso anche alla classica ethernet board.
purtroppo il progetto risulta morto il 16 July 2011.
Quindi l'idea è che tutti assieme, sopratutto i "principiati", partecipino assieme a chi ne sa qualcosina in più per completare il progetto.
premetto che non ho guardato il bootloader attuale e che non sono in possesso di una scheda ethernet (purtroppo, quindi vorrei ma non posso aiutarvi) quindi vorrei capire schematicamente come funziona il sistema.
intendo:
se dovessi fare una cosa simile io modificherei il core di arduino in modo che non si resetti all'aprirsi della seriale ma quando riceve una connessione in apertura dal protocollo (parte relativamente facile), quindi parte il bootloader che si mette in ascolto e di conseguenza programma il micro.
è una cavolata?
attualmente come funziona il sistema? salva magari su sd esterna?
Io ho l'Eth shield e posso metterla a disposizione per le prove in combinata con una 2009 ed una Seeeduino Mega (Mega 1280), non sarò di grande aiuto ma se posso fare testing chiedete pure..
superlol:
se dovessi fare una cosa simile io modificherei il core di arduino in modo che non si resetti all'aprirsi della seriale ma quando riceve una connessione in apertura dal protocollo (parte relativamente facile), quindi parte il bootloader che si mette in ascolto e di conseguenza programma il micro.
Non era un topic aperto da me ma da un altro utente,
lupastro81:
ciao è possibile caricare uno sketch tramite un qualche modulo ethernet (anche da costruire con un max)? e se è possibile mi potreste indicare un tutorial per favore?
dal pc all'arduino mega c'è una distanza di una quindicina di metri e un cavo utp sarebbe perfetto...
io mi sono limitato ad illustrare cosa fosse possibile fare
niki77:
Ciao,
So dell'esistenza di un bootloader che consente l'aggiornamento tramite ethernet laddove vi sia la shield installata(chipset w5100)ma non l'ho mai provato, pertanto non so dirti quanto funzioni .
ed in seguito ad allegare i risultati dei test.
niki77:
Piccolo aggiornamento:
Ho appena testato con successo il TFTPBootloader nella mia arduino ethernet....
Se poi ci si vuole lavorare per modificarlo si può fare, ma bisogna anche sapere in cosa si ha la necessità di modificarlo.
Ethernet Bootloader
Arduino Ethernet board and TFTP Bootloader
This is an unfinished TFTP bootloader for the Arduino Ethernet. The developer that was hired to write it never finished it so we are opening it up to the community in the hope that somebody will fix it and make it work.
It was originally designed to run on both the Arduino Ethernet board and a regular Arduino with Ethernet Shield.
If you intend to work on it, join the Arduino Developers mailing list and let us know.
16 July 2011
lo scopo era prendere il codice e debugarralo per risolvere il bug in modo che funzionasse... ma se già funziona..
Funzionare funziona, ho effettuato una 50ina di caricamenti e non ha perso un colpo.
Diciamo che si potrebbero implementare delle costanti che in base a come sono impostate configura automaticamente le varie opzioni.
Io per risolvere il mio problema specifico ho compilato tutto sul sorgente, ma si potrebbe fare che in fase di compilazione si definiscono alcune costanti invece che leggerle dalla eeprom che secondo me è la cosa meno pratica:
una constante che individua il tipo di scheda per la quale si vuole compilare il bootloader
Deve contenere il pin del led della scheda(se presente)
Il pin di SCK
Il pin di MISO
Il pin di MOSI
Il pin di SS connesso al chip w5100
definiamo ad esempio ARDUINO_UNO che ha come valori #ifdef ARDUINO_UNO #define SCK_PIN 5 //PB5 #define MISO_PIN 4 //PB4 #define MOSI_PIN 3 //PB3 #define SS_PIN 2 //PB2 #define LED_PIN 1 //PBX [PB5(pin digital 13) non si può usare quello a bordo in quanto è utilizzato da SCK] #endif
una serie di costanti che impostano la configurazione di rete
#ifdef BOARD_IP
... si imposta l'ip fornito in fase compilazione #endif #ifndef BOARD_IP
... si impsota un ip di default #endif
stessa cosa per SUBNET_MASK, GATEWAY e MAC.
Una cosa molto interessante (già detta sopra da un altro utente) sarebbe quella di riuscire a forzare il reset della scheda tramite ethernet per consentire l'avviamento della stessa col bootloader in attesa di connessione tftp, ma questa implementazione va fatta nello sketch e non nel bootloader, quindi non sarebbe una soluzione 'integrata'.