fetchin own firmware

im busy going through the process of desingning an ethernet device( uno + eth sield)that might have to periodicaly be re programmed with new firmware. is there a library that allows me to download a file from the internet and save it to an sd card( the eth shield has an sd card built-in) and then reprogram my atmel with the file from the sd card.the project im working on might need changes from time-to-time, and i would like to make these updates as painless to my users as possible

No, that is not possible.

An Arduino (Arduino as ISP) is able to program an other Arduino board.
If you connect a PC with the USB, you could upload a new sketch with avrdude. You could do that remotely.
The Arduino could contain a interpreter code, with the script on the microSD, but the code for the ethernet shield is very special, and can't be done by interpreted code.

It is possible but difficult, you could write your own bootloader that programmed the chip from the SD, but this would probably not be a job for someone asking this question.

A bootloader just needs to get the data from somewhere, most (all?) current ones get it from the serial port but any data source will work, including an SD card. You could grab the optiboot sources and have a go at modifying that.

This sort of thing is asked quite a lot, maybe someone has written something by now but I've not seen it here.


i do something similar but not with SD card i using tftp on network connected UNOs

i use TFTP, and when the UNO is reset either with the reset button or a WDT reset that can trigger remotely will wait 5 secs for a tftp transfer to start. if a tftp transfer is started then it uploads a new firmware to the device and then reboots and then the new software is running, i can update at least 16 in about 30 secs this way and never have to reconnect the uno to the pc

right now this only works with unos since i havent figured out how to get to work on atmega2560

there is tftp code bootloader in the library somewhere