基于ZigBee的MSP430单片机无线升级技术

2016-11-23 00:54李健行郭志伟
化工自动化及仪表 2016年1期
关键词:应用程序仪表单片机

李健行 黎 英 郭志伟

(1.昆明理工大学信息工程与自动化学院,昆明 650504;2.北京安控科技股份有限公司,北京 100095)

基于ZigBee的MSP430单片机无线升级技术

李健行1黎 英1郭志伟2

(1.昆明理工大学信息工程与自动化学院,昆明 650504;2.北京安控科技股份有限公司,北京 100095)

为了弥补油气田仪表程序传统更新方式的不足,提高更新效率,从安全、稳定及异常处理等方面考虑,通过ZigBee模块的通信功能和MSP430单片机的Flash存储机制,设计实现了对MSP430系列单片机程序的无线下载技术。现场应用验证了该技术的可靠性、高效性和普适性。

MSP430单片机 ZigBee 程序无线升级 网络安全

我国石油开采设备数量多、分布广、地处偏远、环境特殊,传统的相对落后的监测手段需要投入大量的人力、物力和财力来维护生产设备的正常运转[1]。为此,大量基于ZigBee技术的无线仪表已经被运用到油气田设备上,由于每个井场都有大量的仪表设备,并且用户需求的变化也需要对仪表程序进行适当更新。而现场仪表往往装配在不易手工连线之处,传统的程序更新方式是通过预留在单片机上的JTAG接口或BSL接口通过有线方式进行升级,但这两种升级方式都必须要拆卸仪表,同时由于仪表对防水性要求很高而且电路板接线复杂,接线拆线过程中可能会引起一些意想不到的问题,不但会严重影响工作效率,而且会缩减仪表的使用寿命。

为了弥补油气田仪表程序传统更新方式的不足,提高更新效率,从安全、稳定及异常处理等方面考虑,通过ZigBee模块的通信功能和MSP430的Flash存储机制,设计实现了对MSP430系列单片机程序的无线下载技术。基于ZigBee标准的无线仪表之间没有物理连线,并且每个ZigBee模块都有自己的通道号和PID号,将手操器和仪表配置到同一网络中,利用手操器向仪表发送要更新的程序,可靠又快捷地完成程序的下载。

MSP430系列单片机的Flash存储器模块是一个可独立操作的物理存储单元。全部模块安排在同一个线性地址空间中,存储器被分为多个512Byte的段和两个64Byte或128Byte的信息段。各段可单独擦除,并且在正常工作电压下程序可对Flash进行擦写操作。

基于ZigBee的MSP430单片机无线升级技术就是在Flash主存中定义一段用于升级应用程序的代码,再结合USART模块就可以方便地检测Flash存储单元的内容或更改Flash程序代码,只需配合PC机的串口调试软件即可实现,因此特别适合现场仪表的无线升级。

基于ZigBee的无线下载主要是利用现有的RS-485串口方式通过自编通信软件对无线仪表进行远程升级,其实现机制就是在目标芯片中放置两段代码:一段为应用程序,一段为监控程序。两者的地址段不能重叠,然后利用串行通信接口通过ZigBee模块与仪表进行通信,这样就可以利用监控程序擦除应用程序并写入新的代码,并且保证监控程序不会被擦除。

2 应用程序升级通信路径和ZigBee的传输安全

PC机通过串口与ZigBee通信,仪表端的MSP430单片机也通过串口与ZigBee通信,将PC端的ZigBee与仪表端的ZigBee配置在同一个网络后,两端就能进行数据传输,从而进行程序的下载和对仪表的控制。程序升级通信路径如图1所示。

图1 程序升级的通信路径

ZigBee是一种短距离双向无线通信技术,其协议依据802.15.4标准,通过无线电波以接力方式将数据从一个传感器传送到另一个传感器,使数千个微小传感器间实现相互协调的通信[2],由于其复杂度低、功耗低、网络容量大、可靠性高且成本低,特别适用于油气田现场仪表与RTU之间的通信。

ZigBee协议栈提供的安全服务有数据加密、完整性校验及鉴权等功能。ZigBee安全机制采用了AES加密算法,其使用128位密钥对称加密机制,还设置有计数器,并且对信息数据进行完整性检测,防止对通信网络的反复攻击和篡改信息数据。如图2所示,ZigBee的MAC层、NWK层和应用层都提供了安全服务机制,所以采用ZigBee进行数据传输能够有效地提高传输数据的正确性[3]。

图2 ZigBee安全体系结构

除了ZigBee自身具有的可靠的发送接收握手机制和重传机制外,笔者还通过程序手段加强了传输的可靠性和稳定性,通信双方发送的每个数据包都必须等待接收方的确认信息,并进行信息回复,才可以正常通信,当发送方收不到接收方的确认时,则再次重发;若重发5次仍无应答,则仪表的通信效率下降,如果通信效率降为零,则仪表进入深度休眠状态,待发送方发送数据后方可唤醒。

3 升级方案

3.1上位机通信的实现机制

PC端的仪表远程下载软件以9 600bit/s与MSP430单片机通过配置为同一通道号和PID的ZigBee模块进行通信。下载软件每次传输128Byte,每次发送完延时1ms再进行下一次传输,一直到传输结束。

将要升级的应用程序进行编译连接,并生成TXT文件,打开上位机软件,当上位机与仪表建立通信后,选择要升级的TXT的应用程序,点击下载,待下载完成并且校验成功后,点击退出即完成本次升级。具体流程如图3所示。

图3 上位机传输程序流程

3.2下位机实现机制

3.2.1应用程序写入Flash的过程

监控程序在仪表复位后开始工作,程序首先要关闭看门狗等中断模块,配置Flash的操作时钟,然后设置USART的波特率为9 600bit/s,7位数据位、一个停止位、一个奇偶校验位,然后配置ZigBee模块,最后等待上位机的命令并作出响应,具体流程如图4所示。

图4 下位机接收程序流程

程序升级完成后检测应用程序的复位向量,如果复位向量为空,说明应用程序不存在,则监控程序返回到自身的主循环程序;如果复位向量存在,则通过跳转指令将PC值转移到相应的应用程序复位向量,执行应用程序。具体的汇编指令如下:

asm("mov &0xEFFE,PC");

3.2.2.xcl文件解析

通过IAR编译器生成的TXT文件中的代码的存放地址、复位向量和中断向量都可以通过配置该文件修改,.xcl文件存放在目录的IAR SystemsEmbedded Workbench 6.4 Evaluation430config中。笔者使用的配置文件是MSP430F1611.xcl,在编译器的Options→Linker→Config→Linker command file选项中指定所对应单片机型号的.xcl文件。部分内容如下:

// Constant data

//-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=4000-FFDF

-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=4000-EFDF

// Code

//-Z(CODE)CSTART,ISR_CODE,CODE_ID=4000-FFDF

//-P(CODE)CODE=4000-FFDF

-Z(CODE)CSTART,ISR_CODE,CODE_ID=4000-EFDF

-P(CODE)CODE=4000-EFDF

// Interrupt vectors

-Z(CODE)INTVEC=EFE0-EFFF

-Z(CODE)RESET=EFFE-EFFF

上面是应用程序的配置文件,其中代码(Code)和数据常量(Constant data)放在4000~EFDF空间中;中断向量的地址是EFE0~EFFF,其中复位向量的地址是EFFE~EFFF。

3.2.3监控程序和应用程序地址的分配

正常使用时应用程序的代码区间为4000h~FFDFh,中断向量为FFE0~FFFF,但是含有监控程序的Flash分配就不一样了。为了防止监控程序和应用程序的覆盖,需将二者分开存储,即将代码区分为3个部分,除了存放监控程序和应用程序外,还要开辟空间单独存放应用程序的中断向量。地址空间分配如图5所示。

图5 地址空间的分配

从图5中可以看出,监控程序的中断向量(FFE0~FFFF)和复位地址(FFFE~FFFF)是没有改变的,是真实向量,也就是说单片机上电的起始地址和中断向量实质是以监控程序为主的,而应用程序是被调用的。因此应用程序中的复位向量和中断向量都是虚拟的,当单片机接收到中断时,单片机先跳去真正的中断向量中,然后再被转移到用户应用程序虚拟的中断向量地址中。因此需要在监控程序中将除复位中断外的所有中断映射到应用程序中,具体如下:

#pragma vector = DACDMA_VECTOR

__interrupt void int0_irq(void)

{

asm("br &0xEFE0");

}

#pragma vector = PORT2_VECTOR

__interrupt void int1_irq(void)

{

asm("br &0xEFE2");

}

升级程序整个过程中是不允许有中断打扰的,整个升级程序一定要关掉中断。

3.3上位机软件的编写

上位机软件是用Visual 2008开发的,采用MFC对话框编程,通过串口来配置ZigBee模块实现与仪表的通信。上位机软件设计的关键是对TXT格式的应用程序的处理。下面就是一个生成的TXT文件的内容:

@4000

01 00 A7 0A B4 0A BF 0A AD 0A A6 0A 9A 0A A3 0A

9F 0A 87 0A 92 0A 7F 0A 67 0A C7 0A 82 0A AD 0A

BD 0A 8F 0A A0 0A 4E 0A 82 0A 76 0A 8A 0A 90 0A

B0 12 A6 8C 0C 43 0C 63 30 41 F2 C0 40 00 00 00

30 41 82 43 10 11 30 41 30 40 EA 92 30 40 18 94

30 40 0C 94 30 40 60 89 FF 3F

@EFEE

B6 93

q

文件中自动包含了“@”和“q”指令,@后面的字符表示地址,q表示文件结束。@4000表示起始地址,接下来的内容需要一次写入4000开始的地址中;@EFEE表示应用程序的复位程序入口地址。TXT文件的读取采用ifstream流十六进制输出,每帧的总字节为128个,开始时调用计算函数统计@的个数来确定文件结束的标志,然后开始发送,待检测到字符q则发送结束,然后调用校验函数,如果发送正确则退出,否则重新发送[4~10]。

4 结束语

基于ZigBee的MSP430单片机无线升级方案结合了单片机与ZigBee技术,MSP430单片机内通过采用与一般方式不同的程序架构、Flash中的分区存储和无线通信安全性的设计,利用此升级技术,已经实现了在胜利油田仪表程序的无线升级,20KByte的程序代码大概3min就可以更新完毕,并且此方案适用于所有的MSP430系列单片机,整个过程既高效,又节省了大量的人力和财力,具有广泛的应用前景。

[1] 潘峥嵘,腾尚伟,尹晓霈,等.基于GPRS的油田抽油机远程在线监控系统的设计与实现[J].化工自动化及仪表,2008,35(1):75~77.

[2] 刘川来,郭蓝天,秦浩华,等.一种改进的ZigBee无线传感器网络定位算法及应用[J].化工自动化及仪表,2012,39(2):204~208.

[3] 任秀丽,于海斌.基于ZigBee技术的无线传感网的安全分析[J].计算机科学,2006,33(10):111~113.

[4] 陶维青,王付军.基于GPRS网络的MSP430单片机Flash远程更新方法[J].电测与仪表,2007,(7):1389~1390.

[5] 袁璐,宋华.基于ZigBee和IAP的在线升级方案[J].测控技术,2008,(10):79~82.

[6] 姜晓梅,李祥和,任朝荣,等.基于ARM的IAP在线及远程升级技术[J].计算机应用,2008,(2):519~521.

[7] Paolo B,Prashant P,Vince W,et al.Wireless Sensor Networks:a Survey on the State of the Art and the 802.15.4 and ZigBee Standards[J].Computer Communication,2007,30(7):1655~1695.

[8] 潘伟,黄东.基于ZigBee技术的无线传感网络研究[J].计算机技术与发展,2008,18(9):244~247.

[9] 胡静静.实现基于GPRS的无线远程IAP功能[J].单片机与嵌入式系统应用,2005,(6):22~25.

[10] 彭华成,何岭松,许晓晖,等.智能仪表软件远程升级的技术实现[J].机械与电子,2007,(6):61~63.

ZigBee-basedWirelessUpgradeTechnologyforMSP430MCU

LI Jian-hang1, LI Ying1, GUO Zhi-wei2

(1.CollgegofInformationEngineeringandAutomation,KunmingUniversityofScienceandTechnology,Kunming650504,China; 2.BeijingEtrolTechnologiesCo.,Ltd.,Beijing100095,China)

For purpose of remedying the deficiency of traditional upgrade methods for the instrument applied in oil-gas fields and considering the safety, stability and exception handling in the upgrading operation, having ZigBee communication feature and MSP430 MCU’s flash memory storage employed to design and implement wireless downloaded technology for the MSP430 MCUs. The field application proves its reliability and efficiency.

MSP430 MCU, ZigBee, wireless upgrade, network security

TH865

B

1000-3932(2016)01-0076-05

2015-11-03(修改稿)

猜你喜欢
应用程序仪表单片机
◆ 仪表
仪表
基于单片机的SPWM控制逆变器的设计与实现
删除Win10中自带的应用程序
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
谷歌禁止加密货币应用程序
热工仪表自动化安装探讨的认识
奔驰E260车行驶过程中仪表灯熄灭