APP下载

物联网设备无线固件升级技术的研究*

2015-07-02楼亮亮金彦亮鲍星合赵康

单片机与嵌入式系统应用 2015年6期
关键词:固件终端设备网关

楼亮亮,金彦亮,鲍星合, 赵康

(1.上海大学 特种光纤与光接入网省部共建重点实验室,上海 200072;2.中国科学院 上海微系统与信息技术研究所)



物联网设备无线固件升级技术的研究*

楼亮亮1,2,金彦亮1,鲍星合2, 赵康2

(1.上海大学 特种光纤与光接入网省部共建重点实验室,上海 200072;2.中国科学院 上海微系统与信息技术研究所)

针对物联网设备升级维护困难的问题,提出了一种基于物联网技术的无线程序更新机制,并通过一个具体的农业物联网监控系统设计方案,分析了该机制的系统结构、实现原理及流程。实际应用测试表明,无线升级机制稳定可靠,大大提高了物联网设备固件更新的效率。

物联网;无线固件升级;远程更新

引 言

随着对系统功能、性能要求的不断提高,或为了消除缺陷,用户常常需要对物联网终端设备软件进行升级[1]。物联网终端软件升级需要对FLASH存储器的数据进行擦除和写入,目前对FLASH存储器的编程主要包括了JTAG、ISP和IAP三种方式[2]:JTAG编程方式主要用于初期系统的实验室开发和调试;ISP方式需提供硬件资源和中止软件运行才能完成升级[3];IAP方式则允许在应用程序正常运行下对FLASH存储器中另一段区域的程序代码进行读/写操作。这3种方式都要人工连接相应的线缆或者设备进行固件升级。

物联网技术的逐步发展,使其在很多领域的应用越来越广泛[4]。而物联网设备在实际使用过程中存在两种问题[5]:一是用户在使用过程中,可能需要改进或增加功能;二是程序本身有缺陷导致无法正常工作。物联网是由很多个终端设备组成,具有分布区域广、设备小巧等特点[6],要解决上述两个问题,实现固件更新的任务费时费力。因此,本文提出一种无线升级固件的方法,通过对固件进行数据分段压缩,减少数据的传输次数和提高无线升级的成功率,进而降低维护成本、提高工作效率。

1 系统构造与实现

一个农业物联网监控系统由多个独立的能够完成一定功能的物联网传感终端和一个用于对整个系统进行升级控制的物联网数据网关设备组成。每个物联网传感终端在出厂的时候都会通过JTAG装载独立的引导程序。该引导程序中嵌入无线通信程序,正常工作情况下每个终端运行用户程序,实现特定的功能并上报数据到数据网关。当需要对某个无线终端进行固件升级时,则通过电脑控制数据网关向特定的物联网传感终端设备发送升级指令,终端设备一旦接收到升级指令即跳转至引导程序,并等待网关设备发送的固件升级数据,一直等待到固件数据升级结束之后再跳回至应用程序[7],系统架构如图1所示。

1.1 引导程序的实现

本文的具体设计方案,采用TI公司低功耗单片机MSP430F5438为主控芯片,其片上主存储区的类型为Flash,在正常工作电压下,程序可对Flash进行擦写操作,因此特别适合程序升级。物联网传感终端系统中将Flash分成3个区域:一个为引导程序区;一个为信息存储区,存储应用程序和引导程序共用的数据,如升级标志信息、CRC校验值、固件大小、版本信息等;最后一个区为应用程序区。Flash分区如图2所示。

图1 无线固件升级架构

图2 单片机Flash分区

主控芯片在上电复位后,首先执行引导程序。引导程序主要工作是重新映射中断向量地址,将除复位中断外的所有中断映射到应用程序中,读取信息区中的数据,判断是需要升级还是跳转至应用区执行应用程序。这两个区域通过特定的指令可以实现相互跳转,并以此实现无线升级。

1.2 数据压缩

在无线固件升级过程中,有两种情况可能导致升级的失败或升级时间较长:(1)由于传输链路不稳定可能导致同一包数据需要多次发送;(2)升级程序数据量大,而传输速率较低,不完整的升级代码或不正确的升级代码都会使系统瘫痪[8]。考虑到整个终端设备的成本,很多远程升级系统会通过引导程序接收升级程序数据[9-11]。如果能够将这些数据进行压缩处理,不仅减小数据的存储空间,降低产品成本,增加产品的竞争力,而且减少了传输的数据包,提高了固件升级技术的可靠性。所以本文通过引入压缩技术,利用PC机对固件数据进行无损压缩,而在引导程序实现对压缩的固件数据解压,并把解压的数据写到用户装载程序区来实现物联网终端设备的固件升级。

由于单片机系统内存有限,在实际应用中需要将原始固件数据分解成单片机内存所能容纳的一个个小文件,进行分块压缩[12]。分块后的固件由于内部数据特征的差异导致了每个分块固件数据压缩率的不同,所以要对压缩后的文件进行结构化处理。具体编排方式是将所有文件按先后顺序编号,建立文件地址索引表,并在分块压缩后的固件中保存压缩前的固件长度、压缩后的固件长度及当前分块固件的序列号,在解压阶段每个分段只需指出所用数据的序列号、数据压缩前后的文件大小,即可通过调用解压程序取得压缩前的数据。本文所涉及的系统选择了以4 KB大小的段进行压缩,基本结构如图3所示。

图3 分段压缩结构

目前数据压缩技术的方法有很多种,但由于单片机系统运行速度不快,内存资源有限,所以传统的数据压缩技术不适合在单片机上运行。为此,本文选用了在单片机上实现起来较为理想、压缩率较高、编译码算法也较为简单的两种无损压缩算法进行评测:MiniLzo与LZSS,并在压缩率、解压时间、所消耗的资源等方面做了一些比较。本文选取了大小为123 072字节的原始固件进行测试,其中整体压缩是该固件没有通过分块进行压缩之后的结果;分块压缩是采用4 KB为单位进行压缩之后的结果;解压程序所占的ROM大小是在编译软件IAR编译出来的结果;解压时间是在PC机上测试的结果,具体数值如表1所列。

表1 LZSS与MiniLzo性能比较

从表1中可以看出,LZSS解压程序比MiniLzo更节省ROM空间,特别适合存储资源比较紧张的单片机;LZSS整体压缩与分块压缩比率也优于MiniLzo。但是两种算法在同一台电脑的解压运算时间相差比较大,LZSS解压需要的时间差不多是MiniLzo的10倍。这将带来两个不利因素:一方面解压的时间延长会导致物联网终端设备功耗的增加;另一方面解压时间过长增强了系统不稳定性。虽然MiniLzo需要更多的ROM空间,但是即使内存资源有限的单片机也完全可以接受,所以无线固件升级方案压缩解压缩算法选用MiniLzo。

1.3 数据完整性校验

进行数据完整性校验是为保证数据的完整性,用一种指定的算法对原始数据计算出一个校验值。CRC已经广泛应用于错误数据的侦测,而生成多项式的选择是CRC算法实现中最重要的部分,所选择的多项式必须有最大的错误检测能力,同时保证总体的碰撞概率最小。多项式最重要的属性是它的长度,也就是最高非零系数的数值,因为它会直接影响计算校验和的长度。

从理论角度讲,CRC不能完全可靠的验证数据完整性,因为CRC多项式是线性结构,很容易通过改变数据方式达到CRC碰撞,假设一串带有CRC校验的代码在传输中,如果连续出现差错,当出错次数达到一定次数时,几乎可以肯定会出现一次碰撞(值不对但CRC结果正确),但随着CRC数据位增加,碰撞几率会显著降低。

根据参考文献[13]中的公式g(x)=p(x)(1+x),可以得出一个CRC多项式与最大错误检测位数:

Bitmax length= 2r-1-1

(1)

式中,r为CRC校验用的监督码。根据式(1)可以得出每种多项式对应的最大不冲突数据字节数,如表2所列。

表2 不同的CRC多项式对应最大不冲突数据字节数

当物联网终端设备接收到一个完整的固件之后,必须进行一次CRC校验,以保证数据的正确性。根据表2所得,为了保证总体的碰撞概率最小,当固件大小大于16 KB的时候,CRC-32成为校验整个新固件数据的首选。

1.4 断点续传功能

在传输过程中,终端升级文件分成段进行传送,可能存在数据丢失、终端丢线、掉电等故障,导致升级文件传送不全。而传输程序文件与传输一般数据参数文件不同,需要强调传输的可靠性和完整性[14-16]。为了防止由于无线网络信号差等造成文件传输中断,而使升级文件全部重新传送的情况发生,本系统设计断点续传的功能。

在单片机引导程序中定义一段变量空间,并用__no_init来修饰该变量空间,禁止系统启动时,该变量空间初始化,并且通过修饰符@定位这段空间到指定的地址上。这些全局变量用来记录当前升级数据包的序列号、长度及其他相关参数数据,保证单片机由于外界干扰导致重启或升级失败的时候,能迅速找到上一个升级包处理成功时所记录下来的参数,并能从上一次升级会话的断点处继续升级。断点续传功能不仅可以节省网络资源,降低系统运行成本,而且可以大大提高无线升级的效率[10]。

2 固件升级流程

在无线固件升级的过程中,PC机通过有线的链路控制网关设备实现物联网终端设备的固件升级,无线终端固件升级流程如图4所示。

图4 终端设备升级流程

主要操作步骤如下:

① 当要升级的终端设备正在运行应用程序,由PC机控制网关设备向该终端设备发送固件升级指令,终端节点响应该升级指令,跳转至引导程序,并等待网关设备特定的数据包。

② 终端节点周期性申请固件数据包,并在一个复位时不会被初始化的变量中记录当前升级状态,如上次断点处、故障原因等,保证终端设备固件升级的断点续传。

③ 终端节点收到网关设备的固件数据包,当接收完一个完整的压缩分段固件后,利用解压缩函数实现对固件的解压缩,并把解压缩后的固件写入指定存储空间。

④ 网关设备发送完终端设备固件之后,再向该终端设备发送当前升级固件的版本信息、校验值。终端设备收到该数据之后,对整个解压后的固件进行校验,如果成功,则更新版本信息到信息段之中。

⑤ 终端设备固件数据校验成功,则向网关设备发送升级成功指令,并跳转到应用程序中运行;否则,发送固件升级失败指令,重新等待升级。

3 测试结果

为了验证远程程序更新机制的有效性和可靠性,选择了与网关设备相距不同距离的物联网终端设备进行固件升级测试,无线通信速率为100 kbps,其中信号强度是网关设备收到终端设备数据包时所反映出来的RSSI数值,相关测试统计数据如表3所列。

从测试结果可以看出,对于网关设备无线信号比较强的终端设备来说,固件升级过程中的数据传输速度较快且很多时候都能一次性完成,固件升级效率非常高。而在无线信号相对比较弱的终端节点,会导致数据丢包,固件数据传输的速度相对较慢,而且传输中断的次数也随无线信号质量变差而增多。断点续传技术的引入,在信号较差的地方,有助于提高固件升级成功的概率。

表3 固件无线升级测试结果

结 语

[1] 贺翔,陈崇森.基于WiFi的车载终端远程软件升级方法[J].单片机与嵌入式系统应用,2014,14(5):22-25.

[2] 杜列波,涂青,罗武胜,等.基于麒麟嵌入式操作系统的车载智能终端软件远程升级的设计与实现[J].国防科技大学学报,2012,34(4):95-98.

[3] 韦文祥,刘晓莉,曾位发.基于ARM和GPRS的嵌入式远程IAP在配变监控终端上的实现[J].电气应用,2006,25(9):88-92.

[4] 任彧,郭太磊.基于ZigBee的LED路灯固件远程在线升级研究[J].机电工程,2012,29(1):120-123.

[5] 田建伟,刘晶,刘潇潇,等.用电信息采集终端远程升级平台设计与实现[J].计算机应用与软件, 2014,31(1).

[6] 朱洪波,杨龙祥,朱琦.物联网技术进展与应用[J].南京邮电大学学报:自然科学版,2011,31(1): 1-9.

[7] 陈良勇,郭兵.CAN 总线分布式嵌入式系统的升级设计[J].单片机与嵌入式系统应用,2012,12(3): 68-69.

[8] 丁鹏飞,法林.STM32F205VB 在远程系统升级中的应用[J].自动化仪表,2013,35(5):80-83.

[9] 李卫红,张凌云,陈天喜,等.基于IAP程序远程更新设计在车载乘客信息显示器中的应用[J].机车电传动,2012(2):79-81.

[10] 尹恒,严华.一种针对嵌入式远程升级安全的存储解决方案[J].计算机应用,2011,31(4):942-944.

[11] 孙钢,朱忠常,景振兴.煤矿安全监控分站远程升级方案[J].工矿自动化,2012(3):58-60.

[12] 沈鸿星,雷红华.LZSS数据压缩技术在单片机系统上的应用研究[J].微计算机应用,2004,25(3):321-324.

[13] Cyclic redundancy check[EB/OL].[2014-12].http://en.wikipedia.org/wiki/Cyclic_redundancy_check.

[14] 陈林,林金朝.一种基于嵌入式系统的远程程序更新机制[J].微计算机信息,2007(26):4-6.

[15] 蒋建春,王正树,冯辉宗,等.基于软件触发的IAP在线升级技术的设计与实现[J].计算机应用,2012,32(6):1721-1723.

[16] 丁鹏飞,法林.STM32F205VB 在远程系统升级中的应用[J].自动化仪表,2013,35(5):80-83.

楼亮亮(硕士研究生),主要研究方向为物联网, 嵌入式系统应用;金彦亮(硕士生导师)、鲍星合(助理研究员)、赵康(副研究员),主要研究方向为无线通信、无线局域网、 ad hoc 网络和无线传感器网络。

蓝牙技术联盟针对物联网推出Bluetooth Developer Studio

蓝牙技术联盟(Bluetooth Special Interest Group,简称SIG)于顶级无线产业盛会——蓝牙世界大会上发布了“Bluetooth Developer Studio”(Beta版本)。“Bluetooth Developer Studio”是一款蓝牙应用开发工具包,革命性地缩减开发者的蓝牙技术学习时间,并显著加速产品开发速度。物联网市场的兴起为消费者带来了众多基于蓝牙无线技术的智能互联设备,包括牙刷、血糖仪、心率监测仪、门锁、灯泡,乃至餐叉。有了“Bluetooth Developer Studio”,无论是新手还是经验丰富的开发者,利用蓝牙技术构建物联网的过程都将变得简单无比。

蓝牙技术联盟开发者项目总监何根飞(Steve Hegenderfer)先生表示:“蓝牙技术联盟在构建工具和开设项目上投入巨大精力,以帮助开发者尽快将产品推向市场并缩减学习时间,Bluetooth Developer Studio就是一项代表作。此类开发工具让开发者、创新者,甚至任何对物联网有想法的人,都能够快速、低成本地将产品理念推向市场。”

“Bluetooth Developer Studio”是一个图形化的、基于通用属性配置文件GATT(Generic Attribute Profile)的应用开发和调试工具,有效缩减多达50%的蓝牙学习时间。开发者能够轻松获取教程和代码实例,迅速着手开发。来自初级用户和资深蓝牙开发者的反馈表明,“Bluetooth Developer Studio”能够将开发时间缩短多达70%,开发者可利用其拖放功能找到所需的蓝牙协议,快速创建自己的项目。工具能够为第三方(蓝牙芯片和模块供应商)解决方案自动生成代码,且针对虚拟和实体设备均能开展测试。

Technology of Wireless Firmware Upgrading Based on IoT Devices

Lou Liangliang1,2,Jin Yanliang1,Bao Xinghe2,Zhao Kang2

(1.Key Laboratory of Specialty Fiber Optics and Optical Access Networks,Shanghai University,Shanghai 200072,China;2.Shanghai Institute of Micro-system and Information Technology,Chinese Academy of Sciences)

Aiming at the problems in remote upgrade of the IoT devices,this paper proposes a wireless reprogram mechanism based on IoT network technology.System structure,theory and implementation flow are analyzed through a specific agricultural monitoring system of IoT.The actual application of the test indicates that the wireless upgrade mechanism is stable and reliable,and greatly improves the efficiency of the IoT device firmware update.

IoT;wireless firmware upgrade;remote upgrade

国家科技重大专项资助,面向南水北调工程安全的传感器网络技术研发(课题编号2014ZX03005001-002);上海市重点学科项目(SKLSFO2012-04)资助。

TN923

A

士然

2014-12-18)

猜你喜欢

固件终端设备网关
视频监视系统新型终端设备接入方案
信号系统网关设备的优化
行车记录仪通信连接方法、行车记录仪及终端设备
基于UEFI固件的攻击验证技术研究*
基于固件的远程身份认证
车站信号系统终端设备整合及解决方案
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
提取ROM固件中的APP
馈线自动化终端设备智能接入的研究