一種基于Bootloader的XFP光模塊升級方法
【專利摘要】本發(fā)明公開了一種基于Bootloader的XFP光模塊升級方法,包括以下步驟:在XFP光模塊的微控制器的FLASH區(qū)域中,開辟出Bootloader存放區(qū)域,其中存儲有Bootloader啟動程序;選擇啟動Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內的數(shù)據執(zhí)行升級操作。用戶可以根據目標交換機、路由器的不同,通過光模塊總線接口進行軟件升級,也可以通過網絡進行遠程控制升級,使其達到兼容的目的,而不必返廠使用編程器燒錄程序,不會造成有效數(shù)據丟失或調測試參數(shù)丟失,是解決升級光模塊微控制器程序的有效解決方案。
【專利說明】-種基于Bootloader的XFP光模塊升級方法
【技術領域】
[0001] 本發(fā)明涉及通訊【技術領域】,尤其涉及一種基于Bootloader的XFP光模塊升級方 法。
【背景技術】
[0002] 光模塊是一種提供光電一電光轉換能力的集成化通訊配件,其內部結構框圖如圖 1所示。其中,微控制器主要功能是提供與主機端的通訊總線硬件接口和警告、告警硬件接 口。目前市場上主流光模塊均包含可編程的微控制器。XFP光模塊,是10G速率的市場主流 光模塊,常見于萬兆級網絡通訊。
[0003] 光模塊作為交換機、路由器的重要組件,廣泛應用于網絡通訊硬件中。交換機和 路由器的生產廠商數(shù)量眾多,知名廠商包括:思科、華為、中興、阿爾卡特、惠普、TP-LINK、 D-LINK等等。雖然,IEEE和ITU等國際組織提出了標準的通訊協(xié)議,設備廠商也聯(lián)合制定 了 SFF8472、INF8077I等標準協(xié)議,但各主流設備商之間,也存在諸多互不兼容的自定義標 準,這導致了一只符合協(xié)議標準的光模塊,無法同時取得主流設備商的交換機、路由器等設 備的兼容性。光模塊生產商為了讓光模塊獲得某設備的兼容性,往往單獨開發(fā)符合該設備 要求的微控制器程序,且這一階段是在光模塊出廠前完成。
[0004] Bootloader是嵌入式系統(tǒng)在加電后執(zhí)行的第一段代碼,在它完成CPU和相關硬件 的初始化之后,再將操作系統(tǒng)映像或固化的嵌入式應用程序裝在到內存中然后跳轉到操作 系統(tǒng)所在的空間,啟動操作系統(tǒng)運行。在嵌入式操作系統(tǒng)中,BootLoader是在操作系統(tǒng)內 核運行之前運行,可以初始化硬件設備、建立內存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶 到一個合適狀態(tài),以便為最終調用操作系統(tǒng)內核準備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常 并沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內嵌一段短小的啟動程序),因此 整個系統(tǒng)的加載啟動任務就完全由BootLoader來完成。
[0005] 目前,Bootloader適用于專用的嵌入式環(huán)境,例如其廣泛應用于GNU/Linux系統(tǒng)。 一個嵌入式Linux系統(tǒng)從軟件的角度看通常可以分為四個層次:
[0006] 1、引導加載程序。包括固化在固件(firmware)中的boot代碼(可選),和 BootLoader兩大部分。
[0007] 2、Linux內核。特定于嵌入式板子的定制內核以及內核的啟動參數(shù)。
[0008] 3、文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內存設備之上文件系統(tǒng)。通常用 ramdisk 來作為 rootfs〇
[0009] 4、用戶應用程序。特定于用戶的應用程序。有時在用戶應用程序和內核層之間可 能還會包括一個嵌入式圖形用戶界面。常用的嵌入式⑶I有:MicroWindows和Mini⑶I等。
[0010] 但是,Bootloader目前尚只在一些大型軟件項目或系統(tǒng)中使用,比如個人計算機 (PC),手機操作系統(tǒng),智能交換機操作系統(tǒng),電視機機頂盒操作系統(tǒng)等;在一些小型軟件系 統(tǒng)或單片微機系統(tǒng)領域,幾乎沒有使用Bootloader的先例。Bootloader本身對于系統(tǒng)硬件 的依賴性很高,往往特定的硬件需要搭配特定的Bootloader程序。
[0011] 基于Bootloader,用戶可以使用給定的軟件接口,對現(xiàn)有軟件進行升級。廠商也可 以通過網絡遠程進行軟件升級。
[0012] 普通的XFP光模塊,在出廠之后,其內部程序不可以直接更改,必須返回工廠,針 對不同的微控制器型號,使用專用的編程器對微控制器進行程序燒錄。由于程序燒錄會破 壞現(xiàn)有程序和數(shù)據,因此相當于再次對該光模塊進行了生產,這樣的解決方案浪費時間精 力,維護周期長,極其繁瑣。
[0013] 普通的光模塊返廠程序升級流程如圖2所示。由于外殼的拆卸,有可能造成產品 性能參數(shù)的改變,因此需要再次對光模塊性能做測試。這會引入極大的工作量,且因殼件拆 卸,會造成一定比例的物料損壞,也大大增加了程序升級的成本。
[0014] 部分光模塊生產廠商,通過電路板的設計,避開了光模塊殼件拆卸和編程線纜的 連接問題,但必須搭配其特制的程序升級電路板,也使得客戶無法自行或無法在遠程協(xié)助 下完成程序升級。同時,此類電路的設計,會帶來成本的提升,且降低光模塊可靠性。
【發(fā)明內容】
[0015] 本發(fā)明的一個目的是針對現(xiàn)有技術的不足,提供一種基于Bootloader的XFP光模 塊升級方法,通過將Bootloader移植于XFP光模塊微控制器內,可通過光模塊總線接口進 行軟件升級,也可通過網絡對光模塊的微控制器程序進行遠程升級。
[0016] 本發(fā)明還有一個目的是提供一種將Bootloader移植于XFP光模塊微控制器內的 方法,可以廣泛應用于各類含有微控制器的光模塊。
[0017] 本發(fā)明的技術方案為:
[0018] 一種基于Bootloader的XFP光模塊升級方法,包括以下步驟:
[0019] 在XFP光模塊的微控制器的FLASH區(qū)域中,開辟出Bootloader存放區(qū)域,其中存 儲有Bootloader啟動程序;
[0020] 選擇啟動Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內的數(shù)據執(zhí)行升級操作。
[0021] 優(yōu)選的是,所述的基于Bootloader的XFP光模塊升級方法中,所述XFP光模塊設 置有IIC接口,系統(tǒng)通過遠程訪問IIC接口來啟動Bootloader,執(zhí)行升級操作。
[0022] 優(yōu)選的是,所述的基于Bootloader的XFP光模塊升級方法中,選擇啟動 Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內的數(shù)據執(zhí)行升級操作包括以下步驟:
[0023] 1)在微控制器中寫入"BOOT"的ASCII碼,啟動Bootloader ;
[0024] 2)將新的程序數(shù)據寫入FLASH區(qū)域中的程序代碼區(qū)域;
[0025] 3)讀出寫入的新程序數(shù)據,與目標程序數(shù)據進行比對;
[0026] 4)如果正確,則運行新程序數(shù)據,完成升級;如果不正確,則重復步驟2)和3),直 到正確為止。
[0027] 優(yōu)選的是,所述的基于Bootloader的XFP光模塊升級方法中,所述步驟2)中包 括:
[0028] 2. 1)查找待寫入新程序數(shù)據的FLASH區(qū)域中的映射地址;
[0029] 2. 2)將新程序數(shù)據中的512字節(jié)數(shù)據寫入微處理器的緩沖區(qū);
[0030] 2. 3)根據查找到的映射地址,擦除對應的FLASH區(qū)域中的原始程序;
[0031] 2. 4)將緩沖區(qū)內的新程序數(shù)據寫入根據映射地址對應的FLASH區(qū)域中;
[0032] 2. 5)反復執(zhí)行步驟2. 2)-2. 4)直到將所有新程序數(shù)據全部寫入對應的FLASH區(qū)域 中。
[0033] 優(yōu)選的是,所述的基于Bootloader的XFP光模塊升級方法中,所述步驟3)中包 括:
[0034] 3. 1)查找寫入了新程序數(shù)據的FLASH區(qū)域中的映射地址;
[0035] 3. 2)根據查找到的映射地址,將對應的FLASH區(qū)域中的新程序數(shù)據讀取到緩沖 區(qū);
[0036] 3. 3)在緩沖區(qū)中讀出新程序數(shù)據中的512字節(jié)數(shù)據,與目標程序數(shù)據進行比對, 以校驗寫入程序的正確性;
[0037] 3. 4)反復執(zhí)行步驟3. 3),直到完成校驗。
[0038] 優(yōu)選的是,所述的基于Bootloader的XFP光模塊升級方法中,所述Bootloader啟 動程序占用XFP光模塊的IIC從機地址為Α0Η。
[0039] 優(yōu)選的是,所述的基于Bootloader的XFP光模塊升級方法中,所述AOH區(qū)域的98、 99、和107字節(jié)作為自定義Bootloader的控制字節(jié);使用123、124、125和126字節(jié)作為進 入Bootloader模式的密碼控制字節(jié);使用高128位的頁0xFC、0xFD、0xFE和OxFF四個頁地 址作為Bootloader升級的數(shù)據緩沖區(qū)。
[0040] 優(yōu)選的是,所述的基于Bootloader的XFP光模塊升級方法中,所述123-126字 節(jié)寫入"BOOT"的ASCII碼;98-99字節(jié)為FLASH映射地址字節(jié);107字節(jié)為Bootloader 控制字節(jié),命令有:'E'擦除微控制器的程序儲存區(qū),'W'將緩沖區(qū)數(shù)據寫入微控制器對 應的FLASH區(qū)域,'R'讀取微控制器對應的FLASH區(qū)域數(shù)據至緩沖區(qū),'S'開始運行應用 程序;高128位,按頁映射緩沖區(qū),OxFC頁,映射緩沖區(qū)〇 X〇0〇-〇X〇7F字節(jié);ΟχΠ )頁,映射 緩沖區(qū)0x080-0x0FF字節(jié);OxFE頁,映射緩沖區(qū)0xl00-0xl7F字節(jié);OxFC頁,映射緩沖區(qū) 0xl80-0xlFF 字節(jié)。
[0041] 本發(fā)明具有以下有益效果:本發(fā)明通過將Bootloader移植于XFP光模塊微控制器 內,用戶可以通過光模塊總線接口進行軟件升級,也可以通過網絡進行遠程控制升級,可以 根據目標交換機、路由器的不同,來升級光模塊內部程序,使其達到兼容的目的,而不必返 廠使用編程器燒錄程序,同時,無須借助任何編程線纜,也不用拆卸光模塊殼件,光模塊升 級技術將保留光模塊的現(xiàn)有廠商、用戶數(shù)據,不會造成有效數(shù)據丟失或調測試參數(shù)丟失,是 解決升級光模塊微控制器程序的有效解決方案。
【專利附圖】
【附圖說明】:
[0042] 圖1為本發(fā)明中所述的光模塊的內部結構框圖;
[0043] 圖2為一般的光模塊返廠程序升級流程圖;
[0044] 圖3為本發(fā)明所述的XFP光模塊硬件連接示意圖;
[0045] 圖4為INF-8077i定義的AOH寄存器結構圖;
[0046] 圖5為本發(fā)明所述的微控制器C8051F330內部FLASH規(guī)劃圖;
[0047] 圖6為本發(fā)明所述的微控制器Bootloader程序工作流程圖。
【具體實施方式】:
[0048] 下面結合附圖對本發(fā)明做進一步的詳細說明,以令本領域技術人員參照說明書文 字能夠據以實施。
[0049] -種基于Bootloader的XFP光模塊升級方法,包括以下步驟:
[0050] 在XFP光模塊的微控制器的FLASH區(qū)域中,開辟出Bootloader存放區(qū)域,其中存 儲有Bootloader啟動程序;
[0051] 選擇啟動Bootloader,對FLASH區(qū)域中的程序代碼區(qū)域內的數(shù)據執(zhí)行升級操作。 光模塊是一種提供光電一電光轉換能力的集成化通訊配件,所述光模塊的內部結構框圖如 圖1所示。普通的XFP光模塊,在出廠之后,其內部程序不可以直接更改,必須返回工廠,針 對不同的微控制器型號,使用專用的編程器對微控制器進行程序燒錄,普通的光模塊返廠 程序升級流程如圖2所示。本發(fā)明中,通過將Boot loader啟動程序存儲到微控制器的FLASH 的一定區(qū)域中,客戶可以通過光模塊總線接口進行軟件升級,無須拆卸殼件或使用特殊的 下載線纜;也可以由廠商通過網絡進行遠程控制升級,這使得光模塊出廠后,不必返廠,即 可完成程序的更新,以達到兼容不同類型和要求的交換機的目的。
[0052] 所述的基于Bootloader的XFP光模塊升級方法中,所述XFP光模塊設置有IIC接 口,系統(tǒng)通過遠程訪問IIC接口來啟動Bootloader,執(zhí)行升級操作。本發(fā)明將Bootloader 移植于XFP光模塊微控制器內,使用光模塊標準總線接口 IIC,兼容光模塊INF-8077i、 XFP-MSA等協(xié)議,可以廣泛應用于各類含有微控制器的光模塊。
[0053] 圖3為XFP光模塊硬件連接示意圖,按照XFP-MSA規(guī)范,XFP光模塊提供IIC總線 接口與設備通訊。本專利將詳細說明基于自定義Bootloader的XFP光模塊遠程升級技術 的實現(xiàn)方式。XFP光模塊提供IIC總線接口,IIC從機地址為Α0Η,按照INF-8077i協(xié)議規(guī) 定,AOH寄存器結構如圖4所示。其中,AOH區(qū)域的98、99、107字節(jié)為廠商保留區(qū),123、124、 125、126字節(jié)為密碼入口區(qū),127字節(jié)為高128位寄存器映射頁選擇寄存器,如下表所示:
[0054]
【權利要求】
1. 一種基于Bootloader的XFP光模塊升級方法,其特征在于,包括W下步驟: 在XFP光模塊的微控制器的FLA甜區(qū)域中,開辟出Bootloader存放區(qū)域,其中存儲有 Bootloader啟動程序; 選擇啟動Bootloader,對FLA甜區(qū)域中的程序代碼區(qū)域內的數(shù)據執(zhí)行升級操作。
2. 如權利要求1所述的基于Bootloader的XFP光模塊升級方法,其特征在于, 所述XFP光模塊設置有IIC接口,系統(tǒng)通過遠程訪問IIC接口來啟動Bootloader,執(zhí)行 升級操作。
3. 如權利要求2所述的基于Bootloader的XFP光模塊升級方法,其特征在于,選擇啟 動Bootloader,對FLA甜區(qū)域中的程序代碼區(qū)域內的數(shù)據執(zhí)行升級操作包括W下步驟: 1) 在微控制器中寫入"BOOT"的ASCII碼,啟動Bootloader ; 2) 將新的程序數(shù)據寫入FLA甜區(qū)域中的程序代碼區(qū)域; 3) 讀出寫入的新程序數(shù)據,與目標程序數(shù)據進行比對; 4) 如果正確,則運行新程序數(shù)據,完成升級;如果不正確,則重復步驟2)和3),直到正 確為止。
4. 如權利要求3所述的基于Bootloader的XFP光模塊升級方法,其特征在于, 所述步驟2)中包括: 2. 1)查找待寫入新程序數(shù)據的FLA甜區(qū)域中的映射地址; 2. 2)將新程序數(shù)據中的512字節(jié)數(shù)據寫入微處理器的緩沖區(qū); 2. 3)根據查找到的映射地址,擦除對應的FLA甜區(qū)域中的原始程序; 2.4)將緩沖區(qū)內的新程序數(shù)據寫入根據映射地址對應的FLA甜區(qū)域中; 2. 5)反復執(zhí)行步驟2. 2)-2. 4)直到將所有新程序數(shù)據全部寫入對應的FLASH區(qū)域中。
5. 如權利要求4所述的基于Bootloader的XFP光模塊升級方法,其特征在于, 所述步驟3)中包括: 3. 1)查找寫入了新程序數(shù)據的FLA甜區(qū)域中的映射地址; 3. 2)根據查找到的映射地址,將對應的FLA甜區(qū)域中的新程序數(shù)據讀取到緩沖區(qū); 3. 3)在緩沖區(qū)中讀出新程序數(shù)據中的512字節(jié)數(shù)據,與目標程序數(shù)據進行比對,W校 驗寫入程序的正確性; 3. 4)反復執(zhí)行步驟3. 3),直到完成校驗。
6. 如權利要求5所述的基于Bootloader的XFP光模塊升級方法,其特征在于,所述 Bootloader啟動程序占用XFP光模塊的IIC從機地址為A0H。
7. 如權利要求6所述的基于Bootloader的XFP光模塊升級方法,其特征在于,所述A0H 區(qū)域的98、99、和107字節(jié)作為自定義Bootloader的控制字節(jié);使用123、124、125和126字 節(jié)作為進入Bootloader模式的密碼控制字節(jié);使用高128位的頁0xFC、0x抑、Ox陽和OxFF 四個頁地址作為Bootloader升級的數(shù)據緩沖區(qū)。
8. 如權利要求7所述的基于Bootloader的XFP光模塊升級方法,其特征在于,所述 123-126字節(jié)寫入"BOOT"的ASCII碼;98-99字節(jié)為FLA甜映射地址字節(jié);107字節(jié)為 Bootloader控制字節(jié),命令有;'E'擦除微控制器的程序儲存區(qū),'W'將緩沖區(qū)數(shù)據寫入微 控制器對應的FLA甜區(qū)域,'R'讀取微控制器對應的FLA甜區(qū)域數(shù)據至緩沖區(qū),'S'開始運 行應用程序;高128位,按頁映射緩沖區(qū),OxFC頁,映射緩沖區(qū)0x000-0x07F字節(jié);OxFD頁, 映射緩沖區(qū)0x080-0x0FF字節(jié);OxFE頁,映射緩沖區(qū)0xl00-0xl7F字節(jié);OxFC頁,映射緩沖 區(qū) 0xl80-0xlFF 字節(jié)。
【文檔編號】G06F9/445GK104461638SQ201410767284
【公開日】2015年3月25日 申請日期:2014年12月12日 優(yōu)先權日:2014年12月12日
【發(fā)明者】范巍, 侯羿 申請人:四川華拓光通信股份有限公司