1、前言
在线升级(IAP,In Application Programming)即在应用编程,是用户自己的程序在运行过程中对User Flash的部分区域进行擦写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级,免去了装置拆卸等不必要的操作。
随着芯片制造工艺的发展及成本的降低,Flash存储类产品的存储空间在不断扩大,成本也在不断降低。在实际的工业产品中,软件的在线升级作为一项越来越重要的功能,正在被应用到越来越多的产品当中。
2、在线升级功能基本原理
通常实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个完整的程序代码。其在Flash中的存储顺序一般如图所示。
第一个程序即BootLoader部分是IAP程序,它不需要执行正常的功能操作,而只是通过某种特定的通信接口(如USB、USART、NET、SD等)接收程序或数据,通过解密、判断和校验等操作后,对第二个程序代码进行更新升级。
第二个程序才是真正的用户主程序部分。
这两部分代码将会同时烧录在芯片的片上Flash或这片外程序存储器件中,当芯片上电后,首先是BootLoader开始运行,它将在最短的时间内进行如下操作:
1)检查是否需要对第二部分代码进行更新;
2)如果不需要更新则直接转到4);
3)执行在线升级操作;
4)跳转到第二部分用户主程序并开始执行。
3、在配网产品中的应用
众所周知,DTU、FTU等配网产品在售后安装调试过程中,难免会遇到客户需要一些非标准的功能要求,这时候就需要售后服务人员对设备进行现场升级。如果这些装置不具备在线升级的功能,对成百上千台的设备进行现场升级是一件十分令人头疼的事,尤其是一些设备已经投入使用,断电拆卸会造成更严重的损失。
而添加了为DTU、FTU等设备量身定做的在线升级程序后,这些问题就可以迎刃而解,售后服务人员只需要通过特定接口在PC上位机的控制下将新程序传入设备,设备即可自动进行软件升级,极大的降低了相关人员的工作量和可能对用户造成损失的可能性。
基础软件开发部 马龙飞