一种支持断点续传的UV LED固化系统升级方法的研究
2016-03-17朱正伟周谢益宋文浩黄晓竹
朱正伟, 张 南, 钱 露, 周谢益, 宋文浩, 黄晓竹
(常州大学 信息科学与工程学院,江苏 常州 213164)
一种支持断点续传的UV LED固化系统升级方法的研究
朱正伟, 张南, 钱露, 周谢益, 宋文浩, 黄晓竹
(常州大学 信息科学与工程学院,江苏 常州213164)
摘要:针对UV LED固化系统行业存在的调试、升级频繁导致的维护及人员成本突出的问题,提出了一种支持断点续传的UV LED固化系统远程升级方法;利用基于STM32系统的IAP技术配合改良的远程升级程序代替传统J-LINK的调试烧写,节约了调试人员奔赴现场调试的时间和成本;由于远程传输必然有一定的误码率,而利用断点续传技术可以大幅缩减使用GPRS等作为远程传输模块时的流量消耗;考虑到固化系统的安全性,提出利用分包计算CRC和设置备用程序存储区域的方法加强了升级系统的可靠性;实验结果验证了该方法应用于UV LED固化系统远程调试升级的可行性及安全性,并且可以大幅缩减远程通信的流量,这在一定程度上提高了升级系统的安全性。
关键词:断点续传;远程升级;STM32;IAP;UV LED
0引言
近年来,印刷固化工艺正发生颠覆性的变化。UV LED(ultraviolet light emitting diode) 固化技术的出现引起了一场轰动,并开始广泛的应用到各个行业中[1]。市场对固化设备的功能、控制要求是变化多样的。面对这些要求,大部分厂商依靠建立庞大的售后服务网络来完成固化设备的程序调试和升级。这种方法大幅增加了人员、经济、时间等成本。而对于一些旗舰机型,虽配备有远程升级的功能,但其使用的传统IAP升级方式在无线传输过程中不可避免的会产生误码现象,而在升级过程中一旦发生错误就会导致升级中断,再次请求升级的时中还会产生大量的GPRS流量[2]。就目前的GPRS工业流量卡的价格而言,这是一笔很大的经济损失。并且这样的中断也容易造成APP程序区域遭到破坏,大大降低了光固化系统的稳定性,产生更大的损失。针对这样的现状,本文提出了一种支持断点续传的UV LED固化系统升级方法。
该方法以STM32F10ZET6系列单片机作为平台,阐述UV LED固化系统的远程升级程序及其断点续传的优化方案。方案利用多数工业单片机都具有的IAP(在线编程)功能,在Bootloader中置入升级程序[3]。方案不仅解决了大型光固化系统一经售出,维护和程序升级耗时耗力的难题,还引入了断点续传的概念,大幅降低了远程升级过程中GPRS流量的使用。且断点续传的程序方案较传统的升级方案相比,在单片机FLASH区域划出一块备份程序区域,将运行程序与新程序在FLASH中隔离开来,提高了整个升级系统的稳定性。
1远程升级原理
1.1IAP原理
IAP(in application programming),即在线编程,允许用户程序在运行过程中对内部Flash的指定区域进行再次烧写,烧写完成后复位芯片。由Bootloader引导,使新烧写的程序运行[4]。其目的是为了在产品销售后,可通过远程模块对产品的程序进行远程调试或者升级。
1.2一般远程升级方案
程序在单片机中是以二进制文件的形式储存在单片机内部的Flash空间中。单片机上电复位后,从中断向量表起始地址进入Bootloader区,由Bootloader程序控制程序指针跳转到User APP区域。一般的在线编程原理是在用户程序的运行过程中,接收到升级指令,程序指针重新指回Bootloader中IAP程序,控制擦除当前程序所在的Flash区域,将接收到的新的APP数据写入到该Flash区域,完成后程序复位,经Bootloader的引导,使新的APP得以运行[5]。通常情况下,这样的升级过程是没有问题的。但在实践中,这样的升级方法存在两个重要的缺陷:
图2 硬件框图
1)一旦升级过程中出现无法预料的中断,则会导致整个APP区域遭到破坏,使得程序无法正常运行。即使再次升级成功,也会浪费很长的时间。这是工业生产中所不允许的。
2)远程数据传输过程中,会存在不可避免的误码现象。普通的IAP升级方案没有考虑数据传输过程中的误码和传输中断等现象的存在,一旦升级过程中碰到这样的问题,会导致APP区域出现无法预估的错误,这样的错误在工业应用中会导致非常严重的问题。一些经过优化的IAP升级方法会采用一些校验算法,在传输结束会对整个APP程序进行校验。这些经过改良的升级方法虽然可以一定程度上保护系统的稳定,但再次的重复升级会导致大量的GPRS流量的浪费,浪费了时间,也增加了成本。
1.3优化远程升级方案
引入断点续传的概念对升级方案进行优化,可以很好地解决上述一般的远程升级方案的不足。如图1所示,该方法主要是在原有升级方案的基础上重新对片内Flash区域进行划分。除了IAP必备的Bootloader区和UserAPP区,另外划分出升级参数保存区和APP备份区。升级数据是以包的形式存在的,每个经过校验的数据包会在该数据包传输完成后写入APP备份区,而升级过程中的状态及数据包的参数则会实时地保存进升级参数保存区[6]。这样在传输过程中,即使发生意外中断或者传输错误,APP备份区的数据不可能影响到UserAPP区,因此也不可能对程序的正常运行产生影响[7]。而参数保存区中的参数结构体,会保存发生错误前的升级状态及数据包的信息,再次升级时经过简单的校验,就会从继续请求断点发生时的数据包,而不是再请求传输整个数据包。
图1 两种方案Flash规划图
2系统分析
2.1系统总体框架
升级系统由上位机、无线设备及终端设备组成。如图2所示,作为终端设备的UV LED固化设备,主要包含以下4个模块:处理器模块、通讯模块、光源驱动模块以及交互模块。处理器模块使用Cortex-M3架构的STM32F103ZET6芯片。利用基于BootLoader的IAP结合上位机或可选的通信模块来完成UV LED固化系统远程升级。上位机通过RS485总线与无线设备连接,UV LED固化设备中的STM32芯片和无线模块通过RS485总线相连。当需要升级程序时,上位机通过485总线接口给无线模块传输指令,无线设备收到指令后通过无线网络传输给UV LED固化设备的与主控芯片STM32对接的通信模块。STM32芯片接收到来自上位机的升级指令后开始响应上位机的一系列升级指令和程序传输,最终完成程序的升级。
2.2使用STM32F103ZET6芯片的可行性分析
STM32F103ZET6是一款基于 Cortex-M3核心的处理器。拥有512K 片内FLASH及64K片内RAM。其512K的FLASH存储容量可以满足远程升级中建立断点续传所必须的备份储存容量要求,且其片内FLASH 支持在线编程(IAP)。通讯接口方面,STM32F103ZET6拥有SPI、I2S 、I2C、USART、USB OTG、 CAN、SDIO等接口,几乎可以满足所有的远程通信需求,为在线升级提供了丰富的接口选择。就远程升级的可行性而言,常见微处理器中都包含BootLoader。STM32F103ZET6微处理器支持IAP技术的首要前提是,它是基于可重复编程闪存的微处理器。此外STM32微处理器拥有在数量上、种类上都非常丰富的外设通信接口,因此在STM32上实现基于BootLoader的IAP、完成远程升级是完全可行的。
2.3方案流程
该方案流程如图3所示。
图3 流程图
3方案设计
3.1上位机与UV LED固化系统升级交互的设计
升级程序启动后,上位机与终端的交互流程如下:
1)启动上位机,通过UART转GPRS无线模块建立与终端的数据连接;
2)获取终端软件版本号,判断是否需要升级,若需要则启动升级;
3)上位机请求建立升级过程,终端记录升级标志到FLASH的参数保存区,程序跳转到Bootloader;
4)终端执行FLASH擦除程序,擦除升级备份区的文件,并将结果返回给上位机;
5)若擦除成功,终端向上位机请求引导帧,根据参数保存区中保存的上次升级信息,判断本次升级为全新升级,若是则执行6),若需要断点续传,则由上位机根据上次升级信息继续传输数据包;
6)引导帧发送完毕后,开始按序号传输数据帧;每帧数据内都包含本帧的校验信息,若校验失败,重新请求本帧数据,尝试3次后仍错误则退出升级。
7)所有数据帧传输完成后,终端请求文件校验帧,同时终端会对已接受到的文件进行校验,生成校验码,与上位机传输的校验码做匹配,若成功则执行8),失败则放弃本次升级。
8)由上位机控制关闭GPRS连接,终端置升级成功标志到参数保存区,MCU复位;
9)Bootloader判断是否有升级成功的标志,若有则加载新的程序,若无则运行源程序;
10)上位机获取终端程序版本号,若更新正确则判断本次升级成功。
3.2Bootloader的设计
Bootload程序是MCU上电后首先运行的程序,下载时需要在Keil的Options选项中设置IROM1的起始地址为0x08000000。Bootload在完成软硬件初始化后,读出存储在FLASH的参数保存区中的由用户程序标记的升级标志。若标志位为0x50,则说明没有升级需要,执行程序跳转指令,运行用户程序。若标记为0x05,则调用升级程序,引导完成升级后的MCU复位,由Bootloader引导运行新程序。其中,难点在于跳转程序与FLASH的编程。
在完成跳转程序时,有两个注意点:1)在设置好跳转地址之前,需要调用库函数 DisableAllNVIC(),关闭所有的中断,防止在跳转过程中出现中断,导致无法预估的结果;2)在跳转之前,不仅需要设置跳转的地址,还需要根据用户程序的首地址初始化用户程序的堆栈,这里使用库函数__set_MSP(*(__IO uint32_t*) ARR)来实现。
FLASH编程的设计有4个注意点:1)在对FLASH编程之前,需要关闭所有中断,通过调用__disable_irq()函数来实现;2)写入FLASH之前,需要调用库函数FLASH_Unlock()来关闭MCU的FLASH写保护;3)对MCU的FLASH擦除是块擦除,最小擦除单位为2K,因此分区的大小需要是2K的倍数,否则会导致擦除失败,调用的是库函数Flash_SectorErase(); 4)对FLASH写入的最小单位是字,是32位的,不满32位的要补充,调用的库函数是FLASH_ProgramWord()。
3.3断点续传机制
断点续传机制,指的就是从上一次传输中断的节点处继续数据的传输。该机制可以避免在升级中出现意外中断导致的升级终止,大大提高了升级效率,减少了传输时的流量。要完成这一功能,就需要中断系统记录中断节点的位置。因此要求传输方将程序固件分帧传输,并对每帧按序编号。根据分帧按序传输的要求,本方案设计了引导帧和数据帧。引导帧负责告知固件的分帧信息,数据帧除传输数据外,还需要向终端告知当前的数据帧编号以及校验信息。终端在每一帧接受完毕后,都会将当前的数据状态保存进Flash中的参数保存区。升级恢复后,Bootloader引导读出Flash参数保存区的升级标志、配置参数以及上次中断处的数据帧序号,从而保证升级过程的继续完成。
3.3.1引导帧的设计
表1 引导帧成员说明
引导帧主要由帧头、功能号、寄存器地址、文件总帧数、文件大小、校验码、帧尾组成。其中帧头、功能号、寄存器地址、校验码和帧尾为通信帧的固定格式。帧头和帧尾分别是0x5A和0xA5;功能号主要用于区分该帧的读写状态;寄存器地址用作MCU判断当前帧的对应操作;校验码对本帧的所有数据做16位MODELBUS协议的CRC校验,得到2 Bit的十六进制码。文件总帧数是上位机解析升级文件后得到的总数,每帧最多包含1 Kbyte的数据,文件末尾剩余数据(不足1 Kbyte)按1 Kbyte算,不足的byte用0xFF填充。文件大小为文件的总byte数。
3.3.2数据帧的设计
表2 数据帧成员说明
除固定格式的数据外,数据帧主要参数为序号、本帧文件长度、文件数据等。序号为本帧的编号,这个编号在终端接收后会保存到升级状态的结构体中,是实现断点续传的关键;本帧文件长度则是本帧中属于程序数据的大小,一般为1 Kbyte,在文件的末尾不满1 Kbyte的部分指示该帧的有效数据大小;文件数据是升级程序文件的有效二进制数据。
3.4UV LED综合控制系统上位机的设计
Visual Basic提供大量API接口和控件,具有模块化和开发速度快等特点,故采用Visual Basic语言进行上位机编写。上位机具有UV LED固化机监控、自动设置串口、解析分包升级文件、生成CRC校验码、按数据帧格式发送升级文件、读取版本号等功能。当需要升级时,将无线传输设备的RS232接口连接到电脑,上位机会自动识别端口号,打开在线升级程序文件后开始一键升级,先发送引导帧再发送数据帧,发送的状态及下位机的应答都会实时呈现在状态框中。升级成功后,上位机会自动读取一次当前下位机的版本号,以进一步校验升级是否成功。上位机界面如图4所示。
图4 上位机运行图
4实验结果与分析
本系统实现了支持断点续传的系统远程升级的过程。下面根据采用和未采用断点续传机制等两种方式对比进行测试。测试所使用的平台是带有GPRS模块的UV LED系统控制板和装有上位机软件和SIM900 通信模块的PC机(CPU主频为四核2.5 GHz,内存为4 GB,Win7系统)。测试升级文件类型为.bin,大小为33 832Byte,测试次数为50次。为了减少测试的误差,本测试设计使用上位机软件计时,按下升级按钮开始计时间、流量,PC接收到下位机回送升级成功标志停止计时间、流量;计时停止后,将时间值传送给上位机(使用VB平台制作)保存。整个升级过程均采用软件计时,减少人工计时的误差。
表3 两种方案的测试数据
由表3可以看出,在正常环境下,是否采用断点续传机制,对升级的时间及流量消耗几乎没有影响。但当传输环境越来越恶劣,断点续传机制就会发挥较大的作用。应用最广泛的工业环境下,此时的干扰主要是工业的恶劣电磁环境以及线缆超长而导致的传输问题,在50次的实验中,经常会发生数据误码,在普通的升级机制下,一旦出现错误就重新请求升级,这样虽然防范了数据误码导致的系统严重错误,但是会大大提高升级时间和GPRS流量,且升级包越大,误码越多。
而引入了断点续传机制的升级方案,一旦传输出现错误(或数据校验失败),则会记录当前数据帧的序号并重新请求该帧数据,大大减少了升级的时间及宝贵的流量消耗,并有效减少对FLASH的反复擦写,提高了机器寿命。
选取UV LED固话系统最常应用的工业环境下,50次测试所得到两种方案的流量消耗对比如图5所示。其中采用断点续传机制的流量消耗几乎接近正常环境下的流量消耗,且非常稳定。而未采用断点续传机制的方案,则会由于每次测试出现的误码次数与时间节点的不同,而导致每次升级所消耗的流量有很大的浮动。
图5 两种方案的数据对比图
5结束语
由于固化行业的特殊性,技术人员需要经常根据不同的流水线调试固化设备的程序。本文提出了性能可靠的远程升级方案,不再需要技术人员奔赴各个工业现场进行程序的调试和升级,极大程度上减少了维护成本和调试周期,带来经济和时间的利益。本文通过实际应用证明支持断点续传的UV LED固化系统升级方法经济效益明显且安全可靠,并对类似的工业嵌入式系统的程序升级具有一定的通用的意义。
参考文献:
[1] 孙文博. UV-LED 点光源照射器驱动电源的研究[D]. 成都:电子科技大学, 2012.
[2] 张萌. 基于 ISP/IAP 和 CAN 总线的远程升级系统研制[D]. 青岛:中国海洋大学, 2013.
[3] 姜晓梅, 李祥和, 任朝荣, 等. 基于 ARM 的 IAP 在线及远程升级技术[J]. 计算机应用, 2008, 28(2): 519-521.
[4] 周天兵, 刘国忠. 单片机程序远程升级技术[J]. 仪表技术, 2011, 9: 010.
[5] 唐湘, 孙益强, 秦霆镐. 酒店客房控制系统固件远程升级的设计与实现[J]. 仪表技术, 2015, 1: 012.
[6] 陈艳, 刘宏立, 刘述钢. 一种电力线载波路由远程升级方法[J]. 计算机科学, 2013, 40(10): 87-91.
[7] 常赛. 基于专用物联网的远程更新技术研究与应用[D]. 苏州:苏州大学, 2011.
Research on Method of Upgrade UV LED Curing System Supported Resume Broken Downloads
Zhu Zhengwei,Zhang Nan,Qian Lu,Zhou Xieyi,Song Wenhao,Huang Xiaozhu
(College of Information Science and Engingeering, Changzhou University, Changzhou213164,China)
Abstract:UV LED curing system for the industry, there is troublesome issues, such as: commissioning, upgrade and maintenance and personnel costs frequently lead to propose a support resuming of UV LED curing system upgrade. The use of technology-based STM32 IAP system with improved remote upgrade program to replace traditional J-LINK debug programming, commissioning personnel rushed to save the time and cost of on-site commissioning. Because the remote transmission must have a certain error rate, significantly reduced the use of HTTP to use technology such as GPRS remote transmission module as traffic consumption; take into account the safety of the cured system, proposed the use of subcontractors and set an alternate program to calculate CRC store a regional approach to strengthen the reliability of the system upgrade. Experimental results show the method is applied to UV LED curing system for remote debugging upgrade the feasibility and safety, and that this method can significantly reduce the flow of telecommunications, and to some extent, improve the security upgrade of the system.
Keywords:resume broken downloads; remote upgrade; STM32; IAP; UV LED
文章编号:1671-4598(2016)02-0209-04
DOI:10.16526/j.cnki.11-4762/tp.2016.02.058
中图分类号:TP391; TP309
文献标识码:A
作者简介:朱正伟(1963-),男,博士,教授,主要从事嵌入式方向的研究。
收稿日期:2015-08-17;修回日期:2015-09-23。
基金名称:国家中小企业创新基金项目(09C26223203878)。