Automatic software update from a TFTP server
============================================

Overview
--------

This feature allows to automatically store software updates present on a TFTP
server in NOR Flash. In more detail: a TFTP transfer of a file given in
environment variable 'updatefile' from server 'serverip' is attempted during
boot. The update file should be a FIT file, and can contain one or more
updates. Each update in the update file has an address in NOR Flash where it
should be placed, updates are also protected with a SHA-1 checksum. If the
TFTP transfer is successful, the hash of each update is verified, and if the
verification is positive, the update is stored in Flash.

The auto-update feature is enabled by the CONFIG_UPDATE_TFTP macro:

#define CONFIG_UPDATE_TFTP		1


Note that when enabling auto-update, Flash support must be turned on.  Also,
one must enable FIT and LIBFDT support:

#define CONFIG_FIT		1
#define CONFIG_OF_LIBFDT	1

The auto-update feature uses the following configuration knobs:

- CONFIG_UPDATE_LOAD_ADDR

  Normally, TFTP transfer of the update file is done to the address specified
  in environment variable 'loadaddr'. If this variable is not present, the
  transfer is made to the address given in CONFIG_UPDATE_LOAD_ADDR (0x100000
  by default).

- CONFIG_UPDATE_TFTP_CNT_MAX
  CONFIG_UPDATE_TFTP_MSEC_MAX

  These knobs control the timeouts during initial connection to the TFTP
  server. Since a transfer is attempted during each boot, it is undesirable to
  have a long delay when a TFTP server is not present.
  CONFIG_UPDATE_TFTP_MSEC_MAX specifies the number of milliseconds to wait for
  the server to respond to initial connection, and CONFIG_UPDATE_TFTP_CNT_MAX
  gives the number of such connection retries. CONFIG_UPDATE_TFTP_CNT_MAX must
  be non-negative and is 0 by default, CONFIG_UPDATE_TFTP_MSEC_MAX must be
  positive and is 100 by default.

Since the update file is in FIT format, it is created from an *.its file using
the mkimage tool. dtc tool with support for binary includes, e.g. in version
1.2.0 or later, must also be available on the system where the update file is
to be prepared. Refer to the doc/uImage.FIT/ directory for more details on FIT
images.

This mechanism can be also triggered by the commmand "fitupd".
If an optional, non-zero address is provided as argument, the TFTP transfer
is skipped and the image at this address is used.
The fitupd command is enabled by CONFIG_CMD_FITUPD.


Example .its files
------------------

- doc/uImage.FIT/update_uboot.its

  A simple example that can be used to create an update file for automatically
  replacing U-Boot image on a system.

  Assuming that an U-Boot image u-boot.bin is present in the current working
  directory, and that the address given in the 'load' property in the
  'update_uboot.its' file is where the U-Boot is stored in Flash, the
  following command will create the actual update file 'update_uboot.itb':

  mkimage -f update_uboot.its update_uboot.itb

  Place 'update_uboot.itb' on a TFTP server, for example as
  '/tftpboot/update_uboot.itb', and set the 'updatefile' variable
  appropriately, for example in the U-Boot prompt:

  setenv updatefile /tftpboot/update_uboot.itb
  saveenv

  Now, when the system boots up and the update TFTP server specified in the
  'serverip' environment variable is accessible, the new U-Boot image will be
  automatically stored in Flash.

  NOTE: do make sure that the 'u-boot.bin' image used to create the update
  file is a good, working image. Also make sure that the address in Flash
  where the update will be placed is correct. Making mistake here and
  attempting the auto-update can render the system unusable.

- doc/uImage.FIT/update3.its

  An example containing three updates. It can be used to update Linux kernel,
  ramdisk and FDT blob stored in Flash. The procedure for preparing the update
  file is similar to the example above.
