OTA updates must be done reliably while minimizing the need for planned or unplanned downtime. This means the process for downloading and installing OTA updates has to be made free of foreseeable risk. On the other hand, cost pressure and the need for faster time-to-market require that the OTA capability be implemented simply and quickly, which generally calls for the ability to upgrade an existing design with little or no changes. It is also important to note that OTA has become a general term for firmware updating via either wireless or wired (Internet Protocol) methods.
The way Flash storage is implemented for the OTA function has an impact on its cost, design complexity, and performance. Various approaches have been adopted, each of which offers various advantages and drawbacks. This article explores several such design techniques, and explains how the use of Winbond’s SpiStack® memory provides unique benefits when implementing the OTA function in existing hardware designs.
Using existing Flash provision for OTA
A typical embedded system for IoT consists of a chipset supported by DRAM and an external non-volatile NOR Flash memory for code storage. After initial boot-up, through the process of ‘code shadowing’ the code in the Flash memory is decompressed and uploaded to DRAM for execution by the chipset. OTA functionality can sometimes be added without changing this hardware configuration.
In this system architecture, OTA updates may be performed by stopping normal operation temporarily, downloading and authenticating the new firmware version to the DRAM, and transferring it one sector or block at a time to the NOR Flash through a series of erase and program operations. This is the OTA method commonly applied, for instance, by set-top boxes for system updates in the middle of the night, when it is assumed that the viewer can tolerate a temporary suspension of service as well as a warning not to disconnect the power supply (see Figure 1).