光模块及其固件升级的方法与流程

文档序号:14571722发布日期:2018-06-01 22:34阅读:3725来源:国知局
光模块及其固件升级的方法与流程

本公开涉及光纤通信技术领域,尤其涉及一种光模块及其固件升级的方法。



背景技术:

随着光纤通信技术的飞速发展,用户对光纤通信中的重要组成部分——光模块的性能和指标的要求也越来越高。

在光模块实际应用于通信系统时,如果需要提升其的性能指标,或者,修复其中的已知缺陷、增加新功能等等,则需要对其进行固件升级,尤其是进行在线固件升级,以此避免将光模块返回光模块生产商,从而大大节省时间成本,提高固件升级效率。

目前,光模块的固件升级过程通常包括:主机向光模块发送固件升级请求,光模块则根据固件升级请求由主机下载固件升级代码,通过运行下载的固件升级代码完成固件代码的更新,并通过重启光模块运行更新后的固件代码,使得光模块中的固件版本由旧版本升级至新版本,从而完成固件升级的过程。

然而,由于现有的光模块固件升级过程中需要重启光模块,将会使得光模块前期运行过程中的运行参数全部丢失,而导致利用该光模块所进行的通信业务被中断,进而导致用户体验差。



技术实现要素:

基于此,本公开的一个目的在于提供一种光模块固件升级的方法,用于解决现有技术中光模块进行固件升级时因光模块重启而导致通信业务被中断的问题。

此外,本公开的另一个目的在于提供一种光模块固件升级的装置,用于解决现有技术中光模块进行固件升级时因光模块重启而导致通信业务被中断的问题。

为了解决上述技术问题,本公开所采用的技术方案为:

一种光模块固件升级的方法,包括:接收固件升级请求;响应所述固件升级请求对所述光模块的运行参数进行备份,并进入存储区中预设的升级程序区运行固件升级代码;跳转至所述存储区中的主程序区运行更新的固件代码,通过所述固件代码的运行加载备份的运行参数,以生成配置参数控制所述光模块的运行。

一种光模块,包括:请求接收模块,用于接收固件升级请求;参数备份模块,用于响应所述固件升级请求对所述光模块的运行参数进行备份,并进入存储区中预设的升级程序区运行固件升级代码;第一固件代码运行模块,用于跳转至所述存储区中的主程序区运行更新的固件代码,通过所述固件代码的运行加载备份的运行参数,以生成配置参数控制所述光模块的运行。

与现有技术相比,本公开具有以下有益效果:

通过由预设的升级程序区直接跳转至主程序区,以运行主程序区中更新的固件代码,实现与光模块重启相同的功能,避免光模块的重新启动;并通过对光模块的运行参数进行备份,以便于在运行主程序区中更新的固件代码时加载备份的运行参数,使得光模块在固件升级前后能够保持相同的运行状态,从而解决了现有技术中光模块进行固件升级时需要重启光模块,而导致光模块前期运行过程中的运行参数全部丢失,造成利用该光模块进行的通信业务被中断的问题,以此避免了通信业务被中断,有效地提升了用户体验。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并于说明书一起用于解释本公开的原理。

图1是根据本公开所涉及的实施环境的示意图;

图2是根据一示例性实施例示出的一种光模块的硬件结构框图;

图3是根据一示例性实施例示出的一种光模块固件升级的方法的流程图;

图4是根据本公开所涉及的光模块中的存储区结构划分的示意图;

图5是根据一示例性实施例示出的另一种光模块固件升级的方法的流程图;

图6是图3对应实施例中进入存储区中预设的升级程序区运行固件升级代码步骤在一个实施例的流程图;

图7是根据一示例性实施例示出的另一种光模块固件升级的方法的流程图;

图8是一应用场景中一种光模块固件升级的方法的具体实现示意图;

图9是根据一示例性实施例示出的一种光模块的框图;

图10是图9对应实施例中请求响应模块在一个实施例的框图;

图11是根据一示例性实施例示出的另一种光模块的框图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述,这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

图1为一种光模块固件升级的方法所涉及的实施环境。该实施环境包括核心交换机110、汇聚交换机120、130、140、服务器151、152、153、以及路由器160。其中,光模块200应用于核心交换机110中,即核心交换机110可视为光模块200对应的主机。

具体地,使用光模块200的核心交换机110通过光纤网络与路由器160通信,进而通过路由器160实现与Internet网络的数据(例如视频、音频、录音、录像等)交互。同时,该数据能够存储至服务器151~153,以供用户使用。

汇聚交换机120、130、140各自分别连接了至少一台PC机(计算机,121、131、141)、至少一部电话(122、132、142)、以及至少一台电视机(123、133、143)等等。

用户通过PC机、电话或者电视机即能够获取到服务器151~153中存储的各种数据,以此享受Internet网络所提供的各种网络服务,例如共享网络中的视频、音频、录音、录像等网络资源。

请参阅图2,图2是根据一示例性实施例示出的一种光模块的硬件结构框图。该硬件结构只是一个适用本公开的示例,不能认为是对本公开的使用范围的任何限制,也不能解释为本公开需要依赖于图2所示出的光模块。

如图2所示,该光模块200包括用于传输光信号的激光收发器210、激光驱动芯片220、微控制单元230、电源240、以及与主机100通信的电信号接口250。

其中,微控制单元230实现对光模块200的逻辑信号监控、激光驱动芯片220的配置、电源240的供电管理、主机100与光模块230的通信控制等功能。

可以理解,图2所示的结构仅为示意,光模块200还可以包括比图2中所示出的更多或更少的组件,或者具有与图2所示出的不同的组件。图2中所示出的各组件可以采用硬件、软件或者二者的组合来实现。

现结合图1至图2,以微控制单元230为单片机为例,对现有的光模块固件升级的过程加以说明如下。

单片机的存储区通常由FLASH(Flash Memory,闪存)区和RAM(Random Access Memory,随机存储器)区组成。其中,FLASH区用于存储代码数据(例如固件代码、固件升级代码)、配置数据(例如初始化参数)等,即使掉电后也不会导致数据丢失。RAM区用于存储固件代码运行时所产生的堆栈数据、变量数据(包括全局变量、局部变量、静态变量)等,掉电后将导致数据丢失。

光模块200的固件升级过程即是更新FLASH区中存储的固件代码,进而通过运行FLASH区中更新的固件代码完成光模块200的固件升级。

具体而言,单片机自带Boot引导功能,当单片机检测到预设的硬件管脚输出低电平信号,同时读取到预设的内部寄存器的数值为全F时,单片机即进入Boot区。

进入Boot区之后,单片机与主机100实现通信的接口(例如I2C接口、MDIO接口等)将接收到由主机发送的固件升级指令,通过该固件升级指令即可实现固件升级代码的下载,并将下载的固件升级代码存储至FLASH区。

固件升级代码下载完毕之后,通过Boot区中存储的引导程序加载FLASH区,以进入FLASH区由指定的内存地址(亦即固件升级代码的存储地址)开始运行固件升级代码,进而通过固件升级代码的运行对FLASH区中存储的固件代码进行更新。当固件代码更新完毕,即将预设的内部寄存器的数值修改为全0,使单片机进入Boot区的条件不成立,进而离开Boot区。

单片机离开Boot区之后即重新启动,单片机重新启动的过程中会对光模块200进行初始化,例如,对光模块200的GPIO(General Purpose Input/Output,通用输入输出)接口进行初始化,对激光驱动芯片220重新配置,对RAM区初始化等。

待光模块200初始化完成之后,单片机重新进入FLASH区,由内存地址0(亦即固件代码的存储地址)开始运行更新的固件代码,并在固件代码运行过程中由FLASH区中读取初始化参数,通过加载该读取到的初始化参数用于固件代码的运行,以生成配置参数控制光模块的运行,以此完成光模块的固件升级。

然而,在光模块200的固件升级过程中,由于单片机重新启动过程中所进行的光模块初始化,将使得光模块前期运行过程中的运行参数全部丢失,而影响到光模块其他单元(例如激光驱动芯片220)的监控功能,进而使得主机100通过该光模块200传输的通信业务被中断,直至光模块200初始化完成,单片机重新进入FLASH区开始运行更新的固件代码,并通过固件代码的运行加载初始化参数,以生成配置参数控制光模块的运行,才能恢复主机100通过光模块200所进行的正常通信。

可以理解,若该光模块200用于主数据通信服务器或者基站,则会造成与其相关的所有网络中断,进而导致大面积用户的通信业务无法正常进行,而导致用户体验差。

因此,为了避免光模块固件升级时通信业务被中断,特提出了一种光模块固件升级的方法,该种光模块固件升级的方法适用于图1所示出的实施环境中的光模块200。

请参阅图3,在一示例性实施例中,该种光模块固件升级的方法可以由光模块200执行,可以包括以下步骤:

步骤310,接收固件升级请求。

如前所述,光模块实际应用于通信系统时,当用户需要提升光模块的性能指标,或者,修复光模块中的已知缺陷、增加光模块的新功能时,将通过主机向光模块发送固件升级请求,以通过该固件升级请求实现对光模块的固件升级。

在主机发出固件升级请求之后,光模块即可通过内部设置的接口接收到该固件升级请求。

进一步地,该内部设置的接口可以是I2C接口、MDIO接口,也可以是其他能够实现与主机通信的低速通信接口。

步骤330,响应固件升级请求对光模块的运行参数进行备份,并进入存储区中预设的升级程序区运行固件升级代码。

为了避免光模块前期运行过程中的运行参数的丢失,在接收到固件升级请求之后,光模块将通过对该固件升级请求进行响应来完成运行参数的备份。换而言之,所有可能造成通信业务被中断的运行参数都将在接收到固件升级请求之后被保存。

其中,运行参数产生于光模块运行过程,即固件代码运行过程中,以此反映光模块的运行状态。例如,该运行参数可以包括:DDMI(DigitalDiagnostic Monitor Information,数字诊断监控信息)、激光驱动芯片监控信息、激光驱动芯片寄存器监控信息、电源控制信息、光模块其余单元中的各种状态信息等等。

运行参数备份在光模块的存储区中,以供固件升级后光模块进行读取。

如图4所示,光模块的存储区包括RAM区,该RAM区包括程序变量区、堆栈数据区和备份数据区。其中,程序变量区用于存储固件代码运行时产生的变量数据,堆栈数据区用于存储固件代码运行时产生的堆栈数据,而运行参数则备份在RAM区中的备份数据区。

进一步地,该备份数据区设置在RAM区中最后一块内存地址块。在保证程序变量区和堆栈数据区具有足够的存储空间的前提下,避免了运行参数与变量数据和堆栈数据互相冲突,而导致运行参数被改写的问题,从而提高了运行参数的备份有效性。

在运行参数进行备份的同时,光模块还将进入存储区中预设的升级程序区运行固件升级代码。

本实施例中,通过在存储区中预先设置一升级程序区,以实现固件升级代码与固件代码的分开存储。即,在光模块接收到主机发送的固件升级代码之后,即可将固件升级代码存储于指定存储空间——升级程序区。

具体而言,如图4所示,光模块的存储区还包括FLASH区,该FLASH区包括主程序区、配置数据区和升级程序区。其中,主程序区用于存储固件代码,升级程序区用于存储固件升级代码,配置数据区则可用于存储光模块初始化过程中生成的初始化参数。

进一步地,升级程序区设置在FLASH区中最后一块内存地址块,在保证主程序区和配置数据区具有足够的存储空间的前提下,避免了固件升级代码与固件代码和配置数据互相冲突,而导致固件升级代码被改写的问题,从而提高了固件升级代码的存储有效性。

举例来说,单片机的FLASH区所占用的存储空间为64K字节,其中,主程序区占用最开始的32K字节,升级程序区占用最后的4K字节,中间的28K字节则隶属于配置数据区,以此保证了单片机中具有充足的存储空间进行固件升级代码的存储。

在完成固件升级代码的存储之后,即可通过进入升级程序区运行其中存储的固件升级代码,使得主程序区中存储的固件代码得到更新。

通过如上所述的设置,在固件升级代码于升级程序区中运行时,主程序区中的固件代码不会运行,使得光模块仍保持在前期主程序区运行时的运行状态,而不会影响通信业务发生中断。

此外,由于设置独立于主程序区的升级程序区,使得运行参数的备份与固件升级代码的运行可以同时进行,以此有效地提高了光模块固件升级的效率。

当然,在其他实施例中,也可以是在运行参数备份完毕之后,再进行固件升级代码的运行,以此有利于保证运行参数的备份完整性。

步骤350,跳转至存储区中的主程序区运行更新的固件代码,通过固件代码的运行加载备份的运行参数,以生成配置参数控制光模块的运行。

在通过运行固件升级代码更新完成主程序区中存储的固件代码之后,光模块将由升级程序区跳转至主程序区,开始运行更新的固件代码。

具体地,由于主程序区的内存地址通常起始于内存地址0(固件代码的存储地址),则通过内存地址的跳转,即使得内存地址由升级程序区中指定的内存地址(固件升级代码的存储地址)直接跳转至主程序区的内存地址0,进而实现与光模块重启相同的功能,即由内存地址0开始依次向后执行代码指令,以此实现更新的固件代码的运行。

进一步地,通过保证光模块不掉电而避免光模块重新初始化,由此也避免了备份数据区中备份的运行参数的丢失,因此,当更新的固件代码运行到参数加载时,光模块将由备份数据区中读取备份的运行参数,用于更新的固件代码的运行。

由于是直接将固件升级前所备份的运行参数作为更新的固件代码运行时所需加载的参数,而不是利用光模块初始化时生成的初始化参数作为更新的固件代码运行时所需加载的参数,以此保证了固件升级前后光模块能够保持相同的运行状态,进而避免了通信业务被中断。

在完成备份的运行参数的加载之后,继续运行更新的固件代码将生成配置参数,进而能够通过该配置参数控制光模块的运行,以此完成光模块的固件升级。

更进一步地,在完成主程序区的跳转之后,光模块还可以判断本次跳转是固件升级后的跳转还是上电复位后的跳转,以此判断是否对光模块进行初始化,进而确保固件升级的准确性。

其中,跳转判断可以通过上电复位标识实现,例如,上电复位标识有效时,表示光模块进行了上电复位,相应地,主程序区的跳转被判定为是上电复位后的跳转。

通过如上所述的过程,实现了光模块固件升级时不重启光模块,避免了重启过程导致通信业务被中断的问题,从而有效地提升了用户体验。

请参阅图5,在一示例性实施例中,步骤330之前,如上所述的方法还可以包括以下步骤:

步骤410,按照预设响应规则判断是否存在未被响应的其他请求。

应当理解,主机向光模块发送的请求不止固件升级请求,还可以是其他请求,例如,更改配置请求。若光模块正在响应其他请求,则有可能无法及时地对固件升级请求进行响应。

基于此,本实施例中,通过预先设置响应规则,来判断是否及时响应接收到的固件升级请求。该预设响应规则可以按照请求的优先级进行,还可以按照接收到请求的时间进行。

举例来说,预设响应规则为按照请求的优先级进行,进而按照请求的优先级判断是否存在未被响应的其他请求。其中,该未被响应的其他请求的优先级高于固件升级请求。

若固件升级请求的优先级最高,则只要接收到固件升级请求,即进入步骤330,对该固件升级请求进行响应。

反之,若存在优先级更高且未被响应的其他请求,则进入步骤430,忽略接收到的固件升级请求,即不响应接收到的固件升级请求,而优先响应未被响应的其他请求。

此时,主机将不断地发送固件升级请求至光模块,直至光模块中不存在未被响应的其他请求时,方可进行光模块的固件升级。

步骤430,响应未被响应的其他请求。

通过如上所述的过程,实现对固件升级请求的合理响应,不仅避免光模块同时响应多种不同的请求而导致处理效率低的问题,有效地提升了光模块的处理效率,而且能够使得固件升级请求得到及时响应。

请参阅图6,在一示例性实施例中,步骤330中进入存储区中预设的升级程序区运行固件升级代码的步骤可以包括以下步骤:

步骤331,进入升级程序区,通过与主机进行固件升级协议的匹配获取固件升级指令。

固件升级功能通常包括一个固件升级协议,用于主机与光模块之间进行固件升级代码的传输。该固件升级协议可以由光模块生产商定义并提供给主机生产商,由主机生产商按照该固件升级协议开发固件升级功能;或者,由主机生产商定义并提供给光模块生产商,按照该固件升级协议定制固件升级功能;再或者,由二者协商固件升级协议,从而共同制定出相关的固件升级功能。

换而言之,该固件升级协议可以是标准的,例如,I2C底层通信协议,也可以是非标准的,由生产商自定义的。只要该固件升级协议能够在主机与光模块之间完成匹配,即可实现固件升级代码的传输。

基于此,在进行固件升级代码的传输之前,将进行固件升级协议的匹配,进而通过匹配获取携带有固件升级代码的固件升级指令。

具体而言,在响应固件升级请求对光模块的运行参数进行备份的同时,光模块还可以向主机发送固件升级协议的相关信息,例如,固件升级协议的版本号,主机通过接收该固件升级协议的版本号进行固件升级协议的匹配。若匹配,则将携带有固件升级代码的固件升级指令返回至光模块,以使光模块根据该固件升级指令完成固件升级代码的下载。

步骤333,由固件升级指令中提取固件升级代码,并存储至升级程序区。

光模块在获取到固件升级指令之后,即可由其中提取得到主机发送至升级程序区的固件升级代码。

进一步地,在得到固件升级代码之后,光模块将对该固件升级代码进行数据验证,以此保证其所下载的固件升级代码的有效性。

举例来说,数据验证可以通过CRC32校验实现,即固件升级代码以数据包的方式进行提取,提取到的每一个数据包中的所有比特位分别进行相与,若相与结果和提取到的最后一个数据包中的所有比特位一致,则表示数据验证成功,固件升级代码下载成功。反之,固件升级代码下载失败,丢弃提取得到的固件升级代码。

在数据验证成功之后,固件升级代码即被存储至升级程序区,以供后续进行固件代码更新时运行固件升级代码。

步骤335,运行升级程序区中存储的固件升级代码。

待固件升级代码存储完毕,即可开始固件升级代码的运行,以此实现对主程序区中存储的固件代码的更新,进而使得光模块的固件版本由旧版本升级至新版本,从而实现光模块的固件升级。请参阅图7,在一示例性实施例中,通过固件代码的运行加载备份的运行参数,以生成配置参数控制光模块的运行的步骤之前,如上所述的方法还可以包括以下步骤:

步骤510,判断存储区中的固件升级标识是否有效。

其中,固件升级标识用于在完成主程序区的跳转之后判断是否对光模块进行初始化,该固件升级标识是根据运行参数的备份进行设置的。

具体地,若光模块通过响应固件升级请求而进行了运行参数的备份,则固件升级标识被设置为有效,反之,则将固件升级标识设置为无效。

进一步地,在判断到固件升级标识有效时,即表示跳转至主程序区是由固件升级驱动的,则进入通过固件代码的运行加载备份的运行参数,以生成配置参数控制光模块的运行的步骤。

进一步地,在加载备份的运行参数的同时,还将修改固件升级标识为无效,以此避免后续与上电复位时所进行的主程序区的跳转产生冲突。

反之,在判断到固件升级标识无效时,即表示跳转至主程序区是由光模块上电复位驱动的,则通过固件代码的运行加载光模块初始化时生成的初始化参数,以生成配置参数控制光模块的运行。

其中,固件升级标识可以通过设置寄存器的数值为1表示有效,也可以设置为数值0表示有效,或者,通过硬件管脚输出高脉冲信号表示有效,也可以是输出低脉冲信号表示有效。

进一步地,如图7所示,在一示例性实施例中,如上所述的方法还可以包括以下步骤:

步骤530,在固件升级标识无效时,通过固件代码的运行加载初始化光模块时产生的初始化参数,以生成配置参数控制光模块的运行。

具体地,光模块的初始化包括对光模块的GPIO接口进行初始化,对其中的激光驱动芯片重新配置,对RAM区初始化等等。

在光模块初始化的过程中,将生成初始化参数,该初始化参数存储于存储区的FLASH区中,以用于后续固件代码的运行。

在完成光模块的初始化之后,即进入主程序区并开始运行主程序区中存储的固件代码。当固件代码运行到参数加载时,光模块将由FLASH区中读取初始化参数,在完成初始化参数的加载之后,继续运行固件代码将生成配置参数,进而能够通过该配置参数控制光模块的运行,从而实现光模块与主机之间的通信,进而使得主机能够通过该光模块进行正常的业务通信。

值得一提的是,由于固件代码运行时所读取的加载参数是光模块初始化时生成的初始化参数,而并非备份的运行参数,因此,光模块的运行状态会发生改变,相应地,主机利用该光模块所进行的通信业务将会被中断。

换而言之,通过固件升级标识的设置,光模块即可知悉参数加载时是进行初始化参数的加载还是进行备份的运行参数的加载,以此判断是否需要保证光模块的运行状态不发生改变,以避免通信业务被中断。

通过如上所述的过程,在实现主程序区的跳转的前提下,避免了固件升级所驱动的跳转和上电复位所驱动的跳转的相互冲突,从而提高了固件升级的准确性。

图8是一应用场景中一种光模块固件升级的方法的具体实现示意图,现结合图8所示的具体应用场景对本公开实施例中光模块固件升级的方法进行描述。

在光模块需要进行固件升级时,主机通过执行步骤601,向光模块发送固件升级请求,使得光模块接收到该固件升级请求,即执行步骤602。

在响应固件升级请求之前,将通过执行步骤603,按照预设响应规则判断是否进行固件升级请求的响应。若为否,则返回步骤602,继续固件升级请求的接收。反之,若为是,则执行步骤604,进行光模块的运行参数的备份。

同时,通过执行步骤605,将固件升级标识设置为有效,以供后续运行主程序区中更新的固件代码时进行光模块初始化的判断。

待运行参数备份完毕,则执行步骤606进入升级程序区,并通过执行步骤607由主机中获取固件升级指令,进而由固件升级指令中提取出固件升级代码进行存储。

在存储于升级程序区中的固件升级代码运行完毕之后,主程序区中的固件代码即更新完毕,则通过执行步骤608跳转至主程序区,开始运行主程序区中更新的固件代码。

根据设置为有效的固件升级标识判断本次跳转为固件升级所驱动的,则通过执行步骤609,读取备份数据区中的运行参数,通过运行主程序区中的固件代码加载该读取到的运行参数,同时将固件升级标识由有效修改为无效。

最后,通过执行步骤610,继续运行固件代码,以生成配置参数控制光模块的运行,以此完成光模块的固件升级。

此外,光模块上电或者重新启动之后,也将进行主程序区的跳转,并根据设置为无效的固件升级标识判断到本次跳转为上电复位所驱动的,则通过固件代码的运行加载光模块初始化时生成的初始化参数,以生成配置参数控制光模块的运行,以此实现光模块与主机之间的通信,进而使得主机能够通过该光模块进行正常的通信业务。

在本公开各实施例中,在光模块的固件升级过程中,不必由主机中插拔光模块,即避免光模块的重新启动,以此保证通信业务不被中断,有效地提升了用户体验,尤其是在光模块应用于骨干级网络服务时,不再发生因光模块的固件升级而导致大面积用户网络中断、通信业务无法正常进行的故障,从而有效地避免了用户潜在的经济损失。

下述为本公开装置实施例,可以用于执行本公开所涉及的光模块固件升级的方法。对于本公开装置实施例中未披露的细节,请参照本公开所涉及的光模块固件升级的方法实施例。

请参阅图9,在一示例性实施例中,一种光模块700包括但不限于:请求接收模块710、请求响应模块730和第一固件代码运行模块750。

其中,请求接收模块710用于光模块接收主机发送的固件升级请求。

请求响应模块730用于响应固件升级请求对光模块的运行参数进行备份,并进入存储区中预设的升级程序区运行固件升级代码。固件升级代码由主机发送至升级程序区。

第一固件代码运行模块750用于跳转至存储区中的主程序区运行更新的固件代码,通过固件代码的运行加载备份的运行参数,以生成配置参数控制光模块的运行。

在一示例性实施例中,光模块700还包括但不限于:请求判断模块。

其中,请求判断模块用于按照预设响应规则判断是否存在未被响应的其他请求。若不存在,则通知请求响应模块。

请参阅图10,在一示例性实施例中,请求响应模块730包括但不限于:升级协议匹配单元731、升级代码存储单元733和升级代码运行单元735。

其中,升级协议匹配单元731用于进入升级程序区,通过与主机进行固件升级协议的匹配获取固件升级指令。

升级代码存储单元733用于由固件升级指令中提取固件升级代码,并存储至升级程序区。

升级代码运行单元735用于运行升级程序区中存储的固件升级代码。

请参阅图11,在一示例性实施例中,光模块700还包括但不限于:升级标识判断模块810。

其中,升级标识判断模块810用于判断存储区中的固件升级标识是否有效。固件升级标识是在根据运行参数的备份进行设置的。

若判断到固件升级标识有效,则通知第一固件代码运行模块750。

进一步地,如图11所示,在一示例性实施例中,光模块700还包括但不限于:第二固件代码运行模块830。

其中,若判断到固件升级标识无效,则通知第二固件代码运行模块830。

第二固件代码运行模块830用于通过固件代码的运行加载初始化光模块时产生的初始化参数,以生成配置参数控制光模块的运行。

需要说明的是,上述实施例所提供的光模块在进行固件升级时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即光模块的内部结构将划分为不同的功能模块,以完成以上描述的全部或者部分功能。

另外,上述实施例所提供的光模块与光模块固件升级的方法实施例属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。

上述内容,仅为本公开的较佳示例性实施例,并非用于限制本公开的实施方案,本领域普通技术人员根据本公开的主要构思和精神,可以十分方便地进行相应的变通或修改,故本公开的保护范围应以权利要求书所要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1