本發(fā)明涉及光通信技術(shù)領(lǐng)域,尤其涉及光模塊固件升級(jí)的方法、裝置及光模塊。
背景技術(shù):
光收發(fā)一體模塊,簡(jiǎn)稱光模塊(optical module),是光通訊領(lǐng)域的設(shè)備中的一種標(biāo)準(zhǔn)模塊,用于光電轉(zhuǎn)換。如圖1所示,光模塊10由光發(fā)射器101、光接收器102、微處理器103等組成。其中,光模塊10的微控制器103微處理器103控制光發(fā)射器101把電信號(hào)轉(zhuǎn)換成光信號(hào),光發(fā)射器101將光信號(hào)傳輸至光纖。光模塊10的光接收器102可以接收光纖傳輸?shù)墓庑盘?hào),并在微控制器103微處理器103的控制下將接收的光信號(hào)轉(zhuǎn)換成電信號(hào)。
微處理器103運(yùn)行的程序存儲(chǔ)在FLASH(閃存)緩存中,該運(yùn)行的程序分為Bootloader(引導(dǎo)加載)程序及固件。其中,Bootloader程序是升級(jí)引導(dǎo)程序,在寫(xiě)入FLASH緩存之后不再改變,固件是光模塊10的應(yīng)用程序。隨著光模塊10功能的不斷完善,固件需進(jìn)行版本更新或者漏洞修復(fù),即為固件需要進(jìn)行升級(jí)。
目前傳統(tǒng)光模塊10固件升級(jí)的方法為:微處理器103接收到上位機(jī)發(fā)送的升級(jí)指令后,微處理器103從運(yùn)行固件程序跳轉(zhuǎn)到運(yùn)行Bootloader程序,其中,微處理器103在運(yùn)行Bootloader程序時(shí),將新的固件數(shù)據(jù)覆蓋FLASH緩存中原有的固件數(shù)據(jù),當(dāng)新的固件數(shù)據(jù)寫(xiě)入完畢后,微處理器103運(yùn)行更新后的固件。
需要說(shuō)明的是,固件在正常運(yùn)行過(guò)程中,微處理器103將從上位機(jī)中獲取的固件的控制信息存儲(chǔ)在易失性存儲(chǔ)區(qū)中,微處理器103在跳轉(zhuǎn)到運(yùn)行Bootloader程序后,固件停止運(yùn)行,則存儲(chǔ)固件的控制信息的易失性存儲(chǔ)區(qū)被釋放。在微處理器103運(yùn)行Bootloader程序過(guò)程中,可能會(huì)將獲取的數(shù)據(jù)信息存儲(chǔ)至原存儲(chǔ)固件的控制信息的易失性存儲(chǔ)區(qū)中,即為將原固件存儲(chǔ)在易失性存儲(chǔ)區(qū)的控制信息覆蓋。這樣,微處理器103在完成固件更新后,無(wú)法獲取原固件的控制信息。而固件的控制信息中包含有用戶對(duì)光模塊的設(shè)置信息,例如光模塊的工作頻率,光發(fā)射器101的開(kāi)啟與關(guān)閉,是否運(yùn)行在低功耗模式等。在原固件的控制信息丟失后,微處理器103無(wú)法按照用戶設(shè)置的方式運(yùn)行更新后的固件,使得光模塊10無(wú)法正常工作,導(dǎo)致通信業(yè)務(wù)出現(xiàn)短暫中斷。
技術(shù)實(shí)現(xiàn)要素:
為克服相關(guān)技術(shù)中存在的問(wèn)題,本發(fā)明提供一種光模塊固件升級(jí)的方法、裝置及光
模塊。
根據(jù)本發(fā)明實(shí)施例的第一方面,提供一種光模塊固件升級(jí)的方法,包括:運(yùn)行固件;
接收固件的控制信息;將所述固件的控制信息存儲(chǔ)至易失性存儲(chǔ)區(qū)的第一區(qū)域;所述第一區(qū)域是易失性存儲(chǔ)區(qū)中用于存儲(chǔ)固件的控制信息的區(qū)域;由運(yùn)行所述固件跳轉(zhuǎn)至運(yùn)行引導(dǎo)加載Bootloader程序,通過(guò)運(yùn)行所述Bootloader程序,對(duì)所述固件升級(jí),并將固件升級(jí)過(guò)程中產(chǎn)生的緩存信息存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域;固件升級(jí)完成后,由運(yùn)行所述Bootloader程序跳轉(zhuǎn)至運(yùn)行升級(jí)后的固件,并在運(yùn)行所述升級(jí)后的固件的過(guò)程中,從所述第一區(qū)域中獲取所述固件的控制信息。
根據(jù)本發(fā)明實(shí)施例的第二方面,提供一種光模塊固件升級(jí)的裝置,包括:處理器、存儲(chǔ)器和通信接口,所述處理器、所述存儲(chǔ)器和所述通信接口通信總線相連;所述通信接口,用于接收和發(fā)送信號(hào);所述存儲(chǔ)器,用于存儲(chǔ)程序代碼;所述處理器,用于讀取所述存儲(chǔ)器中存儲(chǔ)的程序代碼,并執(zhí)行上述實(shí)施例所述的光模塊固件升級(jí)的方法。
根據(jù)本發(fā)明實(shí)施例的第三方面,提供一種光模塊,包括:光接收器,光發(fā)射器及微處理器;其中,所述微處理器包括如上述實(shí)施例所述的光模塊固件升級(jí)的裝置。
本發(fā)明的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:運(yùn)行固件;接收固件的控制信息;將固件的控制信息存儲(chǔ)至易失性存儲(chǔ)區(qū)的第一區(qū)域;由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序,通過(guò)運(yùn)行Bootloader程序,對(duì)所述固件升級(jí);并將固件升級(jí)過(guò)程中產(chǎn)生的緩存信息存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域;固件升級(jí)完成后,由運(yùn)行Bootloader程序跳轉(zhuǎn)至運(yùn)行升級(jí)后的固件,并在運(yùn)行升級(jí)后的固件的過(guò)程中,從第一區(qū)域中獲取固件的控制信息。這樣一來(lái),光模塊固件升級(jí)的裝置在接收到固件的控制信息,可以將固件的控制信息存儲(chǔ)至易失性存儲(chǔ)區(qū)的第一區(qū)域,在進(jìn)行固件升級(jí)時(shí),Bootloader程序?qū)⒋鎯?chǔ)數(shù)據(jù)存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域,而不是第一區(qū)域,使得第一區(qū)域內(nèi)存儲(chǔ)的固件的控制信息不被覆蓋。在運(yùn)行升級(jí)后的固件的過(guò)程中,可以從第一區(qū)域中獲取固件的控制信息,從而可以根據(jù)固件的控制信息運(yùn)行光模塊,降低了因光模塊升級(jí)而導(dǎo)致通信業(yè)務(wù)出現(xiàn)中斷的可能性。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本發(fā)明。
附圖說(shuō)明
此處的附圖被并入說(shuō)明書(shū)中并構(gòu)成本說(shuō)明書(shū)的一部分,示出了符合本發(fā)明的實(shí)施例,并與說(shuō)明書(shū)一起用于解釋本發(fā)明的原理。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,對(duì)于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為現(xiàn)有技術(shù)中的一種光模塊的結(jié)構(gòu)示意圖;
圖2為現(xiàn)有技術(shù)中光網(wǎng)絡(luò)系統(tǒng)的一種結(jié)構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例提供的一種光模塊固件升級(jí)的方法的流程示意圖;
圖4為本發(fā)明實(shí)施例提供的另一種光模塊固件升級(jí)的方法的流程示意圖;
圖5為本發(fā)明實(shí)施例提供的一種光模塊固件升級(jí)的裝置的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例提供的一種光模塊的結(jié)構(gòu)示意圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本發(fā)明相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
如圖2所示,在光網(wǎng)絡(luò)系統(tǒng)中,上位機(jī)20是控制和監(jiān)控光模塊10工作的設(shè)備。上位機(jī)20可以通過(guò)I2C(Inter-Integrated Circuit)總線控制和監(jiān)控多個(gè)光模塊10工作。光模塊10是光收發(fā)一體模塊,用于光電轉(zhuǎn)換。光模塊10中包含有光發(fā)射器101、光接收器102、微處理器103等,如圖1所示。
微處理器103運(yùn)行的程序存儲(chǔ)在FLASH(閃存)緩存中,該運(yùn)行的程序分為Bootloader(引導(dǎo)加載)程序及固件。在正常情況下,微處理器103運(yùn)行的程序?yàn)楣碳?。上位機(jī)20可以將固件的控制信息通過(guò)I2C總線傳輸至微處理器103中。其中,固件的控制信息包含有用戶對(duì)光模塊10的設(shè)置信息,例如用戶設(shè)置關(guān)閉光發(fā)射器101,光模塊10運(yùn)行在低功耗模式,光模塊10的啟動(dòng)密碼等。
對(duì)于固件的控制信息,一些控制信息可以存儲(chǔ)至FLASH緩存,即為非易失存儲(chǔ)區(qū)。例如,對(duì)于光模塊10的某一功能即為A功能,如果需要對(duì)啟動(dòng)光模塊10的A功能的用戶進(jìn)行身份認(rèn)證,此時(shí)用戶可以設(shè)置啟動(dòng)密碼,微處理器10可以獲取到光模塊10的A功能啟動(dòng)密碼。光模塊10的A功能啟動(dòng)密碼用于對(duì)啟動(dòng)光模塊的A功能的用戶進(jìn)行身份驗(yàn)證,在用戶輸入的密碼與保存的光模塊10的A功能啟動(dòng)密碼一致時(shí),才能啟動(dòng)光模塊10的A功能。為了保證在每次運(yùn)行光模塊10時(shí),均可對(duì)用戶身份進(jìn)行認(rèn)證,需要微處理器10將光模塊10的A功能啟動(dòng)密碼保存至非易失存儲(chǔ)區(qū)中,這樣即使在光模塊10掉電后,光模塊10的A功能啟動(dòng)密碼也不會(huì)丟失,從而可以在每次運(yùn)行光模塊10時(shí),從非易失存儲(chǔ)區(qū)中讀取光模塊10的A功能啟動(dòng)密碼,利用讀取的光模塊10的A功能啟動(dòng)密碼對(duì)用戶身份進(jìn)行認(rèn)證。
而對(duì)于固件的另一些控制信息,為了保證光模塊10的正常工作,無(wú)法將其保存至非易失性存儲(chǔ)區(qū)中,而是需要將其保存至易失性存儲(chǔ)區(qū)中。例如用戶設(shè)置光發(fā)射器101關(guān)閉,也就是說(shuō),用戶將光模塊10中的光發(fā)射器101關(guān)閉,此時(shí)光模塊10無(wú)法將電信號(hào)轉(zhuǎn)換為光信號(hào),傳輸至光纖中。但是光模塊10的主要作用是實(shí)現(xiàn)光電轉(zhuǎn)換,即為,光模塊10可以將光信號(hào)轉(zhuǎn)換為電信號(hào),將電信號(hào)轉(zhuǎn)換為光信號(hào)。在將光模塊10中的光發(fā)射器101關(guān)閉時(shí),光模塊無(wú)法實(shí)現(xiàn)將電信號(hào)轉(zhuǎn)換為光信號(hào)。如果將上述用戶設(shè)置光發(fā)射器101關(guān)閉保存至非易失性存儲(chǔ)區(qū),在每次啟動(dòng)光模塊10時(shí),光模塊10的光發(fā)射器101均被關(guān)閉,會(huì)導(dǎo)致每次啟動(dòng)光模塊10后,光模塊10的基本功能無(wú)法實(shí)現(xiàn)。并且,光模塊10的日常運(yùn)行中,其內(nèi)光發(fā)射器101開(kāi)啟的需求遠(yuǎn)大于其內(nèi)光發(fā)射器101關(guān)閉的需求,通常需在每次啟動(dòng)光模塊10時(shí),將光發(fā)射器101初始化為開(kāi)啟狀態(tài)。因此,需要將用戶設(shè)置光發(fā)射器101關(guān)閉的控制信息存儲(chǔ)至易失性存儲(chǔ)區(qū)。
又如,在啟動(dòng)光模塊10的A功能時(shí),如果需要進(jìn)行身份驗(yàn)證,需要用戶輸入驗(yàn)證密碼,此時(shí)微處理器103接收到控制信息中包含有用戶輸入的驗(yàn)證密碼。如果將用戶輸入的驗(yàn)證密碼存儲(chǔ)至非易失存儲(chǔ)區(qū)中,則每次光模塊10的A功能啟動(dòng)時(shí),均可以從非易失存儲(chǔ)區(qū)中獲取到驗(yàn)證密碼,利用此驗(yàn)證密碼進(jìn)行身份驗(yàn)證,這樣一來(lái),無(wú)法實(shí)現(xiàn)對(duì)啟動(dòng)光模塊10的A功能的用戶進(jìn)行身份驗(yàn)證,則設(shè)置光模塊10的A功能啟動(dòng)密碼就失去了意義。因此,需要將用戶輸入的驗(yàn)證密碼存儲(chǔ)至易失存儲(chǔ)區(qū)中,每次光模塊10啟動(dòng)后,如要啟動(dòng)光模塊10的A功能,需要用戶重新輸入驗(yàn)證密碼,從而可以實(shí)現(xiàn)對(duì)啟動(dòng)光模塊10的A功能的用戶進(jìn)行身份驗(yàn)證的目的。由此可知,固件的一些控制信息只能存儲(chǔ)至易失性存儲(chǔ)區(qū)。
在微處理器103運(yùn)行固件的過(guò)程中,會(huì)為此固件在易失性存儲(chǔ)區(qū)中分配存儲(chǔ)區(qū)域,用于存儲(chǔ)數(shù)據(jù)。這樣一來(lái),微處理器103接收到固件的控制信息后,通過(guò)運(yùn)行的固件將需存儲(chǔ)至易失性存儲(chǔ)區(qū)的控制信息存儲(chǔ)至固件占用的存儲(chǔ)區(qū)域中。并在運(yùn)行固件的過(guò)程中,固件占用的存儲(chǔ)區(qū)域不會(huì)被釋放,微處理器103可以從固件占用的存儲(chǔ)區(qū)域中獲取到固件的控制信息。
在需要對(duì)光模塊10內(nèi)的固件進(jìn)行升級(jí)時(shí),上位機(jī)20通過(guò)I2C總線將升級(jí)指令發(fā)送至微處理器103。微處理器103接收到升級(jí)指令后,從運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序。在微處理器103跳轉(zhuǎn)運(yùn)行Bootloader程序時(shí),由于微處理器103開(kāi)始運(yùn)行Bootloader程序,不再運(yùn)行固件。即為,固件運(yùn)行結(jié)束。由于易失性存儲(chǔ)區(qū)是有限的,因此在固件運(yùn)行結(jié)束時(shí),固件占用的存儲(chǔ)區(qū)域需釋放給其他程序使用。也就是說(shuō),固件占用的存儲(chǔ)區(qū)域被釋放,即為存儲(chǔ)有固件的控制信息的易失性存儲(chǔ)區(qū)被釋放。因此,微處理器103在運(yùn)行Bootloader程序時(shí),需為Bootloader程序在易失性存儲(chǔ)區(qū)中分配存儲(chǔ)區(qū)域,此時(shí)為Bootloader程序分配的存儲(chǔ)區(qū)域可能就是固件使用的存儲(chǔ)區(qū)域。這樣在Bootloader程序進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),可能會(huì)將易失性存儲(chǔ)區(qū)中存儲(chǔ)的固件的控制信息覆蓋。
即為,在固件升級(jí)過(guò)程,上位機(jī)20利用I2C總線將新的固件分塊發(fā)送至微處理器103。微處理器103接收到新的固件后,需將新的固件先存儲(chǔ)至易失性存儲(chǔ)區(qū)中,此時(shí),將新的固件存儲(chǔ)至易失性存儲(chǔ)區(qū)時(shí),可能會(huì)覆蓋已存儲(chǔ)的固件的控制信息,導(dǎo)致固件的控制信息丟失。微處理器103在接收完上位機(jī)20通過(guò)I2C總線發(fā)送的新的固件后,可以在易失性存儲(chǔ)區(qū)中逐塊的讀取新的固件,并將其寫(xiě)入至原有固件的存儲(chǔ)地址所指示的存儲(chǔ)區(qū)中。當(dāng)易失性存儲(chǔ)區(qū)存儲(chǔ)的新的固件全部寫(xiě)入至原有固件的存儲(chǔ)地址所指示的存儲(chǔ)區(qū)后,固件升級(jí)完成。此時(shí),微處理器103從運(yùn)行Bootloader程序跳轉(zhuǎn)至運(yùn)行新的固件。
由于在升級(jí)過(guò)程中,上位機(jī)20通過(guò)I2C總線發(fā)送升級(jí)指令及新的固件,不再發(fā)送固件的控制信息,因此,現(xiàn)有的上述升級(jí)過(guò)程中,在完成固件升級(jí)的過(guò)程中會(huì)帶來(lái)存儲(chǔ)區(qū)域中存儲(chǔ)的固件的控制信息丟失的問(wèn)題,導(dǎo)致微處理器103在運(yùn)行升級(jí)后的固件過(guò)程中,無(wú)法獲取固件的控制信息,而固件的控制信息中包含有用戶對(duì)光模塊運(yùn)行的相關(guān)設(shè)置信息,微處理器103無(wú)法按照用戶的設(shè)置信息來(lái)控制光發(fā)射器101及光接收器102的工作,導(dǎo)致光模塊無(wú)法正常工作,進(jìn)而造成通信業(yè)務(wù)的中斷。
為了解決上述問(wèn)題,在本發(fā)明實(shí)施例提供了一種光模塊固件升級(jí)的方案,在改方案中將易失性存儲(chǔ)區(qū)劃分為第一區(qū)域及第二區(qū)域,且所述第一區(qū)域是易失性存儲(chǔ)區(qū)中用于存儲(chǔ)固件的控制信息的區(qū)域。在接收到固件的控制信息時(shí),將固件的控制信息存儲(chǔ)至第一區(qū)域。在固件升級(jí)過(guò)程中,Bootloader程序?qū)⒋鎯?chǔ)數(shù)據(jù)存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域,不會(huì)占用易失性存儲(chǔ)區(qū)的第一區(qū)域。在固件升級(jí)完成后,運(yùn)行升級(jí)后的固件時(shí),可以從易失性存儲(chǔ)區(qū)的第一區(qū)域中獲取固件的控制信息。這樣一來(lái),本發(fā)明實(shí)施例中的固件的控制信息不會(huì)在固件升級(jí)的過(guò)程中丟失,在運(yùn)行升級(jí)后的固件時(shí),可以在易失性存儲(chǔ)區(qū)的第一區(qū)域獲取到固件的控制信息,從而可以在根據(jù)固件的控制信息獲取用戶的設(shè)置信息,根據(jù)用戶的設(shè)置運(yùn)行光模塊,降低了因光模塊升級(jí)而導(dǎo)致通信業(yè)務(wù)出現(xiàn)中斷的可能性。
如圖3所示,本發(fā)明實(shí)施例提供了一種光模塊固件升級(jí)的方法,包括:
步驟301、運(yùn)行固件。
具體的,光模塊固件升級(jí)的裝置在未接收到升級(jí)指令時(shí),處于正常工作狀態(tài),此時(shí)運(yùn)行非易失性存儲(chǔ)區(qū)中的固件。
步驟302、接收固件的控制信息。
具體的,上位機(jī)將用戶對(duì)光模塊的相關(guān)設(shè)置信息等作為固件的控制信息發(fā)送至光模塊固件升級(jí)的裝置,光模塊固件升級(jí)的裝置接收上位機(jī)發(fā)送的固件的控制信息。
步驟303、將固件的控制信息存儲(chǔ)至易失性存儲(chǔ)區(qū)的第一區(qū)域。
其中,第一區(qū)域是易失性存儲(chǔ)區(qū)中用于存儲(chǔ)固件的控制信息的區(qū)域。
具體的,光模塊固件升級(jí)的裝置接收到固件的控制信息后,通過(guò)運(yùn)行固件將固件的控制信息寫(xiě)入至分配給固件的易失性存儲(chǔ)區(qū)的第一區(qū)域。
步驟304、由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序,通過(guò)運(yùn)行Bootloader程序,對(duì)固件升級(jí);并在固件升級(jí)過(guò)程中,將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域。
其中,第二區(qū)域與第一區(qū)域是易失性存儲(chǔ)區(qū)中不同的存儲(chǔ)區(qū)域。
需要說(shuō)明的是,易失性存儲(chǔ)區(qū)包括第一區(qū)域及第二區(qū)域。第二區(qū)域可以是光模塊固件升級(jí)的裝置運(yùn)行Bootloader程序時(shí),將易失性存儲(chǔ)區(qū)分配給Bootloader程序使用的存儲(chǔ)區(qū)域。
具體的,在需要對(duì)光模塊的固件進(jìn)行升級(jí)時(shí),上位機(jī)可以向光模塊固件升級(jí)的裝置發(fā)送升級(jí)指令。光模塊固件升級(jí)的裝置接收到升級(jí)指令后,可以獲知光模塊的固件需要升級(jí),此時(shí),光模塊固件升級(jí)的裝置可以從運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序。即為,光模塊固件升級(jí)的裝置停止運(yùn)行固件,獲取Bootloader程序的存儲(chǔ)地址,根據(jù)此地址,獲取Bootloader程序,進(jìn)而運(yùn)行Bootloader程序。由于Bootloader程序是升級(jí)引導(dǎo)程序,因此光模塊固件升級(jí)的裝置在運(yùn)行Bootloader程序后,可以對(duì)固件進(jìn)行相應(yīng)的升級(jí)。在固件升級(jí)的過(guò)程中,如果光模塊固件升級(jí)的裝置運(yùn)行Bootloader程序產(chǎn)生了緩存信息,則可以將固件升級(jí)過(guò)程中產(chǎn)生的緩存信息存儲(chǔ)至Bootloader程序占用的易失性存儲(chǔ)區(qū)的第二區(qū)域。
需要說(shuō)明的是,由于非易失存儲(chǔ)區(qū)中存儲(chǔ)了固件和Bootloader程序,光模塊固件升級(jí)的裝置可以在非易失性存儲(chǔ)區(qū)中預(yù)設(shè)一個(gè)存儲(chǔ)區(qū)用于預(yù)先存儲(chǔ)Bootloader程序的中斷向量表。這樣,在需要由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序時(shí),可以將光模塊固件升級(jí)的裝置的當(dāng)前中斷向量表切換至Bootloader程序的中斷向量表,得到Bootloader程序的存儲(chǔ)地址,程序指針跳轉(zhuǎn)指向Bootloader程序,實(shí)現(xiàn)由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序。
進(jìn)一步的,光模塊固件升級(jí)的裝置運(yùn)行Bootloader程序?qū)碳?jí),即為光模塊固件升級(jí)的裝置接收到新的固件,通過(guò)運(yùn)行Bootloader程序?qū)⑿碌墓碳?xiě)入至非易失存儲(chǔ)區(qū),并將升級(jí)完成后,運(yùn)行新的固件。而在光模塊固件升級(jí)的裝置將新的固件寫(xiě)入至非易失存儲(chǔ)區(qū)時(shí),可以將新的固件寫(xiě)入至非易失存儲(chǔ)區(qū)的存儲(chǔ)升級(jí)前的固件的存儲(chǔ)區(qū)域,即為將新的固件覆蓋非易失存儲(chǔ)區(qū)的存儲(chǔ)的原有的固件,實(shí)現(xiàn)固件的升級(jí)?;蛘撸瑢⒎且资Т鎯?chǔ)區(qū)中存儲(chǔ)固件的存儲(chǔ)區(qū)域劃分為兩個(gè)區(qū)域,在光模塊固件升級(jí)的裝置將新的固件寫(xiě)入至非易失存儲(chǔ)區(qū)時(shí),可以將新的固件寫(xiě)入至非易失存儲(chǔ)區(qū)的第一區(qū)域,而升級(jí)前的固件存儲(chǔ)在非易失存儲(chǔ)區(qū)的第二區(qū)域,即為新的固件在寫(xiě)入至非易失存儲(chǔ)區(qū)時(shí),并不覆蓋原有的固件,而是寫(xiě)入其他的存儲(chǔ)區(qū)域,實(shí)現(xiàn)固件的升級(jí)。具體過(guò)程如下:
由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序,通過(guò)運(yùn)行Bootloader程序,對(duì)固件升級(jí)包括:由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序,接收新的固件。通過(guò)運(yùn)行Bootloader程序,將新的固件寫(xiě)入至非易失性存儲(chǔ)區(qū)中存儲(chǔ)固件的存儲(chǔ)區(qū)。
也就是說(shuō),在固件升級(jí)過(guò)程中,上位機(jī)需將新的固件分塊發(fā)送至光模塊固件升級(jí)的裝置,此時(shí),光模塊固件升級(jí)的裝置接收到新的固件后,可以將新的固件直接寫(xiě)入至非易失性存儲(chǔ)區(qū)的存儲(chǔ)固件的存儲(chǔ)區(qū),即為新的固件將非易失性存儲(chǔ)區(qū)中存儲(chǔ)的固件覆蓋,實(shí)現(xiàn)固件的升級(jí)。
或者,由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序,通過(guò)運(yùn)行Bootloader程序,對(duì)固件升級(jí)包括:由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序,接收新的固件。通過(guò)運(yùn)行Bootloader程序,將新的固件寫(xiě)入至非易失性存儲(chǔ)區(qū)的第一區(qū)域。
其中,非易失性存儲(chǔ)區(qū)包括第一區(qū)域和第二區(qū)域。非易失性存儲(chǔ)區(qū)的第一區(qū)域是用于存儲(chǔ)升級(jí)后的固件的區(qū)域。非易失性存儲(chǔ)區(qū)的第二區(qū)域是用于存儲(chǔ)升級(jí)前的固件的區(qū)域。
也就是說(shuō),將非易失性存儲(chǔ)區(qū)劃分為存儲(chǔ)Bootloader程序的存儲(chǔ)區(qū)域及存儲(chǔ)固件的存儲(chǔ)區(qū)域,而將存儲(chǔ)固件的存儲(chǔ)區(qū)域又可劃分為第一區(qū)域和第二區(qū)域。升級(jí)前的固件存儲(chǔ)在非易失性存儲(chǔ)區(qū)的第二區(qū)域。光模塊固件升級(jí)的裝置接收到新的固件后,可以將新的固件直接寫(xiě)入至非易失性存儲(chǔ)區(qū)的第一區(qū)域內(nèi),并不覆蓋原有的固件。
需要說(shuō)明的是,在固件升級(jí)過(guò)程中,上位機(jī)需將新的固件分塊發(fā)送至光模塊固件升級(jí)的裝置,如果光模塊固件升級(jí)的裝置需要在全部接收了新的固件的全部數(shù)據(jù)后,在再寫(xiě)入將新的固件寫(xiě)入至非易失性存儲(chǔ)區(qū)時(shí),可以將每次接收的每塊新的固件,暫存至易失性存儲(chǔ)區(qū)中的第二區(qū)域。此時(shí),光模塊固件升級(jí)的裝置接收到上位機(jī)發(fā)的一塊新的固件后,可以通過(guò)運(yùn)行Bootloader程序?qū)⒔邮盏囊粔K新的固件寫(xiě)入至易失性存儲(chǔ)區(qū)中的第二區(qū)域,直至將新的固件的全部數(shù)據(jù)均寫(xiě)入至易失性存儲(chǔ)區(qū)中的第二區(qū)域,在將易失性存儲(chǔ)區(qū)中的第二區(qū)域內(nèi)的新的固件,寫(xiě)入至非易失性存儲(chǔ)區(qū)中存儲(chǔ)原有的固件的存儲(chǔ)區(qū)。在將新的固件的全部數(shù)據(jù)均寫(xiě)入至非易失性存儲(chǔ)區(qū)后,即完成了固件的升級(jí)。
步驟305、固件升級(jí)完成后,由運(yùn)行Bootloader程序跳轉(zhuǎn)至運(yùn)行升級(jí)后的固件,并在運(yùn)行升級(jí)后的固件的過(guò)程中,從第一區(qū)域中獲取固件的控制信息。
具體的,光模塊固件升級(jí)的裝置在固件升級(jí)完成后,從運(yùn)行Bootloader程序跳轉(zhuǎn)至運(yùn)行升級(jí)后的固件,即為從運(yùn)行Bootloader程序跳轉(zhuǎn)至運(yùn)行新的固件。也就是說(shuō),光模塊固件升級(jí)的裝置結(jié)束運(yùn)行Bootloader程序,開(kāi)始運(yùn)行新的固件,此時(shí),光模塊固件升級(jí)的裝置需要獲取新的固件的存儲(chǔ)地址,進(jìn)而根據(jù)新的固件的存儲(chǔ)地址直接跳轉(zhuǎn)運(yùn)行新的固件。由于在運(yùn)行Bootloader程序時(shí),Bootloader程序占用的易失性存儲(chǔ)區(qū)是第二區(qū)域,不是第一區(qū)域,則第一區(qū)域內(nèi)存儲(chǔ)的固件的控制信息未被覆蓋。因此在運(yùn)行升級(jí)的固件中,如果需要固件的控制信息,則可以從第一區(qū)域中獲取到固件的控制信息。
這樣一來(lái),本發(fā)明實(shí)施例中的固件的控制信息不會(huì)在固件升級(jí)的過(guò)程中丟失,在運(yùn)行升級(jí)后的固件時(shí),可以在易失性存儲(chǔ)區(qū)的第一區(qū)域獲取到固件的控制信息,從而可以在根據(jù)固件的控制信息運(yùn)行光模塊,降低了因光模塊升級(jí)而導(dǎo)致通信業(yè)務(wù)出現(xiàn)中斷的可能性。
圖4為本發(fā)明實(shí)施例提供的一種光模塊固件升級(jí)的方法的流程示意圖。如圖4所示,該方法包括:
步驟401、運(yùn)行固件。
具體的,可參考步驟301,在此不再贅述。
步驟402、接收固件的控制信息。
具體的,可參考步驟302,在此不再贅述。
需要說(shuō)明的是,在本發(fā)明實(shí)施例中,可以針對(duì)Bootloader及固件將易失性存儲(chǔ)區(qū)劃分為不同的存儲(chǔ)區(qū)域,即為第一區(qū)域及第二區(qū)域。這樣一來(lái),在運(yùn)行固件時(shí),將運(yùn)行固件時(shí)需存儲(chǔ)的數(shù)據(jù)直接存儲(chǔ)至易失性存儲(chǔ)區(qū)的第一區(qū)域中,并可以從此第一區(qū)域讀取已存儲(chǔ)的數(shù)據(jù)。在運(yùn)行Bootloader程序時(shí),將運(yùn)行Bootloader程序時(shí)需存儲(chǔ)的數(shù)據(jù)直接存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域中,并可以從此第二區(qū)域讀取已存儲(chǔ)的數(shù)據(jù)。從而可以使光模塊固件升級(jí)的裝置在運(yùn)行固件進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),不會(huì)造成Bootloader程序存儲(chǔ)的數(shù)據(jù)丟失。同理,光模塊固件升級(jí)的裝置在運(yùn)行Bootloader程序進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),也不會(huì)造成固件存儲(chǔ)的數(shù)據(jù)丟失。
也可以在易失性存儲(chǔ)區(qū)中專(zhuān)門(mén)劃分一個(gè)存儲(chǔ)區(qū)域即為第一區(qū)域,用于在固件升級(jí)的過(guò)程中存儲(chǔ)固件的控制信息。而光模塊固件升級(jí)的裝置在運(yùn)行固件及Bootloader程序時(shí),如需要存儲(chǔ)數(shù)據(jù)時(shí),只能將數(shù)據(jù)存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域。在運(yùn)行固件及Bootloader程序時(shí),如果需要讀取已存儲(chǔ)的數(shù)據(jù),也只能從第二區(qū)域中讀取。
下面根據(jù)易失性存儲(chǔ)區(qū)域劃分的規(guī)則不同,下面執(zhí)行執(zhí)行的步驟不同。在將易失性存儲(chǔ)區(qū)域針對(duì)Bootloader及固件劃分為不同的存儲(chǔ)區(qū)域時(shí),執(zhí)行步驟403a-405a。在將易失性存儲(chǔ)區(qū)域中專(zhuān)門(mén)劃分一個(gè)存儲(chǔ)區(qū)域即為第一區(qū)域,用于在固件升級(jí)的過(guò)程中存儲(chǔ)固件的控制信息時(shí),執(zhí)行步驟403b-406b。
步驟403a、將固件的控制信息存儲(chǔ)至易失性存儲(chǔ)區(qū)的第一區(qū)域。
其中,第一區(qū)域是易失性存儲(chǔ)區(qū)中用于存儲(chǔ)固件的控制信息的區(qū)域。
具有的,將易失性存儲(chǔ)區(qū)域針對(duì)Bootloader及固件劃分出第一區(qū)域及第二區(qū)域。將第一區(qū)域分配至固件,用于存儲(chǔ)運(yùn)行固件的過(guò)程中產(chǎn)生的緩存信息。這樣一來(lái),光模塊固件升級(jí)的裝置在接收到固件的控制信息時(shí),通過(guò)運(yùn)行的固件,可以將固件的控制信息寫(xiě)入至固件占用的易失性存儲(chǔ)區(qū)的存儲(chǔ)區(qū)域,即為第一區(qū)域,使得易失性存儲(chǔ)區(qū)的第一區(qū)域存儲(chǔ)固件的控制信息。
步驟403b、將固件的控制信息存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域。
具體的,光模塊固件升級(jí)的裝置在運(yùn)行固件時(shí),為固件分配了易失性存儲(chǔ)區(qū)的第二區(qū)域用于存儲(chǔ)其運(yùn)行時(shí)產(chǎn)生的緩存信息。此時(shí),光模塊固件升級(jí)的裝置可以將接收的固件的控制信息通過(guò)運(yùn)行的固件,將固件的控制信息寫(xiě)入至固件占用的易失性存儲(chǔ)區(qū)的存儲(chǔ)區(qū)域,即為第二區(qū)域,使得易失性存儲(chǔ)區(qū)的第二區(qū)域存儲(chǔ)固件的控制信息。
步驟404a、接收到升級(jí)指令時(shí),由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序,通過(guò)運(yùn)行Bootloader程序,對(duì)固件升級(jí),并將固件升級(jí)過(guò)程中產(chǎn)生的緩存信息存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域。
具體的,在需要對(duì)光模塊固件升級(jí)的裝置中的固件進(jìn)行升級(jí)時(shí),上位機(jī)可以向光模塊固件升級(jí)的裝置發(fā)送升級(jí)指令。此時(shí)光模塊固件升級(jí)的裝置接收到升級(jí)指令后,可以獲知需要對(duì)固件進(jìn)行升級(jí)。光模塊固件升級(jí)的裝置可以由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序,通過(guò)運(yùn)行Bootloader程序,對(duì)固件升級(jí)。
第二區(qū)域可以是用于存儲(chǔ)Bootloader程序的相關(guān)數(shù)據(jù)的區(qū)域。也就是說(shuō),在本發(fā)明實(shí)施例中,針對(duì)Bootloader及固件將易失性存儲(chǔ)區(qū)劃分為不同的存儲(chǔ)區(qū)域,即為第一區(qū)域及第二區(qū)域。這樣一來(lái),在運(yùn)行固件時(shí),將運(yùn)行固件時(shí)需存儲(chǔ)的數(shù)據(jù)直接存儲(chǔ)至易失性存儲(chǔ)區(qū)的第一區(qū)域中,并可以從此第一區(qū)域讀取已存儲(chǔ)的數(shù)據(jù)。在運(yùn)行Bootloader程序時(shí),將運(yùn)行Bootloader程序時(shí)需存儲(chǔ)的數(shù)據(jù)直接存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域中,并可以從此第二區(qū)域讀取已存儲(chǔ)的數(shù)據(jù)。從而可以使光模塊固件升級(jí)的裝置在運(yùn)行固件進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),不會(huì)造成Bootloader程序存儲(chǔ)的數(shù)據(jù)丟失。同理,光模塊固件升級(jí)的裝置在運(yùn)行Bootloader程序進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),也不會(huì)造成固件存儲(chǔ)的數(shù)據(jù)丟失。
其中,光模塊固件升級(jí)的裝置可以由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序,通過(guò)運(yùn)行Bootloader程序,對(duì)固件升級(jí)的具體執(zhí)行過(guò)程,可以參數(shù)步驟304,在此不再贅述。
步驟404b、接收升級(jí)指令,從易失性存儲(chǔ)區(qū)的第二區(qū)域內(nèi)讀取固件的控制信息,并寫(xiě)入至易失性存儲(chǔ)區(qū)的第一區(qū)域。
具體的,光模塊固件升級(jí)的裝置接收到升級(jí)指令后,需要對(duì)固件進(jìn)行升級(jí),而在固件升級(jí)的過(guò)程中,固件運(yùn)行結(jié)束,此時(shí)固件占用的易失性存儲(chǔ)區(qū)的第二區(qū)域會(huì)被釋放。為了,保證第二區(qū)域內(nèi)存儲(chǔ)的固件的控制信息不被覆蓋,光模塊固件升級(jí)的裝置可以將固件的控制信息先存儲(chǔ)至專(zhuān)門(mén)的存儲(chǔ)區(qū),即為第一區(qū)域。在固件升級(jí)的過(guò)程中,Bootloader程序僅使用易失性存儲(chǔ)區(qū)的第二區(qū)域進(jìn)行相關(guān)數(shù)據(jù)的存儲(chǔ),而不會(huì)使用第一區(qū)域,從而第一區(qū)域存儲(chǔ)的固件的控制信息不會(huì)丟失。在升級(jí)完成后,在將固件的控制信息重新存入第二區(qū)域。因此,光模塊固件升級(jí)的裝置通過(guò)運(yùn)行固件從易失性存儲(chǔ)區(qū)的第二區(qū)域內(nèi)讀取固件的控制信息,并寫(xiě)入至易失性存儲(chǔ)區(qū)的第一區(qū)域。
進(jìn)一步的,接收升級(jí)指令,從易失性存儲(chǔ)區(qū)的第二區(qū)域內(nèi)讀取所述固件的控制信息,并寫(xiě)入至易失性存儲(chǔ)區(qū)的第一區(qū)域包括:接收升級(jí)指令,確定易失性存儲(chǔ)區(qū)的第一區(qū)域中是否存儲(chǔ)有固件的控制信息;如果易失性存儲(chǔ)區(qū)的第一區(qū)域中沒(méi)有存儲(chǔ)固件的控制信息,則從易失性存儲(chǔ)區(qū)的第二區(qū)域內(nèi)讀取固件的控制信息,并寫(xiě)入至易失性存儲(chǔ)區(qū)的第一區(qū)域。
即為,如果光模塊固件升級(jí)的裝置在接收到升級(jí)指令時(shí),需要將固件的控制信息存儲(chǔ)至第一區(qū)域,而在光模塊運(yùn)行過(guò)程中,可能已經(jīng)進(jìn)行過(guò)固件升級(jí),將固件的控制信息存儲(chǔ)到了第一區(qū)域中。這時(shí),無(wú)需再將固件的控制信息重新存儲(chǔ)至第一區(qū)域。因此,在接收到升級(jí)指令后,需要先檢測(cè)易失性存儲(chǔ)區(qū)的第一區(qū)域中是否存儲(chǔ)了固件的控制信息,如果沒(méi)有存儲(chǔ)固件的控制信息,則為了保證固件的控制信息在固件升級(jí)的過(guò)程中不丟失,可以從第二區(qū)域內(nèi)讀取固件的控制信息,并寫(xiě)入至易失性存儲(chǔ)區(qū)的第一區(qū)域中。
如果易失性存儲(chǔ)區(qū)的第一區(qū)域已經(jīng)存儲(chǔ)了固件的控制信息,則光模塊固件升級(jí)的裝置可以不再將第二區(qū)域內(nèi)存儲(chǔ)的固件的控制信息寫(xiě)入至易失性存儲(chǔ)區(qū)的第一區(qū)域中。當(dāng)然,為了保證固件的控制信息的時(shí)效性,也可以將第二區(qū)域內(nèi)存儲(chǔ)的固件的控制信息寫(xiě)入至易失性存儲(chǔ)區(qū)的第一區(qū)域中。
步驟405a、固件升級(jí)完成后,由運(yùn)行Bootloader程序跳轉(zhuǎn)至運(yùn)行升級(jí)后的固件,并在運(yùn)行升級(jí)后的固件的過(guò)程中,從第一區(qū)域中獲取固件的控制信息。
具體的,可參考步驟305,在此不再贅述。
步驟405b、由運(yùn)行固件跳轉(zhuǎn)至運(yùn)行Bootloader程序,通過(guò)運(yùn)行Bootloader程序,對(duì)固件升級(jí),并將固件升級(jí)過(guò)程中產(chǎn)生的緩存信息存儲(chǔ)至易失性存儲(chǔ)區(qū)的第二區(qū)域。
具體的,可參考步驟304,在此不再贅述。
步驟406b、固件升級(jí)完成后,由運(yùn)行Bootloader程序跳轉(zhuǎn)至運(yùn)行升級(jí)后的固件,并在運(yùn)行升級(jí)后的固件的過(guò)程中,從第一區(qū)域中獲取所述固件的控制信息。
具體的,在運(yùn)行升級(jí)后的固件的過(guò)程中,從第一區(qū)域中獲取所述固件的控制信息包括:在運(yùn)行升級(jí)后的固件的過(guò)程中,從易失性存儲(chǔ)區(qū)的第一區(qū)域內(nèi)讀取固件的控制信息,并寫(xiě)入至易失性存儲(chǔ)區(qū)的第二區(qū)域;如果需要固件的控制信息,則從易失性存儲(chǔ)區(qū)的第二區(qū)域內(nèi)讀取固件的控制信息。
即為,光模塊固件升級(jí)的裝置在固件升級(jí)完成后,可以從運(yùn)行Bootloader程序跳轉(zhuǎn)至運(yùn)行新的固件,即為運(yùn)行升級(jí)后的固件。由于為升級(jí)后的固件分配的易失性存儲(chǔ)區(qū)為第二區(qū)域,因此并在運(yùn)行新的固件過(guò)程中,需從易失性存儲(chǔ)區(qū)的第一區(qū)域內(nèi)讀取固件的控制信息,并寫(xiě)入至易失性存儲(chǔ)區(qū)的第二區(qū)域;如果需要固件的控制信息,則光模塊固件升級(jí)的裝置從易失性存儲(chǔ)區(qū)的第二區(qū)域內(nèi)讀取固件的控制信息。
這樣一來(lái),本發(fā)明實(shí)施例中的固件的控制信息不會(huì)在固件升級(jí)的過(guò)程中丟失,在運(yùn)行升級(jí)后的固件時(shí),可以在易失性存儲(chǔ)區(qū)的第一區(qū)域獲取到固件的控制信息,從而可以在根據(jù)固件的控制信息運(yùn)行光模塊,降低了因光模塊升級(jí)而導(dǎo)致通信業(yè)務(wù)出現(xiàn)中斷的可能性。
關(guān)于上述實(shí)施例中的裝置,其中各個(gè)模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實(shí)施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說(shuō)明。
參考圖5所示,為本發(fā)明實(shí)施例提供的一種光模塊固件升級(jí)的裝置的結(jié)構(gòu)示意圖,該裝置為光模塊的一部分。如圖5所示,該裝置500包括:一個(gè)處理器(processor)501、內(nèi)存(memory)502、電力線路503和通信線路504。
內(nèi)存502可包括高速隨機(jī)存取存儲(chǔ)器(high-speed random access memory)、磁盤(pán)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SPAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、只讀存儲(chǔ)器(ROM)、閃存或非揮發(fā)性內(nèi)存。內(nèi)存502可存儲(chǔ)用于固件升級(jí)的程序編碼,也就是說(shuō)可包括光模塊固件升級(jí)的裝置500的動(dòng)作所需的軟件模塊、指令集架構(gòu)或其之外的多種數(shù)據(jù)。此時(shí),處理器501等其他控制器與內(nèi)存502的存取可通過(guò)處理器501進(jìn)行控制。
電力線路503可向終端設(shè)備的電路元件的全部或部分供給電力。例如,電力線路503可包括如電力管理系統(tǒng)、電池或交流(AC)之一個(gè)以上的電源、充電系統(tǒng)、電源故障檢測(cè)電路(power failure detection circuit)、電力變換器或逆變器、電力狀態(tài)標(biāo)記符或用于電力生成、管理、分配的任意其他電路元件。
通信線路504可利用至少一個(gè)接口與上位機(jī)進(jìn)行通信。
處理器501通過(guò)施行存儲(chǔ)在內(nèi)存502中的軟件模塊或指令集架構(gòu)可運(yùn)行光模塊固件升級(jí)的裝置500的多種功能且處理數(shù)據(jù)。也就是說(shuō),處理器501通過(guò)運(yùn)行基本的算術(shù)、邏輯以及計(jì)算機(jī)系統(tǒng)的輸入/輸出演算,可構(gòu)成為處理計(jì)算機(jī)程序的命令。
處理器501構(gòu)成為用于運(yùn)行上述實(shí)施例中的光模塊固件升級(jí)的方法。
光模塊固件升級(jí)的裝置在接收到升級(jí)指令后,通過(guò)運(yùn)行Bootloader程序?qū)碳M(jìn)行升級(jí),并在固件升級(jí)的過(guò)程中,Bootloader程序?qū)⒔邮盏男碌墓碳彺嬷烈资源鎯?chǔ)區(qū)的第一區(qū)域,而易失性存儲(chǔ)區(qū)的第二區(qū)域存儲(chǔ)了存儲(chǔ)固件的控制信息。在光模塊固件升級(jí)的裝置升級(jí)完固件,并運(yùn)行新的固件時(shí),可以在易失性存儲(chǔ)區(qū)的第二區(qū)域獲取到固件的控制信息,從而可以根據(jù)固件的控制信息獲取用戶的設(shè)置信息,根據(jù)用戶的設(shè)置運(yùn)行光模塊,降低了因光模塊升級(jí)而導(dǎo)致通信業(yè)務(wù)出現(xiàn)中斷的可能性。
另外,參加圖6所示,為本發(fā)明實(shí)施例提供的一種光模塊的結(jié)構(gòu)示意圖。如圖6所示,該光模塊包括:光接收器601,光發(fā)射器602及微處理器603。其中,光接收器601與微處理器603連接,用于接收光纖傳輸?shù)墓庑盘?hào),并將光信號(hào)轉(zhuǎn)換為電信號(hào)。光發(fā)射器602與微處理器603連接,用于將電信號(hào)轉(zhuǎn)換為光信號(hào),并傳輸中光纖。微處理器603包括如圖5所示的光模塊固件升級(jí)的裝置500,光模塊固件升級(jí)的裝置500的內(nèi)存502中存儲(chǔ)有如上述圖3,圖4所示的方法實(shí)施例對(duì)應(yīng)的程序,從而由處理器501執(zhí)行該程序。
為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本發(fā)明時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
本領(lǐng)域技術(shù)人員在考慮說(shuō)明書(shū)及實(shí)踐這里發(fā)明的公開(kāi)后,將容易想到本發(fā)明的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本發(fā)明的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本發(fā)明的一般性原理并包括本發(fā)明未公開(kāi)的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說(shuō)明書(shū)和實(shí)施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來(lái)限制。