一种光模块固件升级的方法及装置制造方法及图纸

技术编号:13986066 阅读:113 留言:0更新日期:2016-11-13 02:07
本发明专利技术公开了一种光模块固件升级的方法及装置,该方法包括虚拟Bootloader在光模块运行中通过获取BootFlag被置位的通知,然后读取程序签名标识值,若程序签名标识值为第一程序区的签名,则虚拟Bootloader将第二程序区擦除,并将固件升级代码写入擦除之后的第二程序区,跳转至第二程序区,运行第二程序区中的固件代码。通过使用虚拟Bootloader对光模块进行固件升级,实现在光模块固件升级的过程中可以保持通信业务,通过读取程序签名区的标识值,来确定当前正在运行的程序区,可以保证光模块在固件升级中始终能运行正常,避免因通信异常、外界突然断电等因素导致固件升级失败。

【技术实现步骤摘要】

本专利技术实施例涉及光通信
,尤其涉及一种光模块固件升级的方法及装置
技术介绍
光收发一体模块,简称光模块,是用于光通讯领域的设备中的一种标准模块。此模块一般作为光路由器等设备的一种标准配件。近年来,随着用户对带宽的要求越来越高,光纤到户的普及等,光模块市场突飞猛进。随着行业的发展,光模块越来越往智能化方向发展,内部带有一个单片机的光模块越来越多。光模块产品一般都支持系统在线升级功能,这种功能在确保不操作任何硬件器件的前提下,仅通过软件的办法进行光模块的版本更新和BUG修复,极大程度方便通信设备运营商的后台维护和管理,是光模块中非常重要的一个功能。目前传统光模块产品固件升级方法为发送相关命令使光模块复位重启,复位后的光模块直接跳转到单片机内嵌的Bootloader(启动加载)区域,在Bootloader代码中将新的固件代码覆盖原有固件代码,当新固件完全更新完毕后跳转到应用程序区或复位单片机使其跳转到应用程序区。此种方法在升级固件代码中,因涉及单片机的复位和跳转到Bootloader,会丢失光模块的部分状态和控制信息,例如DAC输出电压无法正常保持、GPIO口输出状态无法保持等,这种丢失使光模块无法正常工作,严重的会出现漏光,导致通信业务出现短暂中断。
技术实现思路
本专利技术实施例提供一种光模块固件升级的方法及装置,用以实现无需重启光模块,从而保持光模块通信业务不中断的情况下进行固件升级。本专利技术实施例提供的一种光模块固件升级的方法,包括:虚拟Bootloader在光模块运行中获取BootFlag(启动标识)被置位的通知,BootFlag被置位的通知中包括固件升级代码;虚拟Bootloader读取程序签名标识值;若程序签名标识值为第一程序区的签名,则虚拟Bootloader将第二程序区擦除,并将固件升级代码写入擦除之后的第二程序区,其中,第一程序区存储有当前控制光模块运行的固件代码,第一程序区和第二程序区位于光模块的存储空间内;虚拟Bootloader跳转至第二程序区,运行第二程序区中的固件代码,通过第二程序区中的固件代码控制光模块的运行。相应地,本专利技术实施例还提供了一种光模块固件升级的装置,包括:获取单元,用于在光模块运行中获取启动标识BootFlag被置位的通知,BootFlag被置位的通知中包括固件升级代码;读取单元,用于读取程序签名标识值;处理单元,用于若程序签名标识值为第一程序区的签名,则将第二程序区擦除,并将固件升级代码写入擦除之后的第二程序区,其中,第一程序区存储有当前控制光模块运行的固件代码,第一程序区和第二程序区位于光模块的存储空间内;以及跳转至第二程序区,运行第二程序区中的固件代码,通过第二程序区中的固件代码控制光模块的运行。本专利技术实施例表明,虚拟Bootloader在光模块运行中通过获取BootFlag被置位的通知,然后读取程序签名标识值,若程序签名标识值为第一程序区的签名,则虚拟Bootloader将第二程序区擦除,并将固件升级代码写入擦除之后的第二程序区,跳转至第二程序区,运行第二程序区中的固件代码,通过第二程序区中的固件代码控制光模块的运行。通过使用位于存储空间内的虚拟Bootloader对光模块进行固件升级,可以实现在光模块固件升级的过程中可以保持通信业务,在进行固件代码升级时,通过读取程序签名标识值,来确定当前正在运行的程序区,从而避开该正在运行的程序区,对没有运行的程序区进行固件升级,并在升级之后运行该升级之后的程序区中的固件代码,使得通过新的固件代码控制光模块的运行,在下一次固件升级时对另一个程序区进行升级。可以保证光模块在固件升级中始终能运行正常,避免因通信异常、外界突然断电等因素导致固件升级失败。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例中提供的一种适用于光模块固件升级的系统架构;图2为本专利技术实施例中提供的一种光模块上电的流程示意图;图3为本专利技术实施例中提供的一种光模块的内核Bootloader运行的流程示意图;图4为本专利技术实施例中提供的一种光模块固件升级的方法的流程示意图;图5为本专利技术实施例中提供的一种光模块运行的流程示意图;图6为本专利技术实施例中提供的一种光模块固件升级的流程示意图;图7为本专利技术实施例中提供的一种光模块固件升级的装置的结构示意图。具体实施方式为了使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术作进一步地详细描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。在本专利技术实施例中,图1示出了适用于本专利技术实施例的光模块的架构,该光模块的微处理器中存在内核Bootloader区,以及设置在存储空间的虚拟Bootloader区(B1),程序签名区(B2),第一程序区(AA),第二程序区(BB),第三程序区(CC)。内核Bootloader区中存储有引导程序,该内核Bootloader区需要在光模块复位时通过特殊操作才可以进入,正常上电过程无法进入该内核Bootloader区。虚拟Bootloader区中存储有与内核Bootloader区中相同的引导程序,用于选择需要运行或者升级的程序区,并加载需要运行的程序区或对需要升级的程序区进行升级。程序签名区用于存储程序签名标识值,该程序签名标识值用于标识正在运行的程序区。第一程序区和第二程序区都存储有控制光模块运行的固件代码,第三程序区存储有光模块出厂时默认的控制光模块运行的固件代码,该第三程序区无法被擦写,被设置有写保护。如图2所示,在光模块上电运行的具体步骤包括:步骤201,上电。光模块上电,开始启动。步骤202,判断是否需要进入内核Bootloader,若是,则转入步骤205,若否,则转入步骤203。若是初次光模块上电,此时,存储空间内各个区域为空白,需要进行特殊操作进入内核Bootloader,来运行内核Bootloader中的引导程序。步骤203,进入虚拟Bootloader区域。步骤204,进入虚拟Bootloader流程,运行虚拟Bootloader中的引导程序。步骤205,进入内核Bootloader流程,运行内核Bootloader中的引导程序。当光模块初始化阶段时,需要进入内核Bootloader区,运行内核Bootloader中的引导程序,模块上电后经过特殊操作强行进入内嵌的BootLoader区,因程序区的签名为空,故将虚拟BootLoader区对应的程序和控制光模块运行的程序分别下载至虚拟BootLoader区、第一程序区(AA区)或第二程序区(BB区)、第三程序区(CC块,厂家默认程序),并将程序区签名设置为“AA区的签名或BB区的签名”,最后跳转到AA去或BB区运行正常的应用程序。具体步骤如图3所示:步骤2051,运行内核Bootloader中的引导程序。步骤2052,下载虚拟Bootloader区对应的程序,并将本文档来自技高网...

【技术保护点】
一种光模块固件升级的方法,其特征在于,包括:虚拟Bootloader在光模块运行中获取启动标识BootFlag被置位的通知,所述BootFlag被置位的通知中包括固件升级代码;所述虚拟Bootloader读取程序签名标识值;若所述程序签名标识值为第一程序区的签名,则所述虚拟Bootloader将第二程序区擦除,并将所述固件升级代码写入所述擦除之后的第二程序区,其中,所述第一程序区存储有当前控制光模块运行的固件代码,所述第一程序区和所述第二程序区位于所述光模块的存储空间内;所述虚拟Bootloader跳转至所述第二程序区,运行所述第二程序区中的固件代码,通过所述第二程序区中的固件代码控制光模块的运行。

【技术特征摘要】
1.一种光模块固件升级的方法,其特征在于,包括:虚拟Bootloader在光模块运行中获取启动标识BootFlag被置位的通知,所述BootFlag被置位的通知中包括固件升级代码;所述虚拟Bootloader读取程序签名标识值;若所述程序签名标识值为第一程序区的签名,则所述虚拟Bootloader将第二程序区擦除,并将所述固件升级代码写入所述擦除之后的第二程序区,其中,所述第一程序区存储有当前控制光模块运行的固件代码,所述第一程序区和所述第二程序区位于所述光模块的存储空间内;所述虚拟Bootloader跳转至所述第二程序区,运行所述第二程序区中的固件代码,通过所述第二程序区中的固件代码控制光模块的运行。2.如权利要求1所述的方法,其特征在于,在所述虚拟Bootloader跳转至所述第二程序区之前,还包括:所述虚拟Bootloader将所述程序签名标识值修改为第二程序区的签名。3.如权利要求1所述的方法,其特征在于,所述BootFlag被置位的通知是在所述光模块接收到光模块固件升级指令且将所述BootFlag置位之后获取的。4.如权利要求1至3任一项所述的方法,其特征在于,还包括:所述虚拟Bootloader确定所述光模块开始上电且所述BootFlag未被置位,则所述虚拟Bootloader读取所述程序签名标识值;若所述程序签名标识值为第二程序区的签名,则所述虚拟Bootloader启动所述第二程序区存储的固件代码,以控制所述光模块的运行,所述第二程序区存储有控制所述光模块运行的固件代码,所述程序签名标识值存储于所述光模块的存储空间内的程序签名区。5.如权利要求1至3任一项所述的方法,其特征在于,所述光模块还包括内核Bootloader以及位于所述光模块的存储空间内的虚拟Bootloader区和第三程序区;所述方法还包括:在所述光模块初始化时,所述内核Bootloader分别将虚拟Bootloader区的程序、第一程序区的固件代码、第三程序区的固件代码写入所述虚拟Bootloader区、所述第一程序区、所述第三程序区,并将...

【专利技术属性】
技术研发人员:王文希李刚林青合
申请(专利权)人:青岛海信宽带多媒体技术有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1