Programmare AVR via ethernet(web serve).Con Arduino potrebbe essere possibile?

Ciao,
mi sto avvicinando al mondo di Arduino e dei micro Atmel e quindi scusate se sono "poco" tecnico nel parlarne.
Se ho ben capito l'unico modo per programmare Arduino (od un micro AVR), è l'utilizzo di un PC con porta seriale (o emulata tramite USB in qualche maniera).

Sto cercando di pensare a "qualcosa" che permetta di programmare un micro AVR Atmel senza necessità di porta seriale/usb ed ho pensato che una buona idea sarebbe tramite ethernet (o wifi) sfruttando un web server. Questo permetterebbe di eliminare qualunque problema lato PC e sarebbe al 100% non legato al sistema operativo del dispositivo.

Mi spiego: mi collego al web server (da un qualunque dispositivo), faccio l'upload del file .hex, immetto il modello di controllore che sto andando a programmare e clicco START. Il web server (connesso per forza di cose seriale con il micro) si occuperà (tramite il software residente nel server) di trasferire il programma nella Flash del micro.

Mi chiedo: un Arduino + ethernet shield potrebbe fare questo in linea di principio?

In pratica mi sto chiedendo se è possibile compilare "avrdude" (o programmare qualcosa di simile), caricandolo nella Flash di Arduino. I config. file (con le varie configurazioni dei diversi modelli di controllori) potrebbero risiedere sulla micro-SD dell'ethernet shield. E nella stessa micro-SD potrebbe essere fatto l'upload del file .HEX tramite WEB (tramite web server residente in Arduino).

Il programma residente in Arduino (quello che si occupa di programmare l'altro micro AVR), nominiamolo "avrdude_micro" viene lanciato tramite WEB dall'utente remoto (bottone START) ed in autonomia programmerà l'altro micro, magari mandando il report nuovamente all'utente tramite WEB.

Immagino che se nessuno l'ha mai fatto probabilmente la cosa ha delle difficoltà tecniche. Quelle che immagino sono:

  1. Quali sono le dimensioni di un programma "avrdude_micro" minimali (considerando i file di configurazione caricati in una memoria esterna SD). La Flash di Arduino è sufficiente?
  2. Ci possono essere dei problemi durante il doppio trasferimento effettuato dal "avrdude_micro": "avrdude_micro" deve leggere i dati dalla SD e trasferirlo serialmente al micro che sta programmando.

Per favore ditemi se sono stato poco chiaro e per favore cosa ne pensate e se è fattibile secondo voi.

Ciao,
Stroccia

C'è questo --> http://labs.arduino.cc/TFTPBootloader/Index
oppure da quello che ho capito vuoi creare un Arduino ISP con interfaccia Web.

C'è anche in progetto, più che progetto un idea, una shield AriaG25 con possibilità di riprogrammare il micro.
Oppure c'è linuxino --> www.linuxino.com

EDIT: Oppure parli di CodeBender?? --> http://codebender.cc/

EDIT2: Eccolo!!
--> http://my.agile-hardware.de/de/arduino-ethernet-ohne-poe-mit-codebender-ariadne?x5423b=322a5c32c20bd3d295d46edd996fdd96
Arduino Ethernet programmabile via internet dal sito codebender. :grin: :grin:

Puoi anche mettere insieme una Arduino una Eth Shield col Wiz5100 e inserire questo bootloader --> GitHub - codebndr/Ariadne-Bootloader: A little less unfinished TFTP bootloader for Arduino Ethernet or Arduino with Ethernet Shield

PaoloP:
Oppure c'è linuxino --> www.linuxino.com

Linuxino è appena entrato nella fase produttiva, sarà disponibile in grande quantità tra 15-20 giorni.
Con Linuxino è possibile programmare Arduino via ethernet/wifi, personalmente provato, utilizzando avrdude compilato per ARM e uno script che lo invoca con la giusta riga di comando.

Paolo,
TFTPBootLoader e codebender sembrano essere pensati per Arduino (con bootloader) e non per Atmel AVR "nudi" senza bootloader.
Linuxino invece mi sembra proprio fare al caso in quanto costerà solo 24 euro. Basterebbe installarci un web server e avrdude (triggerato da web server)!

Ma sarebbe già tutt'un'altra cosa... sarebbe un sistema operativo a tutti gli effetti e avrebbe un sacco di periferiche che non utilizzerei: forse sarebbe uno spreco di hardware?

Se si potesse, vorrei fare qualcosa di un po' più semplice al livello hardware. Più "Arduino-like" insomma.

In un altro topic, Astro mi ha accennato alla possibilità di creare una vera e propria shield per Arduino con a bordo l'AriaG25 che funga da webserver, ethernet shield e all'occorrenza anche da programmatore ISP.
Io aspetto fiducioso e ho già prenotato la scheda numero 1. (@Astro: vedi l'altro topic :grin: )
Però so anche che Astro a molto lavoro quindi il progetto andrà un po' a rilento... ma io non ho fretta. :wink:

@ Astrobeed

"Con Linuxino è possibile programmare Arduino via ethernet/wifi, personalmente provato"

Immagino si possa programmare qualunque Atmel ARM con interfaccia ISP... non solo l'Arduino, che ha il bootloader già caricato. Giusto?

PaoloP:
In un altro topic, Astro mi ha accennato alla possibilità di creare una vera e propria shield per Arduino con a bordo l'AriaG25 che funga da webserver, ethernet shield e all'occorrenza anche da programmatore

Una shield con Aria non ha senso realizzarla.
Quello che sto facendo è una libreria che consente di usare Linuxino come una shield, basta collegarla alla SPI di Arduino, che fa in contemporanea le funzioni della ethernet shield 10/100, con tanto di web server onboard, shield WiFi collegando una key usb WiFi, usb host shield (3 porte), accesso alla SD di Linuxino come memoria di massa per Arduino, in più la possibilità di programmare Arduino da Linuxino (occorre collegare anche la seriale) tramite ethernet/wifi oppure compilando in locale uno sketch, insomma di tutto di più spendendo di meno :grin:

stroccia:
Immagino si possa programmare qualunque Atmel ARM con interfaccia ISP... non solo l'Arduino, che ha il bootloader già caricato. Giusto?

No, solo per Arduino perché serve il relativo bootloader, per programmare un micro senza di questo ti serve un apposito programmatore hardware che potrebbe essere un altro Arduino con sopra lo sketch ISP.

astrobeed:

stroccia:
Immagino si possa programmare qualunque Atmel ARM con interfaccia ISP... non solo l'Arduino, che ha il bootloader già caricato. Giusto?

No, solo per Arduino perché serve il relativo bootloader, per programmare un micro senza di questo ti serve un apposito programmatore hardware che potrebbe essere un altro Arduino con sopra lo sketch ISP.

E mettere un usb tiny ISP su una USB dell' Aria?

Perchè il linuxino o l'Aria non possono programmare direttamente in ISP se lo fà un Atmega328?
C'è qualcosa che mi sfugge?

cece99:
E mettere un usb tiny ISP su una USB dell' Aria?

Che senso ha con quatto porte seriali disponibili ?
Sopratutto che senso ha cercare di emulare, male, l'usb su una mcu che non possiede il necessario hardware, quelli sono solo accrocchi.

PaoloP:
Perchè il linuxino o l'Aria non possono programmare direttamente in ISP se lo fà un Atmega328?

Lo scrivi tu il necessario software per emulare il programmatore hardware ?

A ecco... è un problema di software. Ok. :wink:
No. io non sono in grado di scrivere una cosa del genere. :sweat_smile:

PaoloP:
A ecco... è un problema di software. Ok. :wink:

Per dirla tutta ho cercato se esiste un software per Linux che consente ad un micro come quella di Aria G25, ha molti GPIO disponibili, di emulare un progammatore isp, però non ho trovato nulla, di sicuro è fattibile, però non è una cosa semplice da realizzare e sicuramente richiede molto tempo.
Si fa molto prima a realizzare un semplice programmatore isp standalone, usando un 328 con sopra lo sketch isp, collegato tramite seriale e comandato da avrdude come si fa normalmente con il pc, sicuramente questo lo proporrò come progetto completo da autocostruirsi, è sufficientemente semplice per poter essere montato su una mille fori e, volendo, il pcb si realizza senza problemi monofaccia.

Please ricordatevi che sono un newbie, quindi permettetemi qualche errore..tnx :blush: però sfugge a me qualcosa adesso:

In rete ho visto che se un PC ha la porta seriale sono necessari veramente pochi componenti per "fare" un programmatore (es. http://electronics-diy.com/avr_programmer.php) ... l'hardware serve per simulare la porta COM (se si dispone di una USB) o per (forse mi sbaglio) convertire un segnale da CMOS a TTL (se si dispone di una seriale).

Cosa esattamente dovrebbe fare il "software per emulare il programmatore hardware" ?

Grazie,
Giovanni

stroccia:
In rete ho visto che se un PC ha la porta seriale sono necessari veramente pochi componenti per "fare" un programmatore (es. http://electronics-diy.com/avr_programmer.php) ...

Sei andato a pescare quanto di peggio esiste per programmare un AVR, anche quello è un accrocchio, il programmatore per AVR più semplice possibile, e sicuramente funzionate, richiede una vera porta parallela del pc con relativo software.
Tutti i programmatori hardware per AVR sono realizzati tramite un micro che deve riconoscere una serie di comandi, esistono vari protocolli, inviati dal pc e azionare seconde certe regole vari segnali.
Esistono svariati progetti open source per autocostruirsi un programmatore hardware per AVR, in alternativa è possibile usare un ATmega 328 con sopra l'apposito sketch ISP che emula un programmatore di tipo STK200.

Basta anche un misero Attiny2313 collegato ad una porta USB. In questo modo replichi il programmatore USBtinyISP di Adafruit.
Qui trovi schemi e firmware:
http://www.ladyada.net/make/usbtinyisp/
Non hai che da mettere insieme un piccolo circuitino.

Un altro prodotto facilmente replicabile è l'USBasp che, rispetto all'USBtinyISP può flashare anche chip con più di 64 kB ma che usa un Atmega al posto dell'Attiny:
http://www.fischl.de/usbasp/

Entrambe le soluzioni sono "software", nel senso che internamente al chip è scritto un programma che emula un programmatore hardware. Esso interpreta i comandi ed esegue delle azioni sui chip target, come ad esempio scrivere uno sketch oppure leggere/modificare i fuse ecc..

Grazie Leo,
l'idea mi piace parecchio. Penso che ci lavorerò su, quindi l'idea finale è:

Aria G25 con Web Server che fa da interfaccia con AVRdude il quale, tramite schema USBtinyISP, programma gli AVR.

Costa relativamente poco e si può programmare il micro da qualunque dispositivo, compresi iCoso, iTavoletta...

Quando avrò un po' di tempo me lo metterò giù con Eagle.

PS: qualche volontario in zona Milano disponibile a programmarmi un Attiny2313 ? :smiley:

Grazie a tutti per i consigli.
Stroccia

stroccia:
qualche volontario in zona Milano disponibile a programmarmi un Attiny2313 ? :smiley:

Arduino ISP, IDE con core tiny e guida di Menniti (http://michelemenniti.it/arduino_burn_bootloader.php) e fai molto prima che la millis vada in overflow. :grin:

stroccia:
Grazie Leo,
l'idea mi piace parecchio. Penso che ci lavorerò su

Mi ero dimenticato... entrambi i programmatori sono riconosciuti da avrdude, il software che viene usato per flashare lo sketch sull'Arduino