Upgrading Application image in field


We have designed a board using ATMEGA 2560 and gsm/gprs etc; We can use ICSP programmer to program the chip/board, but our problem is -

This box/boards would be distributed in different regions, if I have to upgrade software application - then it is difficult as we have to provide programmer to end user etc.

I want to upgrade using a “USB stick” , so that I send “updated application image” to end user and he simply copies in a USB and places in the board USB connector, then reboot the system - it upgrades.

Question 1) Do you have any other better option to upgrade applications in field, For Bootloader upgrade, I still prefer ICSP programmer and do myself in my office and not by end user.

  1. Does Ardinuo have already a USB library and Application code that can read image from a USB stick and rewrite in flash area, if it fails to write/power off - it should be capable of retaining the OLD image.

  2. is ATMEGA 2560 production ready? I mean stable enough for mass production?


As far as i know no, arduino or better avr, doesn t have any kind of library which could upload the flash from usb, it could be done however....

I think your best option is to use a minimal windows/unix program where the end user choose the hex file (which you will provide) and the program upgrade the arduino

There are already this kind of program but i think many of them work on a cli without a gui so you could use one of them

Yes the mega 2560is ok, there are also newer chips

Do a search for 'arduino upload sketch from sd card'. Never tried it, requires a dedicated bootloader and (obviously) a sd card reader to my knowledge

Thanks Guys for response, we are using SD card, so will try to upgrade application using SD card. Need to check bootloader code and modify for writing into application area