The method is used for downloading firmware upgrades to a non-volatile
memory (NVM) of a targeted remote programmable embedded field-deployed
device over a communication network. The device is connected to the
network and requires no human intervention at the remote site. The
firmware includes a small upgrade program which performs programming
tasks on the device according to commands received by the server. The
method carried out by the upgrade program allows to upgrade the
application program, the communication protocol stack, a set of mutable
interrupt vector table or itself without the need of additional memory.
It also has a bootstrap function which is responsible for verifying the
integrity of the firmware upon reset of a device before transferring
control to or back to the application program. Upgrades can be either
server-initiated (the firmware provider pushes the new version out to the
field) or device-initiated (the device pulls the latest firmware version
from the server).