不打断业务的光模块固件在应用升级方法

文档序号:6375408阅读:246来源:国知局
专利名称:不打断业务的光模块固件在应用升级方法
技术领域
本发明有关一种在应用升级方法,特别是指一种能节约人力成本和运营成本的不打断业务的光模块固件在应用升级方法。
背景技术
作为目前光通信产业中的重要组成部件-光模块其产能越来越大,工艺及控制技术越来越复杂,并且随着业务的多样化,光通信系统商对光模块制造商提出了更高的要求,在此背景下光模块的固件在应用升级技术也被系统厂商格外关注。例如,如果现有光模块中没有使用在线升级技术,系统厂商要对光模块的性能指标做出调整,或是光模块固件发现设计缺陷,通常的做法是光模块厂商召回模块开壳后使用专业的下载工具重新下载固
件,这样做不仅需要消耗大量的人力及运输成本,而且极易造成光模块的损坏。目前相对高端的光模块控制部分大多由基于ARM核的MCU (Micro Control Unit,微控制单元)实现,国内外知名MCU厂商有些也提供了 MCU固件的在应用升级技术(IAP),但是这些在应用升级技术目前就光模块的应用领域来说还存在一些明显不足,其中最大的问题是MCU厂商提供的固件在应用更新方案都无一例外要求在固件升级前或后MCU要进行一次复位操作,这样一来就会使得处于正常通讯中的光模块中断了业务,从而会给运营商造成不可预知的风险。同时,大多数MCU厂商提供的在应用升级技术都使用串口或者网络接口来下载更新固件,这对体积较小的光模块来说也是难以接受的。

发明内容
有鉴于此,本发明的主要目的在于提供一种实现无缝通讯的不打断业务的光模块固件在应用升级方法。为达到上述目的,本发明提供一种不打断业务的光模块固件在应用升级方法,在光模块内部程序存储区划分了两个区域分别用于存放升级程序和应用程序,并划分专门区域备份Boot程序的中断向量表,上位机与光模块之间通讯,中断向量表切换,通过程序指针实现Boot程序和应用程序之间的跳转,所述方法具体包括如下步骤
步骤I、提取固件内容;
步骤2、进入下载模式;
步骤3、擦除原固件;
步骤4、写入新固件;
步骤5、进入应用模式,数据和代码验证通过后,上位机发送退出下载模式命令,退出升级程序转而执行新的应用程序,光模块正常工作。所述步骤I具体包括,系统在正常运行过程中光模块执行的是应用程序,当需要更新模块固件时,上位机发送指令进入下载模式。不管程序处于应用程序或是Boot程序,都有相应的状态指示,上位机读取该指示判断程序所处状态,告知操作人员光模块当前MCU运行的是Boot程序还是应用程序,上位机并可以发送命令在这两个状态间进行自由切换,进入步骤2后,如确定需要进行光模块固件升级,MCU将当前中断向量表切换为Boot程序中断向量表,程序指针跳转指向Boot程序。在所有升级步骤中,部分控制光模块的寄存器及I/O端口的状态保持不变,光模块的发射接收基本功能得以维持,不会对模块的正常工作造成影响。在所述步骤3中,在下载模式下,上位机发出擦除命令,擦除光模块中的指定区域,并延时至擦除结束。在所述步骤4中,上位机发出写入命令,加载新固件代码并写入到光模块指定的存储区内,通过读取写入的数据进行验证,数据和代码验证通过后进入步骤5。所述光模块和上位机通过I2C总线进行指令传输和固件的更新下载以及模式切换,所用的I2C地址和读写方式和光模块通讯协议地址相同。整个过程中,MCU和上位机通过I2C总线进行指令传输和固件的更新下载,应用程序和升级程序的切换由上位机发送指令进行控制,无需复位MCU,部分控制光模块的寄存器及I/O端口的状态保持不变,光模块的发射接收基本功能得以维持,因此不会造成光模块工作中断。


图I为本发明不打断业务的光模块固件在应用升级方法的步骤 图2为本发明中步骤1、2的流程 图3为本发明中步骤3的流程 图4为本发明中步骤4的流程 图5为本发明中步骤5的流程图。
具体实施例方式为便于对本发明的方法有进一步的了解,现结合附图并举较佳实施例详细说明如下。本发明利用MCU存储区的特点,在MCU内部程序存储区划分了两个区域分别用于存放升级程序和应用程序,对于51核的MCU而言是通过划分专门区域备份Boot程序的中断向量表,对ARM核的MCU而言是通过重映像操作,根据需要切换Boot程序的中断向量表和应用程序的中断向量表,通过程序指针实现程序跳转,利用中断向量表的重定位技术,通过外部命令的方式控制MCU在两个程序中进行自由切换,而处于MCU存储区域高端区域的一些控制光模块的寄存器、外设接口、1/0端口等可根据需要改变或不改变其现有状态,从而实现设计思想。通讯系统商或电信运营商若觉得光模块的固件需要升级,只需要使用更新软件下载模块生产厂商提供的新的光模块固件即可。升级程序的实现方法主要是实现上位机与光模块的通讯,中断向量表的切换,以及Boot程序和应用程序之间的跳转。存储空间的分配按照各个程序代码大小在编译器中进行设置。如图I至图5所示,本发明不打断业务的光模块固件在应用升级方法包括如下步骤步骤I、提取固件内容,系统在正常运行过程中MCU执行的是应用程序,当需要更新模块固件时,上位机发送指令查询当前的固件版本,判断是否需要更新固件;
下载命令格式
S,[A2h], [60h], [4Ch], [4Fh], [41h], [44h], P ……命令 I
S, [A2h], [60h], c, v, m, d, P......命令 2
[A2h]是I2C写地址,[60h]是寄存器地址 [4Ch], [4Fh], [41h], [44h]代表命令”LOAD” c的值由WTD根据型号指定,模块比对一致方可下载 V的值由WTD根据型号指定,模块比对一致方可下载 m的值由WTD根据型号指定,模块比对一致方可下载
d的值由WTD根据型号指定,模块比对一致方可下载 S代表I2C起始符,P代表I2C停止符 模式读取命令格式
S,[A2h], [7Fh], P, S,[A3h], [read], P
[A2h]是I2C写地址,[A3h]是I2C读地址,[7Fh]是寄存器地址
[read]是读出的模式值
[read]结果为66h代表下载模式,其它值代表应用模式 S代表I2C起始符,P代表I2C停止符;
步骤2、进入下载模式,当判断需要更新固件后,通过读取模式进行模块型号比对,型号比对通过后,进入下载模式,若型号错误,则退出固件应用升级;进入下载模式后,MCU将当前中断向量表切换为Boot程序中断向量表,程序指针跳转指向Boot程序,此时,MCU的各控制寄存器和IO寄存器保持原状态,不会对模块的正常工作造成影响;
步骤3、擦除原固件,在下载模式下,上位机发出擦除命令,擦除光模块中的指定区域,并延时等待擦除结束;
擦除扇区命令格式
S, [A2h], [E8h],
, [77h], P [A2h]是I2C写地址,[E8h]是扇区擦除命令
代表起始地址5I2B*8 (IOOOh)
[77h]代表结束地址512B*119 (EEOOh所在扇区最大地址为EFFFh)
S代表I2C起始符,P代表I2C停止符;
步骤4、写入新固件,上位机发出写入命令,加载新固件代码并写入到MCU指定的存储区内,通过读取指令读取所写数据与写入数据进行比对,数据和代码验证通过后进入下一步骤;
写入数据格式
S, [A2h], [9Bh], [CDh], [12h], [34h],…,[EFh], P[A2h]是I2C写地址
[9Bh][⑶h]是写入数据的起始地址,定位于81000h+9B⑶h = 8AB⑶h,最大地址格式” [DFh],[FFh] “,对应可用地址范围是SlOOOh 8EFFFh
[12h], [34h],…,[EFh]代表被写入的数据,低地址字节在前,一次最多写入32Bytes
S代表I2C起始符,P代表I2C停止符;
步骤5、进入应用模式,数据和代码验证通过后,上位机发送退出下载模式命令,退出升级程序转而执行新的应用程序,光模块正常工作。退出下载模式命令格式
S, [A2h], [EOh], [Olh], [FFh], P[A2h]是I2C写地址
[EOh] [Olh]是退出下载模式、进入应用 程序命令,对应地址定位于81000h+E001h = 8F001h
[FFh]或其它非O数值代表使能应用程序跳转 S代表I2C起始符,P代表I2C停止符。新应用程序的第一个动作是恢复中断向量表,整个过程中,MCU和上位机通过I2C总线进行指令传输和固件的更新下载,应用程序和升级程序的切换由上位机发送指令进行控制,无需复位MCU,因此不会造成光模块工作中断。上述方法步骤中的MCU即光模块,同时附图中的A、B、C、D、E、F分别表示各步骤之间的衔接。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种不打断业务的光模块固件在应用升级方法,其特征在于,在光模块内部程序存储区划分了两个区域分别用于存放升级程序和应用程序,并划分专门区域备份Boot程序的中断向量表,上位机与光模块之间通讯,中断向量表切换,通过程序指针实现Boot程序和应用程序之间的跳转,所述方法具体包括如下步骤 步骤I、提取固件内容; 步骤2、进入下载模式; 步骤3、擦除原固件; 步骤4、写入新固件; 步骤5、进入应用模式,数据和代码验证通过后,上位机发送退出下载模式命令,退出升级程序转而执行新的应用程序,光模块正常工作。
2.如权利要求I所述的不打断业务的光模块固件在应用升级方法,其特征在于,所述步骤I具体包括,系统在正常运行过程中光模块执行的是应用程序,当需要更新模块固件时,上位机发送指令进入下载模式。
3.如权利要求I所述的不打断业务的光模块固件在应用升级方法,其特征在于,不管程序处于应用程序或是Boot程序,都有相应的状态指示,上位机读取该指示判断程序所处状态,告知操作人员光模块当前MCU运行的是Boot程序还是应用程序,上位机并可以发送命令在这两个状态间进行自由切换,进入步骤2后,如确定需要进行光模块固件升级,MCU将当前中断向量表切换为Boot程序中断向量表,程序指针跳转指向Boot程序。
4.如权利要求3所述的不打断业务的光模块固件在应用升级方法,其特征在于,在所有升级步骤中,部分控制光模块的寄存器及I/O端口的状态保持不变,光模块的发射接收基本功能得以维持,不会对模块的正常工作造成影响。
5.如权利要求I所述的不打断业务的光模块固件在应用升级方法,其特征在于,在所述步骤3中,在下载模式下,上位机发出擦除命令,擦除光模块中的指定区域,并延时,直到擦除完毕。
6.如权利要求I所述的不打断业务的光模块固件在应用升级方法,其特征在于,在所述步骤4中,上位机发出写入命令,加载新固件代码并写入到光模块指定的存储区内,数据和代码验证通过后进入步骤5。
7.如权利要求I所述的不打断业务的光模块固件在应用升级方法,其特征在于,所述光模块和上位机通过I2C总线进行指令传输和固件的更新下载以及模式切换,所用的I2C地址和读写方式和光模块通讯协议地址相同。
全文摘要
本发明公开了一种不打断业务的光模块固件在应用升级方法,在光模块内部程序存储区划分了两个区域分别用于存放升级程序和应用程序,并划分专门区域备份Boot程序的中断向量表,上位机与光模块之间通讯,中断向量表切换,通过程序指针实现Boot程序和应用程序之间的跳转,所述方法具体包括如下步骤1、提取固件内容;2、进入下载模式,更新固件;3、擦除原固件;4、写入新固件;5、进入应用模式,数据和代码验证通过后,上位机发送退出下载模式命令,退出升级程序转而执行新的应用程序,光模块正常工作。本发明应用程序和升级程序的切换由上位机发送指令进行控制,无需复位MCU,因此不会造成光模块工作中断。
文档编号G06F9/445GK102855151SQ20121029840
公开日2013年1月2日 申请日期2012年8月21日 优先权日2012年8月21日
发明者袁涛, 余向红, 陈序光 申请人:武汉电信器件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1