基于SST微控制器的MSAP系统在线升级方案的设计
2013-08-13胡小玉刘国辉
胡小玉,刘国辉
(武汉邮电科学研究院研究生院光纤通信技术和网络国家重点实验室,湖北 武汉 430074)
在MSAP(多业务接入平台)系统中,要对位于基站中的设备进行升级,就必须安排工程人员去现场,这种升级方式浪费了大量的人力和物力,增加了后期的设备维护成本。
单片机(In Application Programming,IAP)技术的出现,有效地简化了应用程序的升级过程,降低了后期维护的成本。本文根据IAP原理,研究并给出了该方案在嵌入式微控制器SST89E516RD2中的详细实现技术和程序流程。该实现技术在SSDX公司的MSAP系统嵌入式程序的修改和升级中得到了应用和验证,具有简单、便捷、可靠、成本低等优点。
1 SST微控制器介绍
SST89E516RD2芯片是基于51内核的8位单片机,它包含1 kbyte的片内RAM和72 kbyte的片内ROM[1]。片内ROM分为2个存储块,主存储块Block 0占用64 kbyte,次存储块Block 1占用8 kbyte。整个内部程序空间被限制为64 kbyte,SFCF[1∶0]用于控制存储块的切换,如图1 所示。
图1 SST89E516RD2片内ROM空间配置图
SST89E516RD2允许驻留于某一个存储块中的IAP程序对另一块存储块进行重编程操作,而绝不允许对同一个存储块中的任意地址进行重编程操作。要实现在线升级的功能,必须用支持在线升级的IAP程序替换原来的ISP程序,用来引导在线升级程序。
2 MSAP升级系统
2.1 MSAP升级系统结构
升级系统主要组成部分是网管中心、传输网络和MSAP设备。传输网络可以是PSTN(公共电话交换网)、互联网等传输网络,用来承载中心机房到设备传输的数据。MSAP系统由网管设备和终端设备构成,网管设备用于接收网管中心发送来的升级程序,终端设备即为要升级程序的对象,升级系统如图2所示。
图2 远程升级系统框图
2.2 单片机与片外Flash的连接方式
SST89E516RD2单片机自带高速异步串行口,支持IAP下的并行操作,所以本系统硬件组成较简单。除单片机之外,只需要扩展1片Flash用来存储升级的程序文件,单片机其他外围电路按照设备功能需求设计,单片机与片外Flash的连接方式如图3所示。片外Flash采用SST25VF080B芯片[2],它的存储空间为1 Mbyte,最小擦除块的容量为4 kbyte。单片机与片外Flash采用SPI总线进行通信,对片外Flash的读写、擦除等操作只需要使用相应的命令字即可,SST25VF080B常用功能表如图4所示。
图3 连接图
图4 SST25VF080B常用功能表
片外Flash首地址00000H~01000H存储升级保护标志。地址01000H~5F000H分配给出厂时的配置和用户最近一次的配置。隔离区用于保证存储文件的独立性。地址60000H~80000H分配给应用程序文件存储区,其中程序文件A存储出厂程序,程序文件B存储接收到的升级程序[3-4]。根据以上分析,将外部Flash做如图5所示的逻辑划分。
图5 SST25VF080B内存分配
2.3 MSAP系统远程升级程序设计
2.3.1 远程升级流程
PC网管软件选择一个子业务卡进行远程升级,通过FTP协议发送升级数据包给网管盘,网管盘将接收到的升级数据包校验OK后存储至ARM的Flash中。网管盘发送复位指令将子业务卡的MCU复位,单片机复位启动后进入IAP引导程序模式,准备进行升级。
2.3.2 单片机IAP程序流程
1)单片机IAP程序主循环处理流程
单片机复位后,从Block 1中运行IAP程序。当单片机运行IAP程序时,先判断保护标志是否有效,如果该标志有效,表示上一次升级过程中遇到故障(断电等异常情况),则单片机自动将程序恢复至出厂程序。否则单片机主程序待机15 s,等待单片机处理串口中断接收到的数据,判断是否有升级任务。如果有升级任务,则将单片机升级标志置为有效,如果该标志有效,则单片机IAP主程序待机15 min,等待在线升级完成。升级完成后,开启看门狗等待单片机复位。单片机IAP程序主循环运行如图6所示。
2)单片机IAP程序中断处理流程
图6 单片机IAP程序流程图
网管盘收到文件传输命令后,发送一帧文件传输开始的指令,将待升级的应用程序包分解成适合本系统私有协议传输的小段,按照文件块序号逐段发送给子业务卡,子业务卡收到数据包,CRC校验无误后将单片机升级标志置为有效,并开始擦除片外Flash文件B部分的块。程序文件传输中,MCU开始接收数据,此时单片机将接收到的程序文件写入片外Flash从文件B部分的块;程序传输结束时,MCU将升级文件的文件名、文件长度和文件CRC16的校验和写入片外Flash从7FFFFH~80000H部分的扇区,共4 kbyte,单片机对接收到的文件整体校验,发送应答帧通知网管盘校验结果。
网管盘收到执行升级命令后,通知子业务卡准备执行升级。单片机会先运行Block 1的IAP程序,校验升级的应用程序文件,如果校验通过,将保护标志置为有效。然后开始擦除单片机片内ROM整个Block 0的块,当SFST寄存器的标志位置位后,表示擦除完成。接着,单片机将片外Flash存储区B中的升级文件读出并写入到单片机片内ROM的Block 0块中,开启看门狗,等待单片机复位,整个升级程序完成。
当开门狗溢出后,单片机复位令升级标志也复位,单片机程序跳转到Block 0起始位置运行。单片机程序正常运行后将保护标志复位。执行程序升级模块如图7所示。
图7 单片机IAP程序中断处理流程
2.3.3 网管盘与子业务卡的通信设计
网管盘与子业务卡之间的SPI通信采用SSDX私有协议,该协议具有一定的纠错机制和异常处理机制。在网管盘ARM与子业务卡MCU通信中采用发送一帧数据,确认一帧数据,收到错帧,请求重发的通信形式[5]。SSDX私有协议设计的SPI通信帧最大帧长不超过500 byte,接收程序可以通过文件块序号n在终端进行文件整理组合,单片机发送应答帧给网管盘通知文件块n接收OK,否则网管盘重传文件块5次,如果5次以内传送失败,则标志此次升级失败。SSDX私有协议数据帧格式如图8所示。
图8 SSDX私有协议帧格式
帧头:表示数据包的开始,固定为0xFE,0xFA 2个字节。
子卡地址:表示子卡在1个MSAP网元中的位置。
命令字:文件传输命令还是执行升级命令。
指令值:命令字的子命令。如果命令字是文件传输命令,则指令值有传输开始、传输中、传输结束3个指令;如果命令字是升级命令,则指令值就是执行在线升级指令。
文件块序号:表示升级程序所分割的报文所处的序号。
文件块内容:程序内容字节。
CRC16校验和:一帧数据的校验和,采用CRC16校验。
2.3.4 单片机IAP主要函数代码
单片机在进行升级过程中,对片内ROM主要进行块擦除和字节编程操作,该操作的程序代码如下所示:
//单片机片内ROM块擦除函数
Void block Erase(void)
{
SFCF|=0x40; //IAP功能使能
SFAH=0x00; //擦除的块为Block 0
SFDT=0x55;
SFCM=0x0D;
SFCF=SFCF& ~0x40;//IAP功能禁止
}
//单片机片内ROM字节编程函数
Void SST_byte_program(unsigned short dataAddr,
unsigned char dataByte)
{
SFCF=SFCF|0x40;//IAP功能使能
SFAH=dataAddr> >8;
SFAL=dataAddr;//装入地址SFDT=dataByte;//填入数据
SFCM=0x0D; //填入字节编程命令
while(SFST&0x40){;}
SFCF=SFCF& ~0x40;//IAP功能禁止
return;
}
单片机对片外Flash的操作主要用到擦除片外Flash块函数和读片外Flash数据函数[6],通过单片机与片外Flash的SPI读指令(spi_SendByte)和写指令(spi_Read-Byte)向SST25VF080B发送相应的命令字,各常用功能命令字如图3所示。它们的程序源代码如下所示:
//擦除以Dst为起始地址大小为64 k的块
void FlashBlock_Erase(unsigned long Dst)
{
spi_SendByte(0xD8);//一次擦除64 k的块
spi_SendByte(((Dst&0xFFFFFF)>>16));
spi_SendByte(((Dst&0xFFFF)>>8));
spi_SendByte(Dst&0xFF);
Wait_Busy();
}
//读取地址Dst的数据
unsigned char FlashRead(unsigned long Dst)
{
spi_SendByte(0x03);//读命令
spi_SendByte(((Dst&0xFFFFFF)>>16));
spi_SendByte(((Dst&0xFFFF)>>8));
spi_SendByte(Dst&0xFF);
return(Spi_ReadByte());//返回值
}
3 测试结果
按照上述的升级系统搭建好测试环境后,将MCU的IAP程序下载到Block 1中,通过PC网管对终端设备进行远程升级。测试结果证明子业务卡的软件版本能够成功地进行更新,如图9所示。在遇到异常情况时,如升级的过程中出现断电故障,子业务卡能自动恢复到出厂程序运行,等待再次响应网管中心下达升级命令,直至升级成功。
图9 升级前后版本对比图(截图)
4 结论
本方案以SST89E516RD2芯片的IAP功能为基础,利用扩展的Flash存储分区,提供了一种MSAP系统远程在线升级的方法,有效地降低了后期设备的维护成本。本方案在SSDX的MSAP系统中已得到广泛应用,在实际应用中得到了用户很高的评价,大大增加了产品的竞争力。
[1]SST89E516RD2[EB/OL].[2012-05-25].http://wenku.baidu.com/view/d542fc0cf12d 2af90242e6ba.html.
[2]SST25VF080B[EB/OL].[2012-05-25].http://wenku.baidu.com/view/e5b7a579168884868762d6aa.html.
[3]赵炯,贾培源,李中山,等.嵌入式设备远程在线升级技术[J].计算机工程,2010,36(12):262-264.
[4]曾浩,吕华,王铭伟.IPTV机顶盒升级方案的设计与实现[J].电视技术,2010,34(5):54-56.
[5]邓中亮,孙静.嵌入式设备在线系统升级的设计与实现[J].计算机工程与设计,2009,30(13):3085-3087.
[6]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:机械工业出版社,2004.