CN110609695A - 一种光模块的固件升级方法,系统及光模块 - Google Patents
一种光模块的固件升级方法,系统及光模块 Download PDFInfo
- Publication number
- CN110609695A CN110609695A CN201910877377.8A CN201910877377A CN110609695A CN 110609695 A CN110609695 A CN 110609695A CN 201910877377 A CN201910877377 A CN 201910877377A CN 110609695 A CN110609695 A CN 110609695A
- Authority
- CN
- China
- Prior art keywords
- firmware
- code
- microprocessor
- upgrade
- initialization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000003287 optical effect Effects 0.000 title claims abstract description 108
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000008569 process Effects 0.000 claims abstract description 33
- 238000004891 communication Methods 0.000 claims abstract description 19
- 230000004044 response Effects 0.000 claims description 24
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例示出一种光模块的固件升级方法,系统及光模块,光模块包括微处理器,和与所述微处理器相连接的程序存储区。光模块正常工作时,微处理器运行程序存储区存储的固件代码,所述固件代码包括:初始化代码和非初始化代码。微处理器首先运行初始化代码对光模块进行初始化设置,然后运行非初始化代码。当上位机将全部的固件升级代码写入程序存储区时,上位机发送一升级完成通知至微处理器。微处理器响应于上位机发送的升级完成通知,运行所述升级非初始化代码。可见,本申请实施例示出的技术方案固件升级完成后,微处理器直接运行升级非初始化代码,在此过程中不经过初始化过程,因此,未出现通信业务的中断的情况。
Description
技术领域
本申请实施例涉及光通信技术。更具体地讲,涉及一种光模块的固件升级方法,系统及光模块。
背景技术
光收发一体模块,简称光模块(optical module),是光通讯领域的设备中的一种标准模块,用于光电转换。如图1所示,光模块10由光发射器102、光接收器103、单片机101等组成。其中,光模块10的单片机101控制光发射器102把电信号转换成光信号。光模块10的光接收器103可以接收光纤传输的光信号,并在单片机101的控制下将接收的光信号转换成电信号。
单片机101运行的程序存储在FLASH(闪存)缓存中,该运行的程序分为Bootloader程序(初始化代码)及非初始化代码。其中,Bootloader程序是升级引导程序,在写入FLASH缓存之后不再改变,非初始化代码是光模块10的应用程序。随着光模块10功能的不断完善,非初始化代码需进行版本更新或者漏洞修复,即为非初始化代码需要进行升级。
在光模块运行的过程中,如需对固件进行升级。上位机20利用I2C总线将升级固件程序分块发送至单片机101。当上位机20将全部的升级固件程序发送至单片机101时,单片机101跳转到升级固件程序的Bootloader程序,并运行Bootloader程序。在单片机运行Bootloader程序时,固件停止运行,使得光模块10无法正常工作,导致通信业务出现短暂中断。
发明内容
基于上述技术问题,本申请的目的在于提供一种光模块的固件升级方法,系统及光模块。
本申请实施例第一方面示出一种光模块的固件升级方法,包括:
上电运行第一签名对应的程序存储区存储的固件代码,所述固件代码包括:初始化代码和非初始化代码;
将上位机发送的固件升级代码写入第二签名对应的程序存储区,所述固件升级代码包括所述初始化代码和升级非初始化代码;
响应于上位机发送的升级完成通知,运行所述升级非初始化代码;
所述非初始化代码与所述升级非初始化代码关于固件控制信息具有相同的存储寄存器地址。
本申请实施例第二方面示出一种光模块,包括单片机,所述单片机内设置有微处理器,和与所述微处理器相连接的程序存储区;
所述微处理器被配置为运行第一签名对应的程序存储区存储的固件代码,所述固件代码包括:初始化代码和非初始化代码;
所述微处理器还被配置为将上位机发送的固件升级代码写入第二签名对应的程序存储区,所述固件升级代码包括所述初始化代码和升级非初始化代码;
响应于上位机发送的升级完成通知,所述微处理器还被配置为运行所述升级非初始化代码;
其中,所述非初始化代码与所述升级非初始化代码关于固件控制信息具有相同的存储寄存器地址。
本申请实施例第三方面示出一种光模块固件升级系统,包括:上位机和与所述上位机相连接的光模块,其中,所述光模块包括单片机,所述单片机内设置有微处理器与所述微处理器相连接的程序存储区;
所述上位机被配置为,发送固件升级通知,升级完成通知以及固件升级代码至所述微处理器;
所述微处理器被配置为运行第一签名对应的程序存储区存储的固件代码,所述固件代码包括:初始化代码和非初始化代码;
所述微处理器还被配置为将上位机发送的固件升级代码写入程序存储区,所述固件升级代码包括初始化代码和升级非初始化代码;
响应于上位机发送的升级完成通知,所述微处理器还被配置为运行所述升级非初始化代码;
其中,所述非初始化代码与所述升级非初始化代码关于固件控制信息具有相同的存储寄存器地址。
本申请实施例示出本申请实施例示出一种光模块的固件升级方法,系统及光模块,其中,光模块包括单片机,单片机内设置有微处理器,和与微处理器相连接的程序存储区。光模块正常工作时,运行第一签名对应的程序存储区存储的固件代码,固件代码包括:初始化代码和非初始化代码。微处理器首先运行初始化代码对光模块进行初始化设置,然后运行非初始化代码。在运行非初始化代码的过程中,微处理器根据非初始化代码的固件控制信息的存储寄存器地址,调取RAM区域存储的固件控制信息,从而可以在根据固件控制信息获取用户的设置信息,根据用户的设置运行光模块。在光模块运行的过程中上位机需要对光模块的固件升级。此时,上位机下发固件升级通知。微处理器响应于固件升级通知,将上位机发送的固件升级代码写入第二签名对应的程序存储区,固件升级代码包括初始化代码和升级非初始化代码。当上位机将全部的固件升级代码传输至微处理器时,上位机发送一升级完成通知至微处理器。微处理器响应于上位机发送的升级完成通知,运行升级非初始化代码。在运行升级非初始化代码的过程中,微处理器根据升级非初始化代码的固件控制信息的存储寄存器地址,调取RAM区域存储的固件控制信息,从而可以在根据固件控制信息获取用户的设置信息,根据用户的设置运行光模块。其中,非初始化代码与升级非初始化代码关于固件控制信息具有相同的存储寄存器地址。非初始化代码具有关于固件控制信息的存储寄存器地址(地址1),微处理器基于地址1将接收到的固件控制信息存储在RAM区域的区域1内。在微处理器运行非初始化代码的过程中,微处理器基于地址1,在RAM区域中调取相应的固件控制信息。在光模块的固件升级过程中,微处理器持续将固件控制信息写入区域1。升级非初始化代码关于固件控制信息的存储寄存器地址(地址2),由于地址1与地址2相同,微处理器确定升级非初始化代码的固件控制信息也存储在RAM区域的区域1内。因此,当固件升级结束时,微处理器在执行升级非初始化代码的过程中,可以继续在区域1内调取未执行的固件控制信息,在此过程中未发生控制信息的中断。可见,本申请实施例示出的技术方案固件升级完成后,微处理器直接运行升级非初始化代码,在此过程中不经过初始化过程,因此,未出现通信业务的中断的情况。
进一步的,非初始化代码与升级非初始化代码关于固件控制信息具有相同的存储寄存器地址,在微处理器由非初始化代码跳转至升级非初始化代码的过程中,持续不间断的调用RAM区域内储存的未执行的固件控制信息,再次过程中,并未出现控制信息的中断。可见本申请示出的方案降低了因光模块升级而导致通信业务出现中断的可能性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的一种光模块的结构示意图;
图2为现有技术中光网络系统的一种结构示意图;
图3为本申请实施例示出的光模块固件升级系统的示意图;
图4为本申请实施例示出的光模块固件升级系统的作业流程图;
图5为本申请实施例示出的光模块的结构示意图;
图6为本申请实施例示出的一种光模块的固件升级方法流程图;
图7为本申请实施例示出的一种光模块的固件升级方法流程图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
如图2所示,在光网络系统中,上位机20是控制和监控光模块10工作的设备。上位机20可以通过I2C(Inter-Integrated Circuit)总线控制和监控多个光模块10工作。光模块10是光收发一体模块,用于光电转换。光模块10中包含有光发射器102、光接收器103、单片机101等,单片机的结构如图1所示。
单片机101运行的程序存储在FLASH(闪存)缓存中,该运行的程序分为Bootloader程序(初始化代码)及非初始化代码。在正常情况下,单片机101首先运行初始化代码,通过对初始化代码的运行实现对光模块进行初始化设置。在初始化设置后,单片机101运行非初始化代码。单片机101运行非初始化代码的过程中,上位机20可以将固件控制信息通过I2C总线传输至单片机101中。其中,固件控制信息包含有用户对光模块10的设置信息,例如用户设置关闭光发射器102,光模块10运行在低功耗模式,光模块10的启动密码等。
在光模块运行的过程中,如需对固件进行升级。上位机20利用I2C总线将升级固件程序分块发送至单片机101。当上位机20将全部的升级固件程序发送至单片机101时,单片机101跳转到升级固件程序的Bootloader程序,并运行Bootloader程序。在单片机运行Bootloader程序时,固件停止运行,使得光模块10无法正常工作,导致通信业务出现短暂中断。
为了解决上述问题,在本发明实施例提供了一种光模块固件升级系统,具体的,可以参阅图3。所述系统包括上位机20和光模块10;所述上位机20用于发送固件升级通知,升级完成通知以及固件升级代码至微处理器1011;
光模块10包括单片机101,所述单片机101内设置有微处理器1011,和与所述微处理器1011相连接的程序存储区102。可以将光模块的程序存储区1012划分为两个程序区域两个程序区域分别为:程序区域一1012-1和程序存储区二1012-2,每个程序存储区均配置有标识值,所述标识值用于标识对应存储区存储的固件代码的版本;标识值为第一签名对应的程序存储区1012也称之为第一程序区,所述第一程序区用于存储当前可用最新版本的固件代码。标识值为第二签名对应的程序存储区1012也称之为第二程序区,所述第二程序区用于存储旧版本的固件代码。值得注意的是,在实际应用的过程中,程序区域一1012-1和程序存储区二1012-2与第一程序区和第二程序区之间并无固定的对应关系。程序区域一1012-1为第一程序区还是第二程序区由程序区域一1012-1内存储的固件代码的版本所决定。例如:在一些实施例中程序区域一1012-1存储当前可用最新版本的固件代码,则程序区域一1012-1为第一程序区。在一些实施例中程序区域一1012-1存储的是旧版本的固件代码,则程序区域一1012-1为第二程序区。
所述微处理器1011与所述程序区域一1012-1连接。当所述程序区域一1012-1为第一程序区时,所述微处理器1011用于调取所述程序区域一1012-1内存储的固件代码。当所述程序区域一1012-1为第二程序区时,所述微处理器1011用于擦除所述程序区域一1012-1内存储的固件代码,同时所述微处理器1011还用于将固件升级代码写入程序区域一1012-1;所述微处理器1011还用于调取所述程序区域一1012-1内存储的固件升级代码。
所述微处理器1011与所述程序存储区二1012-2连接。当所述程序存储区二1012-2为第一程序区时,所述微处理器1011用于调取所述程序存储区二1012-2内存储的固件代码。当所述程序存储区二1012-2为第二程序区时,所述微处理器1011用于擦除所述程序存储区二1012-2内存储的固件代码,同时,所述微处理器1011还用于将固件升级代码写入程序存储区二1012-2;所述微处理器1011还用于调取所述程序存储区二1012-2内存储的固件升级代码。
所述微处理器1011与所述RAM区域1013连接,用于调取RAM区域存储固件控制信息,从而可以在根据固件控制信息获取用户的设置信息,进而可以根据用户的设置运行光模块,值得注意的是,固件升级代码的固件控制信息在RAM区域1012存储的地址必须与固件控制信息在RAM区域1012存储的地址相同。
下面对光模块固件升级的系统的作业过程作以详细的说明。光模块固件升级系统的作业流程图可以参阅图4。在光模块启动时,微处理器1011识别两个程序存储区对应的标识值,确定标识值为第一签名的程序存储区为第一程序区,其中,所述第一程序区为存储当前可用最新版本的固件代码的程序存储区。微处理器1011调用存储在第一程序区内的固件代码即第一固件代码,并运行第一固件代码,其中,所述第一固件代码包括初始化代码和非初始化代码。微处理器1011首先运行初始化代码,以对光模块进行初始化设置,在初始化设置结束后,微处理器1011运行非初始化代码。同时,微处理器1011实时的接收到固件控制信息,并将固件控制信息存储至RAM区域1013。微处理器1011在运行非初始化代码的过程中,根据非初始化代码的固件控制信息的存储寄存器地址,从RAM区域1013调取固件控制信息,根据固件控制信息获取用户的设置信息,根据用户的设置运行光模块。
在光模块运10运行的过程中,上位机20需要对光模块10的固件升级,此时,上位机20下发固件升级通知至微处理器1011。微处理器1011响应于固件升级通知,再次识别所述程序存储区对应的标识值;并确定标识值为第二签名的程序存储区第二程序区。微处理器1011将所述第二程序区内存储的固件代码擦除。当第二程序区内存储的固件代码被全部擦除时,微处理器1011发送一反馈信号至上位机。上位机响应于所述反馈信号,发送固件升级代码至微处理器1011。微处理器1011将固件升级代码写入所述擦除之后的第二程序区,其中,固件升级代码包括初始化代码和升级非初始化代码。当上位机20将全部的固件升级代码传输至微处理器时,上位机发送一升级完成通知至微处理器1011。微处理器1011响应于上位机发送的升级完成通知,运行所述升级非初始化代码。微处理器1011程序运行的过程中,根据升级非初始化代码的固件控制信息的存储寄存器地址,继续调取RAM区域存储的固件控制信息,从而可以在根据固件控制信息获取用户的设置信息,根据用户的设置运行光模块。
其中,非初始化代码与升级非初始化代码关于固件控制信息具有相同的存储寄存器地址。非初始化代码具有关于固件控制信息的存储寄存器地址(地址1),微处理器基于地址1将接收到的固件控制信息存储在RAM区域的区域1内。在微处理器运行非初始化代码的过程中,微处理器基于地址1,在RAM区域中调取相应的固件控制信息。在光模块的固件升级过程中,微处理器持续将固件控制信息写入区域1。升级非初始化代码关于固件控制信息的存储寄存器地址(地址2),由于地址1与地址2相同,微处理器确定升级非初始化代码的固件控制信息也存储在RAM区域的区域1内。因此,当固件升级结束时,微处理器在执行升级非初始化代码的过程中,可以继续在区域1内调取未执行的固件控制信息,在此过程中未发生控制信息的中断。可见,本申请实施例示出的技术方案固件升级完成后,微处理器直接运行升级非初始化代码,在此过程中不经过初始化过程,因此,未出现通信业务的中断的情况。
进一步的,非初始化代码与升级非初始化代码关于固件控制信息具有相同的存储寄存器地址,在微处理器由非初始化代码跳转至升级非初始化代码的过程中,持续不间断的调用RAM区域内储存的未执行的固件控制信息,再次过程中,并未出现控制信息的中断。可见本申请示出的方案降低了因光模块升级而导致通信业务出现中断的可能性。
进一步的,本实施例示出的方案可以实现在光模块固件升级的过程中可以保持通信业务,在进行固件代码升级时,通过读取标识值,来确定当前正在运行的程序区,从而避开该正在运行的程序存储区,对没有运行的程序存储区进行固件升级,并在升级之后运行该升级之后的程序存储区中的固件代码,使得通过固件升级代码控制光模块的运行,在下一次固件升级时对另一个程序区进行升级。在此过程中,并未出现通信业务的中断,因此,本申请示出的方案降低了因光模块升级而导致通信业务出现中断的可能性。
下面结合具体实例对于本申请实施例示出系统的作业过程作以详细的说明。
实施例一:
请继续参阅图3,在光模块启动时程序存储区一1012-1存储的固件代码为当前可用最新版本的固件代码,相应的程序存储区一1012-1对应的标识值为第一签名,所述程序存储区二1012-2存储的固件代码为旧版本的固件代码,相应的程序存储区二1012-2对应的标识值为第二签名。
在光模块启动时,微处理器1011确定程序存储区一1012-1为第一程序区域,并调取所述程序存储区一1012-1内存储的固件代码所述固件代码包括:初始化代码和非初始化代码。微处理器1011首先运行初始化代码对光模块进行初始化设置,然后运行非初始化代码。微处理器1011在运行非初始化代码过程中,从RAM区域1013获取固件控制信息,从而可以在根据固件控制信息获取用户的设置信息,并根据用户的设置运行光模块。
上位机20需要对光模块的固件升级。此时,上位机20下发固件升级通知至微处理器1011。响应于固件升级通知,微处理器1011确定程序存储区二1012-2为第二程序区域,微处理器1011将程序存储区二1012-2内存储的固件代码擦除。当程序存储区二1012-2存储的固件代码被全部擦除时,微处理器1011发送一反馈信号至上位机20。上位机20响应于所述反馈信号,发送固件升级代码至微处理器1011,其中固件升级代码包括初始化代码和升级非初始化代码。微处理器1011将固件升级代码写入所述擦除之后的程序存储区二1012-2。当上位机将全部的固件升级代码传输至微处理器时,上位机发送一升级完成通知至微处理器。微处理器1011响应于上位机发送的升级完成通知,微处理器1011将程序存储区二1012-2对应的标识值和程序存储区一1012-1对应的标识值置换。此时,微处理器1011重新识别程序存储区一1012-1和程序存储区二1012-2对应的标识值,根据所述标识值确定程序存储区二1012-2对应的标识值为第一签名。此时,程序存储区二1012-2为第一程序区。微处理器1011通过程序存储区二1012-2存储的升级非初始化代码,运行光模块。
实施例二:
请继续参阅图3,在光模块启动时程序存储区一1012-1存储的固件代码为当前可用最新版本的固件代码,相应的程序存储区一1012-1对应的标识值为第一签名,所述程序存储区二1012-2存储的固件代码为旧版本的固件代码,相应的程序存储区二1012-2对应的标识值为第二签名。
在光模块启动时,微处理器1011确定程序存储区一1012-1为第一程序区域,并调取所述程序存储区一1012-1内存储的固件代码所述固件代码包括:初始化代码和非初始化代码。微处理器1011首先运行初始化代码对光模块进行初始化设置,然后运行非初始化代码。微处理器1011在运行非初始化代码过程中,从RAM区域1013获取固件控制信息,从而可以在根据固件控制信息获取用户的设置信息,并根据用户的设置运行光模块。
上位机20需要对光模块的固件升级,此时,上位机20下发固件升级通知至微处理器1011。微处理器1011响应于固件升级通知,微处理器1011确定程序存储区二1012-2为第二程序区域,微处理器1011将程序存储区二1012-2内存储的固件代码擦除。当程序存储区二1012-2存储的固件代码被全部擦除时,微处理器1011发送一反馈信号至上位机20。上位机20响应于所述反馈信号,发送固件升级代码至微处理器1011,其中固件升级代码包括初始化代码和升级非初始化代码。微处理器1011将固件升级代码写入所述擦除之后的程序存储区二1012-2。当上位机将全部的固件升级代码传输至微处理器时,上位机发送一升级完成通知至微处理器。微处理器1011响应于上位机发送的升级完成通知,微处理器1011跳转至程序存储区二1012-2,并运行程序存储区二1012-2内存储的升级非初始化代码。
可选择的,为了保证光模块再次上电时,可以继续运行固件升级代码,本申请示出的方案,在微处理器跳转至程序存储区二1012-2的步骤之后,微处理器1011将程序存储区二1012-2对应的标识值和程序存储区一1012-1对应的标识值置换。此时程序存储区二1012-2的标识值第一签名,当光模块再次上电工作时,微处理器1011可以基于所述标识值,调取程序存储区二1012-2内存储的固件升级代码运行光模块运行。
可选择的,在固件升级代码写入的过程中,如果数据错误。微处理器1011生成一数据错误通知,响应于升级过程中的数据错误通知,将所述第二程序区内存储的固件代码擦除。当程序存储区二1012-2存储的固件代码被全部擦除时,微处理器1011发送一反馈信号至上位机20。上位机20响应于所述反馈信号,再次发送固件升级代码至微处理器1011。微处理器1011将固件升级代码写入所述擦除之后的第二程序区。
可选择的,在固件升级代码写入的过程中,如果通信异常。微处理器1011生成一通信异常通知,响应于升级过程中的通信异常通知,将所述第二程序区内存储的固件代码擦除;当程序存储区二1012-2存储的固件代码被全部擦除时,微处理器1011发送一反馈信号至上位机。上位机响应于所述反馈信号,再次发送固件升级代码至微处理器1011。微处理器1011将固件升级代码写入所述擦除之后的第二程序区。
可见本实施例示出的方案可以实现在光模块固件升级的过程中可以保持通信业务,在进行固件代码升级时,通过读取标识值,来确定当前正在运行的程序区,从而避开该正在运行的程序区,对没有运行的程序区进行固件升级,并在升级之后运行该升级之后的程序区中的固件代码,使得通过固件升级代码控制光模块的运行,在下一次固件升级时对另一个程序区进行升级。可以保证光模块在固件升级中始终能运行正常,避免因通信异常、外界突然断电等因素导致固件升级失败。
本申请实施例第二方面示出一种光模块,具体的,可以参阅图5,所述光模块,包括单片机101,所述单片机101内设置有微处理器1011和程序存储区1012;
所述微处理器1011被配置为运行第一签名对应的程序存储区存储的固件代码,所述固件代码包括:初始化代码和非初始化代码;
响应于上位机20发送的固件升级通知,微处理器1011被配置为将固件升级代码写入程序存储区,所述固件升级代码包括初始化代码和升级非初始化代码;
微处理器1011被配置为将上位机20发送的固件升级代码写入程序存储区,所述固件升级代码包括初始化代码和升级非初始化代码;
其中,所述非初始化代码与所述升级非初始化代码关于固件控制信息具有相同的存储寄存器地址。
响应于上位机20发送的升级完成通知,微处理器1011被配置为运行所述升级非初始化代码。
可选择的,所述程序存储区1012包括两个相互独立设置程序存储区(1012-1,1012-2);
根据程序存储区的标识值可以将的程序存储区定义为:第一程序区和第二程序区;所述第一程序区为标识值为第一签名对应的程序存储区,用于存储固件代码,所述第二程序区为标识值为第二签名对应的程序存储区;
所述微处理器1011还被配置为,识别所述程序存储区对应的标识值;若所述标识值为第二签名,则将固件升级代码写入第二程序区。
光模块各器件的功能可以参阅上述实施例,在此便不赘述。
本申请实施例第三方面示出一种光模块的固件升级方法,具体的,可以参阅图6,包括:
S101运行第一签名对应的程序存储区存储的固件代码,所述固件代码包括:初始化代码和非初始化代码;
S102将上位机发送的固件升级代码写入程序存储区,所述固件升级代码包括初始化代码和升级非初始化代码;
响应于上位机发送的升级完成通知,S103运行所述升级非初始化代码,其中,所述非初始化代码与所述升级非初始化代码关于固件控制信息具有相同的存储寄存器地址。
图6示出的实施例中步骤S103包括可以包括以下步骤,具体的可以参阅7。
S10311置换所述第一程序区的标识值和第二程序区的标识值;
将所述第二签名修改为所述第一签名,将所述第一签名修改为所述第二签名。
S10312响应于第一程序区的标识值和第二程序区的标识值置换,识别所述程序存储区对应的标识值;
S10313通过所述标识值确定第一程序区。
S10314运行第一程序区存储的升级非初始化代码。
请参阅图7,其中,图6示出的实施例中步骤S103还包括:
S10321调取所述第二程序区中存储的升级非初始化代码;
S10322运行第二程序区存储的升级非初始化代码。
S10323置换所述第一程序区的标识值和第二程序区的标识值。
请参阅图7,其中,图6示出的实施例中步骤S103还包括:
S10331响应于升级过程中的数据错误通知,将所述第二程序区内存储的固件代码擦除;
S10332将固件升级代码写入所述擦除之后的第二程序区。
请参阅图7,其中,图6示出的实施例中步骤S103还包括:
S10341响应于升级过程中的通信异常通知,将所述第二程序区内存储的固件代码擦除;
S10342将固件升级代码写入所述擦除之后的第二程序区。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域技术人员在考虑说明书及实践这里发明的公开后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
应当理解,本申请中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,例如能够根据本申请实施例图示或描述中给出那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (9)
1.一种光模块的固件升级方法,其特征在于,包括:
上电运行第一签名对应的程序存储区存储的固件代码,所述固件代码包括:初始化代码和非初始化代码;
将上位机发送的固件升级代码写入第二签名对应的程序存储区,所述固件升级代码包括所述初始化代码和升级非初始化代码;
响应于上位机发送的升级完成通知,运行所述升级非初始化代码;
其中,所述非初始化代码与所述升级非初始化代码关于固件控制信息具有相同的存储寄存器地址。
2.根据权利要求1所述方法,其特征在于,所述程序存储区包括:第一程序区和第一程序区;所述第一程序区为初始标识值为第一签名,所述第二程序区初始标识值为第二签名;
将所述固件升级代码写入所述第二签名对应的存储区中;
写入完成后将所述第二签名修改为所述第一签名,将所述第一签名修改为所述第二签名。
3.根据权利要求2所述的方法,其特征在于,所述运行所述升级非初始化代码的步骤包括:
响应于第一程序区的标识值和第二程序区的标识值置换,识别所述程序存储区对应的标识值;
通过所述标识值确定第一程序区;
运行第一程序区存储的升级非初始化代码。
4.根据权利要求2所述的方法,其特征在于,所述运行固件升级代码的步骤包括:
调取所述第二程序区中存储的升级非初始化代码;
运行第二程序区存储的升级非初始化代码。
5.根据权利要求4所述的方法,其特征在于,在运行第二程序区存储的固件升级的步骤之后还包括:
置换所述第一程序区的标识值和第二程序区的标识值。
6.根据权利要求1-5任一项所述的方法,其特征在于,还包括:响应于升级过程中的数据错误通知,将所述第二程序区内存储的固件代码擦除;
将固件升级代码写入擦除之后的第二程序区。
7.根据权利要求1-5任一项所述的方法,其特征在于,还包括:响应于升级过程中的通信异常通知,将所述第二程序区内存储的固件代码擦除;
将固件升级代码写入擦除之后的第二程序区。
8.一种光模块,其特征在于,包括单片机,所述单片机内设置有微处理器,和与所述微处理器相连接的程序存储区;
所述微处理器被配置为运行第一签名对应的程序存储区存储的固件代码,所述固件代码包括:初始化代码和非初始化代码;
所述微处理器还被配置为将上位机发送的固件升级代码写入第二签名对应的程序存储区,所述固件升级代码包括所述初始化代码和升级非初始化代码;
响应于上位机发送的升级完成通知,所述微处理器还被配置为运行所述升级非初始化代码;
响应于上位机发送的升级完成通知,所述微处理器还被配置为运行所述升级非初始化代码;
其中,所述非初始化代码与所述升级非初始化代码关于固件控制信息具有相同的存储寄存器地址。
9.一种光模块固件升级系统,其特征在于,包括:上位机和与所述上位机相连接的光模块,其中,所述光模块包括单片机,所述单片机内设置有微处理器和与所述微处理器相连接的程序存储区;
所述上位机被配置为,发送固件升级通知,升级完成通知以及固件升级代码至所述微处理器;
所述微处理器被配置为运行第一签名对应的程序存储区存储的固件代码,所述固件代码包括:初始化代码和非初始化代码;
所述微处理器还被配置为将上位机发送的固件升级代码写入程序存储区,所述固件升级代码包括初始化代码和升级非初始化代码;
响应于上位机发送的升级完成通知,所述微处理器还被配置为运行所述升级非初始化代码;
其中,所述非初始化代码与所述升级非初始化代码关于固件控制信息具有相同的存储寄存器地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910877377.8A CN110609695A (zh) | 2019-09-17 | 2019-09-17 | 一种光模块的固件升级方法,系统及光模块 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910877377.8A CN110609695A (zh) | 2019-09-17 | 2019-09-17 | 一种光模块的固件升级方法,系统及光模块 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110609695A true CN110609695A (zh) | 2019-12-24 |
Family
ID=68891441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910877377.8A Pending CN110609695A (zh) | 2019-09-17 | 2019-09-17 | 一种光模块的固件升级方法,系统及光模块 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110609695A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641378A (zh) * | 2021-07-13 | 2021-11-12 | 烽火通信科技股份有限公司 | 光模块程序升级方法、装置、设备及可读存储介质 |
CN114466260A (zh) * | 2020-11-10 | 2022-05-10 | 青岛海信宽带多媒体技术有限公司 | 一种光模块升级方法及光模块 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912356A (zh) * | 2016-03-31 | 2016-08-31 | 武汉光迅科技股份有限公司 | 一种支持版本回退的光模块固件程序在线升级方法 |
CN106095480A (zh) * | 2016-05-31 | 2016-11-09 | 青岛海信宽带多媒体技术有限公司 | 一种光模块固件升级的方法及装置 |
CN106126362A (zh) * | 2016-06-17 | 2016-11-16 | 青岛海信宽带多媒体技术有限公司 | 一种光模块i2c总线乱时序诊断方法及装置 |
WO2017063577A1 (zh) * | 2015-10-15 | 2017-04-20 | 中兴通讯股份有限公司 | 一种光模块的固件升级方法及装置 |
CN106874032A (zh) * | 2017-01-04 | 2017-06-20 | 青岛海信宽带多媒体技术有限公司 | 光模块固件升级的方法、装置及光模块 |
CN109002310A (zh) * | 2018-08-07 | 2018-12-14 | 北京云迹科技有限公司 | 固件升级方法 |
-
2019
- 2019-09-17 CN CN201910877377.8A patent/CN110609695A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017063577A1 (zh) * | 2015-10-15 | 2017-04-20 | 中兴通讯股份有限公司 | 一种光模块的固件升级方法及装置 |
CN105912356A (zh) * | 2016-03-31 | 2016-08-31 | 武汉光迅科技股份有限公司 | 一种支持版本回退的光模块固件程序在线升级方法 |
CN106095480A (zh) * | 2016-05-31 | 2016-11-09 | 青岛海信宽带多媒体技术有限公司 | 一种光模块固件升级的方法及装置 |
CN106126362A (zh) * | 2016-06-17 | 2016-11-16 | 青岛海信宽带多媒体技术有限公司 | 一种光模块i2c总线乱时序诊断方法及装置 |
CN106874032A (zh) * | 2017-01-04 | 2017-06-20 | 青岛海信宽带多媒体技术有限公司 | 光模块固件升级的方法、装置及光模块 |
CN109002310A (zh) * | 2018-08-07 | 2018-12-14 | 北京云迹科技有限公司 | 固件升级方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114466260A (zh) * | 2020-11-10 | 2022-05-10 | 青岛海信宽带多媒体技术有限公司 | 一种光模块升级方法及光模块 |
CN114466260B (zh) * | 2020-11-10 | 2023-11-03 | 青岛海信宽带多媒体技术有限公司 | 一种光模块升级方法及光模块 |
CN113641378A (zh) * | 2021-07-13 | 2021-11-12 | 烽火通信科技股份有限公司 | 光模块程序升级方法、装置、设备及可读存储介质 |
CN113641378B (zh) * | 2021-07-13 | 2024-01-26 | 烽火通信科技股份有限公司 | 光模块程序升级方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874032B (zh) | 光模块固件升级的方法、装置及光模块 | |
US20080046780A1 (en) | Nonvolatile memory | |
CN102722384A (zh) | 一种光模块固件在线升级的方法及升级系统 | |
US20180322013A1 (en) | Method for recovering basic input/output system image file of a computer system and the computer system | |
US20100106956A1 (en) | Bios switching system and a method thereof | |
EP3518097A2 (en) | Firmware updating method and electronic device using the same | |
US9864596B2 (en) | Network switch system and operating method thereof | |
CN112988183A (zh) | 程序升级方法、装置、电子设备及存储介质 | |
US11314665B2 (en) | Information processing system, information processing device, BIOS updating method for information processing device, and BIOS updating program for information processing device | |
WO2010025669A1 (en) | Updating firmware with multiple processors | |
CN110633091A (zh) | 一种电子模块及其软件无线升级方法 | |
CN110609695A (zh) | 一种光模块的固件升级方法,系统及光模块 | |
CN111240753A (zh) | 引导程序的加载方法、存储介质及嵌入式终端 | |
CN115220758B (zh) | 一种单片机固件在线升级的方法 | |
CN113377392B (zh) | 可后台升级固件的系统及后台升级固件方法 | |
CN102081526B (zh) | 基本输入/输出系统架构 | |
EP3190514A1 (en) | Boot on-line upgrading apparatus and method | |
CN115718610A (zh) | 一种可靠的单片机应用程序更新的方法 | |
CN101667133B (zh) | 固件更新方法和使用该方法更新固件的芯片 | |
CN110708489A (zh) | 通讯方法、装置以及电子设备、存储介质 | |
CN111736882B (zh) | 一种dsp程序的远程升级方法 | |
CN101944072A (zh) | 一种终端设备的启动方式配置方法及设备 | |
CN111552498B (zh) | 一种实现显示屏的屏参升级的方法及系统 | |
CN111399869A (zh) | 控制直写式曝光机软件升级的方法、控制单元和曝光机 | |
CN102760064A (zh) | 网卡更新装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191224 |