我们在开发阶段,调试单片机时更换程序,一般是通过下载器(仿真器),把保存程序的Flash擦除,再重新编程。
那如果到了量产阶段,已经组装好成品了,或者已经到用户手上了,需要再次更新程序时,就没办法通过下载器去更新了。此时考虑通过外围的通信接口(UART/USB/SPI/I2C/CAN等)来实现升级。
为了保证升级的可重复性和安全性,从Flash中划分一小块区域作为升级使用,我们称之为Boot程序,或者Bootloader。这个程序是作用就是管理升级,判断是否需要升级,升级数据包的接收及Flash编程,应用程序的跳转控制,以及升级过程中的异常处理等。