浅谈基于IAP的微控制器程序升级原理
1. 概述
随着功率半导体行业的蓬勃发展,针对相关新材料、新封装和新拓扑的应用测试及可靠性测试等测试需求日益增长。飞仕得为此推出了多种测试设备,包括SiC器件动态特性测试设备,SiC器件动态偏压可靠性测试设备,SiC器件产线动静态ATE测试设备以及晶圆测试设备等。
图1 飞仕得功率半导体测试设备
这些设备中,微控制器是设备模块中不可或缺且又十分重要的一部分。因此,微控制器程序的更新和维护也是值得重视的一个环节。
传统的软件更新模式主要依靠ICP(In-Circuit Programming)技术和ISP(In-System Programming) 技术,需要工程师去到现场做机械性的操作,对维护成本和时效性带来不小的压力。
为提升设备维护的便捷性和快捷性,飞仕得使用的IAP(In-Application Programming)技术提供了一种在线升级的高效解决方案,微控制器程序升级全过程只需要通过上位机操作即可,使客户能够自主操作升级。
图2 飞仕得软件图标示意
2. IAP技术原理
IAP技术可以对存储APP程序的Flash区域进行重新烧写,因此可通过预留的通信端口便捷地对嵌入式产品中的APP程序进行在线更新和升级。设备模块出厂时,需使用JTAG仿真器将Bootloader程序写入指定的存储区域,并对该区域启用读写保护,以防在升级过程中误操作导致Bootloader程序被擦除。在设备固件升级时,APP程序跳转至Bootloader程序。Bootloader程序首先将旧版本APP程序备份到指定存储区,然后擦除APP程序存储区。接着,Bootloader通过通信接口接收上位机发送的新版程序数据,并将其写入APP程序所属的Flash区域,从而完成APP程序的更新。
2.1. 存储区分配
为实现IAP程序的在线升级功能,将微控制器的存储区划分为3个部分,即Bootloader存储区、APP(应用程序区)、BAK(备份区),如图3所示。
图3 存储区域划分
2.2. Bootloader程序
Bootloader程序主要实现的功能:
1、根据升级标志判断程序执行在线升级功能或跳转到应用程序;
2、通过通讯接口(CAN、SPI、UART等)接收上位机发送的新版程序数据;
3、备份应用程序并擦除应用程序区,将接收的数据写入应用程序区的Flash;
4、在升级过程中,如出现异常情况(如断电、通信中断、跳转异常等),能够自动恢复备份。
Bootloader程序的流程图,如图4所示。
图4 Bootloader程序的流程图
2.3. APP程序
APP程序在执行常规功能时,也需接收来自上位机的升级指令。收到指令后,APP程序首先写入升级标志和备份标志,然后进行软件复位。微控制器将从Bootloader程序开始运行,此时Bootloader程序进入升级状态。在编写APP程序时需正确设置中断向量表的偏移量,否则可能导致升级失败。
为了确保升级文件的准确性,避免选择错误的升级程序,在应用程序文件末尾添加16个字节数据(包含数据头、模块类型、程序版本号、备用数据和数据尾,见图5)。这些数据供上位机读取和核对升级程序的模块类型和版本信息。
图5 APP常规程序和增加文件信息程序的对比图
2.4. 上位机软件
上位机软件的主要升级流程:
1、选择要升级的模块类型并查询版本号,确保待升级模块通信正常。
2、选择升级文件,上位机会自动读取并校验文件信息中的模块类型和版本信息,若不匹配则会报错。
3、点击开始升级,上位机将升级文件拆分成多帧数据发送给微控制器(若数据发送中出现异常则会重发,最多重发三次),并实时更新升级状态及进度。
IAP升级上位机界面,如图6所示。
图6 IAP升级上位机界面
3. 总结
飞仕得的IAP微控制器升级技术通过引入备份存储机制,确保在升级失败时能够迅速、安全地恢复原始程序状态;通过升级文件信息校验机制,确保升级文件的完整性与准确性;通过数据重发机制,确保每个数据包准确无误地传输到微控制器。
综上所述,显著提升了IAP技术升级的可靠性,该技术为飞仕得智能设备的运维提供了强有力的技术支持与保障。
参考文献
[1] 唐鹏程, 汪旭明, 胡力. 用 IAP 技术在线升级 STM32 单片机固件[J]. 吉首大学学报 (自然科学版), 2019, 40(1): 21.
[2] Xu Q. A Design and implement of IAP based on HTTP[C]//2011 International Conference on Computer Science and Service System (CSSS). IEEE, 2011: 1918-1922.
[3] 马忠梅,徐琰,叶青林.ARM Cortex微控制器教程[M].北京航空航天大学出版社,2010.