Booting a target through a bootloader is useful in several cases. In a real-life scenario, being able to update the running software on devices in a remote location means that developers are able to fix bugs and introduce new features after the first version of the embedded system has been deployed.
This represents a huge advantage for maintenance when a bug is discovered in the field, or when the software has to be re-engineered to adapt to changes in requirements. Bootloaders may implement automatic remote upgrade and other useful features, such as:
- Loading of the application image from an external storage
- Verification of the integrity of the application image before boot
- Failover mechanisms in case of corrupted application ...