一種基于Bootloader的CSFP光模塊升級方法
【專利摘要】本發(fā)明公開了一種基于Bootloader的CSFP光模塊升級方法,包括:在CSFP光模塊的微控制器的FLASH區(qū)域中,開辟出Bootloader存放區(qū)域,其中存儲有Bootloader啟動程序;選擇啟動Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行升級操作。本發(fā)明使得光模塊出廠后,不必返廠使用編程器燒錄程序,即可完成程序的更新,達到兼容不同類型和要求的交換機或路由器的目的,同時,廠商通過遠程控制實現(xiàn)程序升級,或者客戶可通過光模塊總線接口進行程序升級,降低了工作量,減少了因為殼件拆卸造成的程序升級成本。
【專利說明】—種基于Bootloader的CSFP光模塊升級方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及光模塊升級,特別是涉及一種基于Bootloader的CSFP光模塊升級方法。
【背景技術(shù)】
[0002]光模塊是一種提供光電一電光轉(zhuǎn)換能力的集成化通訊配件,其內(nèi)部結(jié)構(gòu)框圖如圖1所示。其中,微控制器主要功能是提供與主機端的通訊總線硬件接口和警告、告警硬件接口。目前市場上主流光模塊均包含可編程的微控制器。CSFP光模塊是近年來一種新興的光模塊,采用與常規(guī)SFP光模塊同等大小的封裝,集成了兩個全雙工通訊光模塊,使得光模塊體積不變的條件下,數(shù)據(jù)傳輸能力增加了一倍。光模塊作為交換機、路由器的重要組件,廣泛應(yīng)用于網(wǎng)絡(luò)通訊硬件中,交換機和路由器的生產(chǎn)廠商數(shù)量眾多,知名廠商包括:思科、華為、中興、阿爾卡特、惠普、TP-LINK、D-LINK等等。雖然,IEEE和ITU等國際組織提出了標準的通訊協(xié)議,設(shè)備廠商也聯(lián)合制定了 SFF8472、INF8077I等標準協(xié)議,但各主流設(shè)備商之間,也存在諸多互不兼容的自定義標準,這導(dǎo)致了一只符合協(xié)議標準的光模塊,無法同時取得主流設(shè)備商的交換機、路由器等設(shè)備的兼容性。光模塊生產(chǎn)商為了讓光模塊獲得某設(shè)備的兼容性,往往單獨開發(fā)符合該設(shè)備要求的微控制器程序,且這一階段是在光模塊出廠前完成。
[0003]普通的光模塊,在出廠之后,其內(nèi)部程序不可以直接更改,必須返回工廠,針對不同的微控制器型號,使用專用的編程器對微控制器進行程序燒錄。由于程序燒錄會破壞現(xiàn)有程序和數(shù)據(jù),因此相當于再次對該光模塊進行了生產(chǎn),這樣的解決方案浪費時間精力,維護周期長,極其繁瑣。如圖2所示為普通光模塊返廠程序升級流程圖。由于外殼的拆卸,有可能造成產(chǎn)品性能參數(shù)的改變,因此需要再次對光模塊性能做測試。這會引入極大的工作量,且因殼件拆卸,會造成一定比例的物料損壞,也大大增加了程序升級的成本。部分光模塊生產(chǎn)廠商,通過電路板的設(shè)計,避開了光模塊殼件拆卸和編程線纜的連接問題,但必須搭配其特制的程序升級電路板,也使得客戶無法自行或無法在遠程協(xié)助下完成程序升級。同時,此類電路的設(shè)計,會帶來成本的增加,且降低光模塊可靠性。
[0004]Bootloader是嵌入式系統(tǒng)在加電后執(zhí)行的第一段代碼,在它完成CPU和相關(guān)硬件的初始化之后,再將操作系統(tǒng)映像或固化的嵌入式應(yīng)用程序裝在到內(nèi)存中然后跳轉(zhuǎn)到操作系統(tǒng)所在的空間,啟動操作系統(tǒng)運行。在嵌入式操作系統(tǒng)中,BootLoader是在操作系統(tǒng)內(nèi)核運行之前運行??梢猿跏蓟布O(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒有像B1S那樣的固件程序(注,有的嵌入式CPU也會內(nèi)嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務(wù)就完全由BootLoader來完成。
[0005]目前,Bootloader適用于專用的嵌入式環(huán)境,例如其廣泛應(yīng)用于GNU/Linux系統(tǒng)。一個嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃樗膫€層次:
[0006]1、引導(dǎo)加載程序。包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。
[0007]2、Linux內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動參數(shù)。
[0008]3、文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設(shè)備之上文件系統(tǒng)。通常用ramdisk 來作為 rootfs。
[0009]4、用戶應(yīng)用程序。特定于用戶的應(yīng)用程序。有時在用戶應(yīng)用程序和內(nèi)核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式⑶I有:MicroWindows和Mini⑶I等。
[0010]但是,Bootloader目前尚只在一些大型軟件項目或系統(tǒng)中使用,比如個人計算機(PC),手機操作系統(tǒng),智能交換機操作系統(tǒng),電視機機頂盒操作系統(tǒng)等;在一些小型軟件系統(tǒng)或單片微機系統(tǒng)領(lǐng)域,幾乎沒有使用Bootloader的先例。Bootloader本身對于系統(tǒng)硬件的依賴性很高,往往特定的硬件需要搭配特定的Bootloader程序。
[0011]基于Bootloader程序,用戶可以使用給定的軟件接口,對現(xiàn)有軟件進行升級。廠商也可以通過網(wǎng)絡(luò)遠程進行軟件升級。
【發(fā)明內(nèi)容】
[0012]本發(fā)明的目的是克服現(xiàn)有技術(shù)缺陷,提供一種基于Bootloader的CSFP光模塊升級方法,其使得光模塊出廠后,不必返廠,即可完成程序的更新,達到兼容不同類型和要求的交換機或路由器的目的,并且可實現(xiàn)廠商通過遠程控制,完成程序升級,或者客戶通過光模塊總線接口進行程序升級。
[0013]本發(fā)明的目的是提供一種基于Bootloader的CSFP光模塊升級方法,其包括:
[0014]在CSFP光模塊的微控制器的FLASH區(qū)域中,開辟出Bootloader存放區(qū)域,其中存儲有Bootloader啟動程序;
[0015]選擇啟動Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行升級操作。所述CSFP光模塊的微控制器的FLASH區(qū)域,專門開辟一個Bootloader存放區(qū)域,用于存儲Bootloader啟動程序,這樣當需要使用所述的Bootloader啟動程序進行程序升級時,通過相關(guān)指令進入所述的Bootloader啟動程序這一模式即可。本發(fā)明通過在CSFP光模塊的微控制器的FLASH區(qū)域中存儲Bootloader啟動程序,實現(xiàn)對所述FLASH區(qū)域中的程序代碼區(qū)域內(nèi)的數(shù)據(jù)進行升級,不必進行對光模塊返廠進行數(shù)據(jù)升級,也不必對光模塊進行拆裝,消除了對光模塊因為拆裝造成的不必要損害,縮短了維護周期,降低了程序升級的成本。
[0016]優(yōu)選的是,其中,所述CSFP光模塊設(shè)置有IIC接口,系統(tǒng)通過遠程訪問IIC接口來啟動Bootloader,執(zhí)行升級操作。所述IIC接口是所述CSFP光模塊都設(shè)置有的接口,并且所述的lie接口都使用同一標準,這樣通過過遠程訪問IIC接口來啟動Bootloader簡單方便,并且不增加生產(chǎn)成本,并可實現(xiàn)遠程訪問的功能。
[0017]優(yōu)選的是,其中,選擇啟動Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行升級操作包括以下步驟:
[0018]1)在微控制器中寫入“BOOT”的ASCII碼,啟動Bootloader ;
[0019]2)將新的程序數(shù)據(jù)寫入FLASH區(qū)域中的程序代碼區(qū)域;
[0020]3)讀出寫入的新程序數(shù)據(jù),與目標程序數(shù)據(jù)進行比對;
[0021]4)如果正確,則運行新程序數(shù)據(jù),完成升級;如果不正確,則重復(fù)步驟2)和3),直到正確為止。
[0022]所述步驟1)中通過在微控制器中寫入“BOOT”的ASCII碼,啟動Bootloader,這種啟動Bootloader的方式當進行程序升級時,可以通過廠商的遠程控制方式完成或有客戶來完成,操作簡單并且可實現(xiàn)遠程控制,所述步驟3)和4)實現(xiàn)對寫入的新程序數(shù)據(jù)與目標程序數(shù)據(jù)進行比對,達到保證寫入的新程序數(shù)據(jù)就是所要寫入的目標程序。
[0023]優(yōu)選的是,其中,所述步驟2)中包括:
[0024]2.1)查找待寫入新程序數(shù)據(jù)的FLASH區(qū)域中的映射地址;
[0025]2.2)將新程序數(shù)據(jù)中的512字節(jié)數(shù)據(jù)寫入微處理器的緩沖區(qū);
[0026]2.3)根據(jù)查找到的映射地址,擦除對應(yīng)的FLASH區(qū)域中的原始程序;
[0027]2.4)將緩沖區(qū)內(nèi)的新程序數(shù)據(jù)寫入根據(jù)映射地址對應(yīng)的FLASH區(qū)域中;
[0028]2.5)反復(fù)執(zhí)行步驟2.2)-2.4)直到將所有新程序數(shù)據(jù)全部寫入對應(yīng)的FLASH區(qū)域中。
[0029]所述步驟2.1)、2.2)、2.3)、2.4)完成新程序?qū)懭氲綄?yīng)的FLASH區(qū)域中,并且擦除了對應(yīng)的FLASH區(qū)域中的原始程序,既完成了對新數(shù)據(jù)的寫入,又不改變原來的數(shù)據(jù)大小。
[0030]優(yōu)選的是,其中,所述步驟3)中包括:
[0031]3.1)查找寫入了新程序數(shù)據(jù)的FLASH區(qū)域中的映射地址;
[0032]3.2)根據(jù)查找到的映射地址,將對應(yīng)的FLASH區(qū)域中的新程序數(shù)據(jù)讀取到緩沖區(qū);
[0033]3.3)在緩沖區(qū)中讀出新程序數(shù)據(jù)中的512字節(jié)數(shù)據(jù),與目標程序數(shù)據(jù)進行比對,以校驗寫入程序的正確性;
[0034]3.4)反復(fù)執(zhí)行步驟3.3),直到完成校驗。
[0035]所述步驟3.1)、3.2)、3.3)執(zhí)行對新寫入程序的校驗功能,保證寫入新程序就是目標程序。
[0036]優(yōu)選的是,其中,所述Bootloader啟動程序占用CSFP光模塊的IIC從機地址為Α0Η、A2H。所述IIC從機地址Α0Η、A2H為所述CSFP光模塊的固有功能結(jié)構(gòu),通過使用所述IIC從機地址Α0Η、A2H,不增加另外的配件,降低了成本。
[0037]優(yōu)選的是,其中,所述A2H區(qū)域的120、121、和122字節(jié)作為自定義Bootloader的控制字節(jié);使用123、124、125、和126字節(jié)作為進入Bootloader模式的密碼控制字節(jié);使用高128位的頁0xFC、0xFD、0xFE、0xFF四個頁地址作為Bootloader升級的數(shù)據(jù)緩沖區(qū)。通過對所述CSFP光模塊A2H區(qū)域的重新定義分配,實現(xiàn)了新的功能,且不增加新的開發(fā)成本,節(jié)約了資源。
[0038]優(yōu)選的是,其中,所述123-126字節(jié)為寫入“BOOT”的ASCII碼;121_122字節(jié)為FLASH映射地址字節(jié);120字節(jié)為Bootloader控制字節(jié),命令有:‘E’擦除微控制器的程序儲存區(qū),‘W’將緩沖區(qū)數(shù)據(jù)寫入微控制器對應(yīng)的FLASH區(qū)域,‘R’讀取微控制器對應(yīng)的FLASH區(qū)域數(shù)據(jù)至緩沖區(qū),‘S’開始運行應(yīng)用程序;高128位,按頁映射緩沖區(qū),OxFC頁,映射緩沖區(qū)0x000-0x07F字節(jié);0xFD頁,映射緩沖區(qū)0x080-0x0FF字節(jié);0xFE頁,映射緩沖區(qū)0xl00-0xl7F字節(jié);0xFF頁,映射緩沖區(qū)0xl80_0xlFF字節(jié)。所述123-126字節(jié)為寫入“BOOT”的ASCII碼,通過寫入“BOOT”的ASCII碼,實現(xiàn)啟動Bootloader的功能;所述121-122字節(jié)為FLASH映射地址字節(jié),實現(xiàn)對寫入程序和目標程序的校驗功能;所述120字節(jié)為Bootloader控制字節(jié),實現(xiàn)對新程序的寫入和讀取功能,完成對微控制器的程序儲存區(qū)原有程序的擦除功能;所述高128位,作為按頁映射緩沖區(qū),實現(xiàn)對數(shù)據(jù)的臨時存放功能。實現(xiàn)了對所述Bootloader啟動程序進行啟動,完成了對新數(shù)據(jù)的校驗,最終實現(xiàn)對程序的升級,簡單易行,可靠性高,且廠商數(shù)據(jù)和產(chǎn)品數(shù)據(jù)不受程序更新的影響。
[0039]本發(fā)明的有益效果在于:
[0040]1、本發(fā)明中遠程訪問IIC接口來啟動Bootloader,執(zhí)行升級操作,實現(xiàn)了光模塊出廠后,不必返廠使用編程器燒錄程序,根據(jù)交換機、路由器的不同,升級光模塊內(nèi)部程序,達到兼容不同類型和要求的交換機或路由器的目的。
[0041]2、本發(fā)明中在CSFP光模塊的微控制器的FLASH區(qū)域中,開辟出Bootloader存放區(qū)域,將Bootloader啟動程序存儲在微控制器的FLASH區(qū)域,形成一個整體。
[0042]3、本發(fā)明中廠商通過遠程控制,實現(xiàn)程序升級,或者客戶可通過光模塊總線接口進行程序升級,降低了工作量,減少了因為殼件拆卸造成的程序升級成本。
[0043]4、本發(fā)明中廠商通過遠程進行程序,將保留光模塊的現(xiàn)有廠商、用戶數(shù)據(jù),不會造成有效數(shù)據(jù)丟失或調(diào)測試參數(shù)丟失。
【專利附圖】
【附圖說明】
[0044]圖1為光模塊內(nèi)部結(jié)構(gòu)框圖;
[0045]圖2為普通光模塊返廠程序升級流程圖;
[0046]圖3為微控制器Bootloader程序工作流程圖;
[0047]圖4為微控制器C8051F330內(nèi)部FLASH規(guī)劃圖。
【具體實施方式】
[0048]下面結(jié)合附圖對本發(fā)明做進一步的詳細說明,以令本領(lǐng)域技術(shù)人員參照說明書文字能夠據(jù)以實施。
[0049]本發(fā)明所述基于Bootloader的CSFP光模塊升級方法包括:
[0050]在CSFP光模塊的微控制器的FLASH區(qū)域中,開辟出Bootloader存放區(qū)域,其中存儲有Bootloader啟動程序;
[0051]選擇啟動Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行升級操作。所述CSFP光模塊的微控制器的FLASH區(qū)域,專門開辟一個Bootloader存放區(qū)域,用于存儲Bootloader啟動程序,這樣當需要使用所述的Bootloader啟動程序進行程序升級時,通過相關(guān)指令進入所述的Bootloader啟動程序這一模式即可。本發(fā)明通過在CSFP光模塊的微控制器的FLASH區(qū)域中存儲Bootloader啟動程序,實現(xiàn)對所述FLASH區(qū)域中的程序代碼區(qū)域內(nèi)的數(shù)據(jù)進行升級,不必進行對光模塊返廠進行數(shù)據(jù)升級,也不必對光模塊進行拆裝,消除了對光模塊因為拆裝造成的不必要損害,縮短了維護周期,降低了程序升級的成本。
[0052]在其中一個實施例中,所述CSFP光模塊設(shè)置有IIC接口,系統(tǒng)通過遠程訪問IIC接口來啟動Bootloader,執(zhí)行升級操作。所述IIC接口是所述CSFP光模塊都設(shè)置有的接口,并且所述的IIC接口都使用同一標準,這樣通過過遠程訪問IIC接口來啟動Bootloader簡單方便,并且不增加生產(chǎn)成本,并可實現(xiàn)遠程訪問的功能。
[0053]在其中一個實施例中,如圖3所示,選擇啟動Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行升級操作包括以下步驟:
[0054]I)在微控制器中寫入“BOOT”的ASCII碼,啟動Bootloader ;
[0055]2)將新的程序數(shù)據(jù)寫入FLASH區(qū)域中的程序代碼區(qū)域;
[0056]3)讀出寫入的新程序數(shù)據(jù),與目標程序數(shù)據(jù)進行比對;
[0057]4)如果正確,則運行新程序數(shù)據(jù),完成升級;如果不正確,則重復(fù)步驟2)和3),直到正確為止。
[0058]所述步驟I)中通過在微控制器中寫入“BOOT”的ASCII碼,啟動Bootloader,這種啟動Bootloader的方式當進行程序升級時,可以通過廠商的遠程控制方式完成或有客戶來完成,操作簡單并且可實現(xiàn)遠程控制,所述步驟3)和4)實現(xiàn)對寫入的新程序數(shù)據(jù)與目標程序數(shù)據(jù)進行比對,達到保證寫入的新程序數(shù)據(jù)就是所要寫入的目標程序。
[0059]在其中一個實施例中,如圖4所示為微控制器C8051F330內(nèi)部FLASH規(guī)劃圖,所述步驟2)中包括:
[0060]2.1)查找待寫入新程序數(shù)據(jù)的FLASH區(qū)域中的映射地址;
[0061]2.2)將新程序數(shù)據(jù)中的512字節(jié)數(shù)據(jù)寫入微處理器的緩沖區(qū);
[0062]2.3)根據(jù)查找到的映射地址,擦除對應(yīng)的FLASH區(qū)域中的原始程序;
[0063]2.4)將緩沖區(qū)內(nèi)的新程序數(shù)據(jù)寫入根據(jù)映射地址對應(yīng)的FLASH區(qū)域中;
[0064]2.5)反復(fù)執(zhí)行步驟2.2)-2.4)直到將所有新程序數(shù)據(jù)全部寫入對應(yīng)的FLASH區(qū)域中。
[0065]所述步驟2.1)、2.2)、2.3)、2.4)完成新程序?qū)懭氲綄?yīng)的FLASH區(qū)域中,并且擦除了對應(yīng)的FLASH區(qū)域中的原始程序,既完成了對新數(shù)據(jù)的寫入,又不改變原來的數(shù)據(jù)大小。
[0066]在其中一個實施例中,所述步驟3)中包括:
[0067]3.1)查找寫入了新程序數(shù)據(jù)的FLASH區(qū)域中的映射地址;
[0068]3.2)根據(jù)查找到的映射地址,將對應(yīng)的FLASH區(qū)域中的新程序數(shù)據(jù)讀取到緩沖區(qū);
[0069]3.3)在緩沖區(qū)中讀出新程序數(shù)據(jù)中的512字節(jié)數(shù)據(jù),與目標程序數(shù)據(jù)進行比對,以校驗寫入程序的正確性;
[0070]3.4)反復(fù)執(zhí)行步驟3.3),直到完成校驗。
[0071]所述步驟3.1),3.2),3.3)執(zhí)行對新寫入程序的校驗功能,保證寫入新程序就是目標程序。
[0072]在其中一個實施例中,所述Bootloader啟動程序占用CSFP光模塊的IIC從機地址為A0H、A2H。所述IIC從機地址A0H、A2H為所述CSFP光模塊的固有功能結(jié)構(gòu),通過使用所述IIC從機地址A0H、A2H,不增加另外的配件,降低了成本。
[0073]在其中一個實施例中,所述A2H區(qū)域的120、121、和122字節(jié)作為自定義Bootloader的控制字節(jié);使用123、124、125、和126字節(jié)作為進入Bootloader模式的密碼控制字節(jié);使用高128位的頁OxFC、OxFD、OxFE、OxFF四個頁地址作為Bootloader升級的數(shù)據(jù)緩沖區(qū)。通過對所述CSFP光模塊A2H區(qū)域的重新定義分配,實現(xiàn)了新的功能,且不增加新的開發(fā)成本,節(jié)約了資源。
[0074]在其中一個實施例中,所述123-126字節(jié)為寫入“BOOT”的ASCII碼;121-122字節(jié)為FLASH映射地址字節(jié);120字節(jié)為Bootloader控制字節(jié),命令有:‘E’擦除微控制器的程序儲存區(qū),‘W’將緩沖區(qū)數(shù)據(jù)寫入微控制器對應(yīng)的FLASH區(qū)域,‘R’讀取微控制器對應(yīng)的FLASH區(qū)域數(shù)據(jù)至緩沖區(qū),‘S’開始運行應(yīng)用程序;高128位,按頁映射緩沖區(qū),OxFC頁,映射緩沖區(qū)0x000-0x07F字節(jié);0xFD頁,映射緩沖區(qū)0x080-0x0FF字節(jié);0xFE頁,映射緩沖區(qū)0xl00-0xl7F字節(jié);0xFF頁,映射緩沖區(qū)0xl80_0xlFF字節(jié)。所述123-126字節(jié)為寫入“BOOT,,的ASCII碼,通過寫入“BOOT”的ASCII碼,實現(xiàn)啟動Bootloader的功能;所述121-122字節(jié)為FLASH映射地址字節(jié),實現(xiàn)對寫入程序和目標程序的校驗功能;所述120字節(jié)為Bootloader控制字節(jié),實現(xiàn)對新程序的寫入和讀取功能,完成對微控制器的程序儲存區(qū)原有程序的擦除功能;所述高128位,作為按頁映射緩沖區(qū),實現(xiàn)對數(shù)據(jù)的臨時存放功能。實現(xiàn)了對所述Bootloader啟動程序進行啟動,完成了對新數(shù)據(jù)的校驗,最終實現(xiàn)對程序的升級,簡單易行,可靠性高,且保留光模塊的現(xiàn)有廠商、用戶數(shù)據(jù),不會造成有效數(shù)據(jù)丟失或調(diào)測試參數(shù)丟失。
[0075]盡管本發(fā)明的實施方案已公開如上,但其并不僅僅限于說明書和實施方式中所列運用,它完全可以被適用于各種適合本發(fā)明的領(lǐng)域,對于熟悉本領(lǐng)域的人員而言,可容易地實現(xiàn)另外的修改,因此在不背離權(quán)利要求及等同范圍所限定的一般概念下,本發(fā)明并不限于特定的細節(jié)和這里示出與描述的圖例。
【權(quán)利要求】
1.一種基于Bootloader的CSFP光模塊升級方法,其特征在于,包括以下步驟: 在CSFP光模塊的微控制器的FLASH區(qū)域中,開辟出Bootloader存放區(qū)域,其中存儲有Bootloader啟動程序; 選擇啟動Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行升級操作。
2.如權(quán)利要求1所述的基于Bootloader的CSFP光模塊升級方法,其特征在于, 所述CSFP光模塊設(shè)置有IIC接口,系統(tǒng)通過遠程訪問IIC接口來啟動Bootloader,執(zhí)行升級操作。
3.如權(quán)利要求2所述的基于Bootloader的CSFP光模塊升級方法,其特征在于,選擇啟動Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行升級操作包括以下步驟: 1)在微控制器中寫入“BOOT”的ASCII碼,啟動Bootloader; 2)將新的程序數(shù)據(jù)寫入FLASH區(qū)域中的程序代碼區(qū)域; 3)讀出寫入的新程序數(shù)據(jù),與目標程序數(shù)據(jù)進行比對; 4)如果正確,則運行新程序數(shù)據(jù),完成升級;如果不正確,則重復(fù)步驟2)和3),直到正確為止。
4.如權(quán)利要求3所述的基于Bootloader的CSFP光模塊升級方法,其特征在于, 所述步驟2)中包括: 2.1)查找待寫入新程序數(shù)據(jù)的FLASH區(qū)域中的映射地址; 2.2)將新程序數(shù)據(jù)中的512字節(jié)數(shù)據(jù)寫入微處理器的緩沖區(qū); 2.3)根據(jù)查找到的映射地址,擦除對應(yīng)的FLASH區(qū)域中的原始程序; 2.4)將緩沖區(qū)內(nèi)的新程序數(shù)據(jù)寫入根據(jù)映射地址對應(yīng)的FLASH區(qū)域中; 2.5)反復(fù)執(zhí)行步驟2.2)-2.4)直到將所有新程序數(shù)據(jù)全部寫入對應(yīng)的FLASH區(qū)域中。
5.如權(quán)利要求4所述的基于Bootloader的CSFP光模塊升級方法,其特征在于, 所述步驟3)中包括: 3.1)查找寫入了新程序數(shù)據(jù)的FLASH區(qū)域中的映射地址; 3.2)根據(jù)查找到的映射地址,將對應(yīng)的FLASH區(qū)域中的新程序數(shù)據(jù)讀取到緩沖區(qū); 3.3)在緩沖區(qū)中讀出新程序數(shù)據(jù)中的512字節(jié)數(shù)據(jù),與目標程序數(shù)據(jù)進行比對,以校驗寫入程序的正確性; 3.4)反復(fù)執(zhí)行步驟3.3),直到完成校驗。
6.如權(quán)利要求5所述的基于Bootloader的CSFP光模塊升級方法,其特征在于,所述Bootloader啟動程序占用CSFP光模塊的IIC從機地址為AOH、A2H。
7.如權(quán)利要求6所述的基于Bootloader的CSFP光模塊升級方法,其特征在于,所述A2H區(qū)域的120、121、和122字節(jié)作為自定義Bootloader的控制字節(jié);使用123、124、125、和126字節(jié)作為進入Bootloader模式的密碼控制字節(jié);使用高128位的頁0xFC、0xFD、0xFE、OxFF四個頁地址作為Bootloader升級的數(shù)據(jù)緩沖區(qū)。
8.如權(quán)利要求7所述的基于Bootloader的CSFP光模塊升級方法,其特征在于,所述123-126字節(jié)寫入“BOOT”的ASCII碼;121-122字節(jié)為FLASH映射地址字節(jié);120字節(jié)為Bootloader控制字節(jié),命令有:?’擦除微控制器的程序儲存區(qū),‘W’將緩沖區(qū)數(shù)據(jù)寫入微控制器對應(yīng)的FLASH區(qū)域,‘R’讀取微控制器對應(yīng)的FLASH區(qū)域數(shù)據(jù)至緩沖區(qū),‘S’開始運行應(yīng)用程序;高128位,按頁映射緩沖區(qū),OxFC頁,映射緩沖區(qū)0X000-0X07F字節(jié);0xFD頁,
。櫨il.&TX0-08TX0Μ殳1£謹 ^ ΗΗΧΟΚ 櫨il.Ηζτχοιοοτχο ^§s ^ 3?°櫨il.Ηδχο-Οοοοχο ^§s同 2/2 cj_ 玲 狀 r-ψ ν 6ε9?940? ζο
【文檔編號】G06F9/445GK104461639SQ201410768456
【公開日】2015年3月25日 申請日期:2014年12月12日 優(yōu)先權(quán)日:2014年12月12日
【發(fā)明者】范巍, 侯羿 申請人:四川華拓光通信股份有限公司