文献标识码:A
文章编号: 0258-7998(2012)11-0139-04
随着电子技术、计算机技术和通信技术的迅猛发展,单片机、DSP等嵌入式系统已广泛应用于工业、军事、通信、及家电等领域。但嵌入式设备在安装部署方面的局限性使得传统的在线升级程序的方法难以实现。而应用可编程IAP(In Application Programming)技术为嵌入式系统无线升级程序提供了良好的解决方案,并受到广泛关注[1-2]。
建立备份数据区的机制[3],采用设计应用程序镜像文件存储区的方法对Flash的布局进行重新设计,实现嵌入式设备远程自动更新,达到更新升级程序的目的。但该方法只能更新比现有程序版本更高的程序,灵活性较差。基于GPRS(General Packet Radio Service)的无线升级方法[4],通过GPRS网络将要升级的程序代码传输下载到目标终端,然后采用IAP技术进行软件的升级,该方法具有GPRS远程、高速传输的特点。但采用GPRS技术需要支付相关费用,并且对系统资源要求较高。基于Zigbee的无线升级方法[5],通过Zigbee无线网络技术进行更新程序代码数据传输,采用IAP技术对嵌入式设备进行程序的在线升级,该方法具有快捷简便、硬件成本低及通信误码率低等优点。然而使用Zigbee协议较为复杂,需要2.4 GHz的载波频率,资源和能量消耗较多。
本文提出了无线升级程序的方法,嵌入式设备载波频率采用ISM频段的433 MHz,通过简单可靠的无线通信协议进行程序代码的传输,终端设备接收到代码数据后,采用IAP技术进行程序的无缝切换。该方法需要的硬件资源较少,协议简单可靠,能够有效减少来自同频电波和障碍物的干扰,装载延时可在人们的容忍限度之内,能量消耗较少。
1 系统无线升级模型与方法
1.1 无线系统升级模型
嵌入式设备的无线升级系统主要由服务器设备、终端设备两部分组成。设备之间通过无线通信技术进行装载程序代码的传输。通过IAP技术进行程序的更新与升级[6,10],由此实现嵌入式设备的无线升级, 程序结构如图1所示。
1.2 无线系统升级方法
在IAP编程模式中,嵌入式设备内部在结构上有两块存储区,一块被称为Boot Loader区;另外一块被称为用户装载程序区。设备上电运行在Boot Loader区,如果满足外部改写程序的条件,则对用户装载程序区的程序进行改写操作,程序指针跳到用户装载程序区完成程序切换。本系统所涉及的关键技术主要包括:无线通信协议、内存映射、用户装载程序代码的生成和中断向量的处理。
(1) 无线通信协议
本系统采用点对点无线通信协议。通信时首先采用基本的请求/应答握手机制来占用通信媒介(类似于IEEE802.11协议[7]中的RTS/CTS机制),可以有效地防止干扰信号和误操作的产生。为了保证传输代码的可靠性和有效性,在通信协议中采用应答机制和错误重传机制。本系统采用的无线通信协议如图2所示,如果终端设备发送装载程序请求帧(REQ),服务器设备接收到请求帧后将提取帧信息发送至应答帧(MACK),应答帧指示终端设备进行接收代码准备,并与服务器设备采用的应答机制和错误重传机制进行程序代码传输。
(2) 内存映射
为了保证系统的可靠运行,需要将单片机Flash内存分为Boot Loader代码区和用户装载程序代码区。Boot Loader代码区用来存放Boot Loader代码,由于单片机结构及软件编程的特点将Boot Loader代码区开辟在0X0000~0X1FFF区域[8-9],用户需要装载的程序存储在0X2000~0X7FFF区域。
(3) 用户装载程序代码的生成
为了使装载程序有效地运行在终端设备,服务器设备中装载程序代码的生成同样需要在code区开辟的0X2000~0X7FFF区域。生成方法即在IAR嵌入式编译环境中,将链表code区的-D_CODE_START=0X0000修改为-D_CODE_START=0x2000。
(4) 中断向量的处理
由于Boot Loader存储区域和用户装载程序在Flash中的code区域不同,如果程序采用中断功能,则会面临中断向量冲突问题。本文采用在 Boot Loader中调用仲裁函数方法进行处理,仲裁函数就是Boot Loader中的中断服务程序。当中断发生在Boot Loader时,则执行Boot Loader中的函数,中断发生在用户装载程序时,则执行跳转指令(LJMP 0X2000+中断向量值),跳转到装载执行程序中相应的位置。
2 无线升级系统的软硬件实现
2.1系统硬件实现
本系统使用两个TI公司提供的具有无线收发功能的CC1110F32单片机[8]作为节点。其中一个作为服务器节点(SN),另一个作为终端节点(EN)。SN负责发送程序代码,EN就是需要装载程序的单片机。硬件系统框图如图3所示。
通过TI提供的SmartRFStudio软件进行发送与接收寄存器的配置,载波频率为433 MHz,无线调制方式为GFSK,数据传输率设置为38.4 kBaud。
2.2 系统软件设计流程
2.2.1服务器节点的流程
服务器节点用于将终端节点请求装载的程序代码发送到终端节点。服务器节点上电运行(或者软件复位)后,首先进行硬件平台初始化,包括CPU及外设的初始化、无线模块的初始化等。然后打开无线接收模块,等待接收终端节点的装载代码请求,接收到请求后将代码分段传输,无线通信采用请求/应答/数据/应答通信机制进行代码的传输。此协议采用错误重发机制保证代码有效可靠地传输。
2.2.2 终端节点的流程
终端节点即进行无线更新升级程序的节点。终端节点上电运行(或者软件复位)后,首先进行硬件平台的初始化,包括CPU及外设的初始化、无线模块的初始化等。如果需要进行无线升级,则首先将系统复位(按下复位按键进行复位),然后执行Boot Loader程序,等待用户按键选择装载程序类型。选定装载程序后,将装载请求发送至服务器节点,然后采用请求/应答/数据/应答通信机制分段接收程序代码,并对接收的每一段代码进行CRC校验,判断接收是否正确,通过向服务器节点发送应答信号来指示该段代码的接收情况。终端节点在无线更新升级程序中的工作流程如图4所示。
3 实例分析及评价
3.1 程序装载时间与装载程序代码长度的关系
为了研究装载时间与装载代码长度以及传输数据包长度的关系,采用5种不同长度的装载程序代码进行测试,对于每种长度的程序分别采用240 B、128字节和64 B的数据包进行传输。为了保证实验数据的可靠性,对于每种长度的程序采用同一数据包长度传输时,分别进行了10次测量,10次测量所用装载的时间几乎没有差别(几毫秒),对10次测量数据取平均值作为此次程序的装载时间。在不同数据包长度传输情况下,装载程序所用时间与装载程序长度的关系如图5所示。
3.2 不同装载代码长度与消耗能量的关系
为了研究装载程序所用功耗与装载代码长度以及传输数据包长度的关系,分别对3种不同长度的程序代码进行装载测试。装载程序长度分别为1 440 B、1 024 B、480 B。本实验采用数据包长度(每帧传输的代码数)分别为240 B、200 B、128 B和64 B。为了保证实验数据的可靠性,对于每种长度的程序采用同一数据包长度传输时,分别进行了10次测量,对10次测量功耗数据取平均值作为此次程序装载的功耗。采用不同程序代码长度进行传输时,装载程序所用功耗与每帧传输字节数的关系如图6所示。
3.3 不同功能程序装载切换实例测试
为了验证系统的可靠性,分别采用LED闪烁程序、按键中断程序和串口通信程序进行装载切换测试,每种功能程序分别进行了50次装载测试,测试结果如表1所示。该系统装载程序的成功率达到99%以上,并且所装载的程序不受功能限制,具有较高的通用性、可靠性。由按键触发装载功能,使用方便灵活,易于操作。
3.4 系统评价
通过对程序装载时间、装载程序长度、以及数据包长度的实验测试可以明显看出,采用同一数据包长度传输数据时,随着装载程序长度的增加,装载延时也将延长,基本呈线性关系。对同一程序采用不同数据包长度时,数据包长度越大,则所耗费的时间越短,装载长度为1 024 B时,若采用的数据包长度为64 B,则装载时间为1 550 ms;而采用数据包长度为240 B时的装载时间为820 ms。当有冲突发生时,采用数据包越长,重传时所用的无效传输数据越多,传输的效率越低。因此用户可以根据需要选择不同的数据包长度进行传输,增加了系统的灵活性。
传输数据的数据包越长,程序装载所需的功耗越低, 程序长度为1 024 B,数据包长度为64 B时,平均功耗为275.8 mW;数据包长度为240 B时,则平均功耗为155.2 mW。装载同一程序时,传输数据的数据包越长,装载时间越短。因此可以得出随着数据包长度的增加,装载程序所消耗的能量越小。对于能量消耗要求严格的嵌入式设备(如手持电池供电设备、无线传感器网络节点等)进行无线更新升级程序时,可以采用较大的数据包来装载程序。
本文设计了一种基于CC1110单片机的无线更新升级程序的应用系统。经测试验证该系统具有较高的可靠性、及时性、灵活性、低功耗等特点,应用方便灵活。对于解决应用中的无线嵌入式设备程序升级是一种比较理想的方法。该方法通用性较强,适用于任何具有无线通信功能含有Flash单片机及嵌入式设备。
参考文献
[1] 黄家升.基于IAP的单片机软件远程升级[J]. 舰船电子对抗,2007,30(3):95-97.
[2] 冉晓蓉, 杨志义, 张凡, 等. 基于CAN总线在线更新机制的设计与实现[J]. 计算机工程与科学, 2008,30(1):
125-128.
[3] 王恒,王颋,王泉,等. 基于Boot Loader的可靠嵌入式软件远程更新机制[J].微计算机信息,2007,23(20):57-59.
[4] 陶维青, 王付军,等.基于GPRS网络的MSP430单片机Flash远程更新方法[J].电测与仪表,2007,44(7):33-36.
[5] 袁璐,宋华. 基于Zigbee和IAP的在线升级方案.测控技术[J]. 2008,27(10):79-84.
[6] 朱飞龙,杨鸣.基于IAP功能单片机的远程更新系统设计[J]. 机电工程,2010,27(9):76-79.
[7] GAST M. 802.11 wireless networks[M]. The definitive guide.O′Reilly Media, 2005.
[8] Texas Instruments. CC1110 Data sheet[EB/OL].[2008-7-11]http://www.ti.com.
[9] TI Application Note AN101.Boot loader for CC2510,CC2511,CC1110 and CC1111SoC (System-on-Chip) Transceivers [EB/OL]. [2011-09-08].http://www.ti.com.
[10] KIM J S, BROAD A. Network reprogramming [R]. University of California at Berkeley, Berkeley,CA,USA, 2003.