一種二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,包括:對(duì)不同控制芯片的配置文件進(jìn)行統(tǒng)一配置,根據(jù)硬件信息標(biāo)識(shí)控制芯片,并修改不同控制芯片的代碼流程,以完成Boot程序的二進(jìn)制合一;統(tǒng)一不同控制芯片的內(nèi)核配置,并進(jìn)行不同控制芯片的編譯共存配置和運(yùn)行共存配置,以實(shí)現(xiàn)內(nèi)核程序的二進(jìn)制合一。本發(fā)明的方法可實(shí)現(xiàn)同一個(gè)軟件版本能在兩種或多種不同的控制芯片上使用。
【專(zhuān)利說(shuō)明】一種二進(jìn)制合一 Boot程序及內(nèi)核程序的設(shè)計(jì)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及光纖通信【技術(shù)領(lǐng)域】,尤其涉及以太無(wú)源光網(wǎng)絡(luò)(EPON),千兆無(wú)源光網(wǎng)絡(luò)(GPON),無(wú)線第三代移動(dòng)通信技術(shù)(3G)等綜合接入技術(shù)中的一種二進(jìn)制合一 Boot程序及內(nèi)核程序的設(shè)計(jì)方法。
【背景技術(shù)】
[0002]目前,隨著各種通信業(yè)務(wù)的不斷增長(zhǎng),光網(wǎng)絡(luò)終端主控設(shè)備(ONU)在光纖通信中被廣泛應(yīng)用。相應(yīng)的,ONU控制芯片的種類(lèi)也逐漸增多,即使同一廠家不同系列的控制芯片也存在很大差異。在軟件設(shè)置時(shí),都是每一款控制芯片對(duì)應(yīng)一個(gè)軟件版本,如果這樣的設(shè)置方式用到同一款產(chǎn)品上,就會(huì)對(duì)外場(chǎng)升級(jí)和用戶(hù)使用帶來(lái)很大麻煩。比如:對(duì)于同一款產(chǎn)品,先后使用兩種甚至多種不同ARM核的控制芯片,雖然對(duì)外是同一款產(chǎn)品,但卻需要提供兩套甚至多套軟件版本,導(dǎo)致外場(chǎng)升級(jí)效率低,升級(jí)方法過(guò)于繁瑣,用戶(hù)使用也不方便,管理也比較困難。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明的主要目的在于提供一種二進(jìn)制合一 Boot程序及內(nèi)核程序的設(shè)計(jì)方法,可實(shí)現(xiàn)同一個(gè)軟件版本能在兩種或多種不同的控制芯片上使用。
[0004]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0005]本發(fā)明提供了一種二進(jìn)制合一 Boot程序及內(nèi)核程序的設(shè)計(jì)方法,該方法包括:
[0006]對(duì)不同控制芯片的配置文件進(jìn)行統(tǒng)一配置,根據(jù)硬件信息標(biāo)識(shí)控制芯片,并修改不同控制芯片的代碼流程,以完成Boot程序的二進(jìn)制合一;
[0007]統(tǒng)一不同控制芯片的內(nèi)核配置,并進(jìn)行不同控制芯片的編譯共存配置和運(yùn)行共存配置,以實(shí)現(xiàn)內(nèi)核程序的二進(jìn)制合一。
[0008]其中,所述對(duì)不同控制芯片的配置文件進(jìn)行統(tǒng)一配置,為:
[0009]將不同控制芯片相沖突的宏分別定義為全局變量,在控制芯片初始化的過(guò)程中對(duì)所有宏對(duì)應(yīng)的沖突項(xiàng)均進(jìn)行設(shè)計(jì),并對(duì)使用沖突項(xiàng)的位置依次進(jìn)行修改。
[0010]其中,所述硬件信息包括:通用輸入/輸出GPIO接口信息或處理器類(lèi)型信息。
[0011]其中,所述編譯共存配置為:使用同一套配置,將一個(gè)或者多個(gè)控制芯片的板級(jí)支持包BSP代碼整合到其中一個(gè)控制芯片的BSP中。
[0012]進(jìn)一步地,該方法還包括二進(jìn)制合一 Boot程序的啟動(dòng)方法,包括:
[0013]系統(tǒng)上電,Boot程序開(kāi)始啟動(dòng),獲取控制芯片類(lèi)型;
[0014]判斷控制芯片類(lèi)型,如果是ARM9核控制芯片,則初始化ARM9核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件;如果是ARMll核控制芯片,則初始化ARMl I核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件;
[0015]檢測(cè)文件系統(tǒng)類(lèi)型,并初始化文件系統(tǒng);
[0016]判斷flash上的版本文件是否完整有效,如果是完整有效版本,則啟動(dòng)系統(tǒng)主版本;否則,返回Boot命令行,提示無(wú)有效版本。
[0017]進(jìn)一步地,該方法還包括:二進(jìn)制合一 Boot程序的升級(jí)方法,分為:Boot命令行下的升級(jí),以及帶內(nèi)升級(jí),即版本啟動(dòng)后,通過(guò)網(wǎng)管進(jìn)行的遠(yuǎn)程升級(jí)。
[0018]其中,所述Boot程序在Boot命令行下的升級(jí)方法包括:
[0019]搭建Boot命令行下升級(jí)Boot程序的設(shè)備環(huán)境;上電啟動(dòng)0NU,并配置網(wǎng)絡(luò)參數(shù);執(zhí)行更新命令,升級(jí)二進(jìn)制合一 Boot程序;升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
[0020]其中,所述Boot程序帶內(nèi)升級(jí)方法包括:
[0021]搭建版本啟動(dòng)后升級(jí)Boot程序的設(shè)備環(huán)境;0NU上電啟動(dòng),配置網(wǎng)絡(luò)參數(shù);執(zhí)行Boot程序升級(jí)命令,升級(jí)二進(jìn)制合一 Boot程序;升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
[0022]進(jìn)一步地,該方法還包括二進(jìn)制合一內(nèi)核程序的啟動(dòng)方法,包括:
[0023]系統(tǒng)上電,內(nèi)核程序開(kāi)始啟動(dòng),獲取控制芯片類(lèi)型;
[0024]判斷控制芯片類(lèi)型,如果是ARM9核控制芯片,則初始化ARM9核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件,加載ARM9單板相關(guān)外設(shè)的驅(qū)動(dòng)程序;如果是ARMll核控制芯片,則初始化ARMll核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件,加載ARMll單板相關(guān)外設(shè)的驅(qū)動(dòng)程序;
[0025]兼容ARMV6和ARMV4兩種體系結(jié)構(gòu)編碼,使運(yùn)行共存;
[0026]檢測(cè)文件系統(tǒng)類(lèi)型,初始化文件系統(tǒng);
[0027]判斷flash上的用戶(hù)態(tài)版本文件是否完整有效,如果是,則啟動(dòng)用戶(hù)態(tài)版本;否貝1J,返回內(nèi)核shell命令行,提示無(wú)有效用戶(hù)態(tài)版本。
[0028]進(jìn)一步地,該方法還包括:二進(jìn)制合一內(nèi)核程序的升級(jí)方法,分為=Boot命令行下的升級(jí),以及帶內(nèi)升級(jí)。
[0029]其中,所述內(nèi)核程序在Boot命令行下的升級(jí)方法包括:
[0030]搭建Boot命令行下升級(jí)內(nèi)核程序的設(shè)備環(huán)境;上電啟動(dòng)0NU,并配置網(wǎng)絡(luò)參數(shù);執(zhí)行版本升級(jí)命令,升級(jí)二進(jìn)制合一內(nèi)核程序;升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
[0031]其中,所述內(nèi)核程序帶內(nèi)升級(jí)方法包括:
[0032]搭建版本啟動(dòng)后升級(jí)內(nèi)核程序的設(shè)備環(huán)境;0NU上電啟動(dòng),配置網(wǎng)絡(luò)參數(shù);執(zhí)行版本升級(jí)命令,升級(jí)二進(jìn)制合一內(nèi)核程序;升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
[0033]本發(fā)明提供的二進(jìn)制合一 Boot程序及內(nèi)核程序的設(shè)計(jì)方法,對(duì)不同控制芯片的配置文件進(jìn)行統(tǒng)一配置,根據(jù)處理器的類(lèi)型標(biāo)識(shí)控制芯片,并修改不同控制芯片的代碼流程,以完成Boot程序的二進(jìn)制合一;統(tǒng)一不同控制芯片的內(nèi)核配置,并進(jìn)行編譯共存配置和運(yùn)行共存配置,以實(shí)現(xiàn)內(nèi)核程序的二進(jìn)制合一。本發(fā)明可實(shí)現(xiàn)同一軟件版本能在兩種不同的控制芯片上使用,不需要額外增加硬件成本,可移植性好。
[0034]此外,本發(fā)明的Boot程序及內(nèi)核程序在升級(jí)過(guò)程中,一個(gè)版本可以升級(jí)到兩種不同的控制芯片上,便于外場(chǎng)升級(jí)和版本管理,版本升級(jí)效率和穩(wěn)定性都大大提高,且使用方便,降低了系統(tǒng)的維護(hù)成本。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0035]圖1為本發(fā)明二進(jìn)制合一 Boot程序及內(nèi)核程序的設(shè)計(jì)方法流程圖;[0036]圖2為本發(fā)明設(shè)置的控制芯片Boot程序?qū)嵤├慕M成結(jié)構(gòu)示意圖;
[0037]圖3為本發(fā)明Boot程序的啟動(dòng)方法實(shí)現(xiàn)流程圖;
[0038]圖4本發(fā)明Boot程序在Boot命令行下的升級(jí)方法流程示意圖;
[0039]圖5為本發(fā)明Boot程序帶內(nèi)升級(jí)方法的流程示意圖;
[0040]圖6為本發(fā)明內(nèi)核程序的啟動(dòng)方法實(shí)現(xiàn)流程圖;
[0041]圖7為本發(fā)明內(nèi)核程序在Boot命令行下的升級(jí)方法流程示意圖;
[0042]圖8為本發(fā)明內(nèi)核程序帶內(nèi)升級(jí)方法的流程示意圖。
【具體實(shí)施方式】
[0043]本發(fā)明的基本思想是:對(duì)兩個(gè)或者多個(gè)不同控制芯片的配置文件進(jìn)行統(tǒng)一配置,根據(jù)硬件信息標(biāo)識(shí)控制芯片,并修改不同控制芯片的代碼流程,以完成Boot程序的二進(jìn)制合一;統(tǒng)一不同控制芯片的內(nèi)核配置,并進(jìn)行不同控制芯片的編譯共存配置和運(yùn)行共存配置,以實(shí)現(xiàn)內(nèi)核程序的二進(jìn)制合一。
[0044]進(jìn)一步地,本發(fā)明還包括:二進(jìn)制合一 Boot程序的啟動(dòng)方法,以及二進(jìn)制合一內(nèi)核程序的啟動(dòng)方法。
[0045]進(jìn)一步地,本發(fā)明還包括:二進(jìn)制合一 Boot程序的升級(jí)方法,以及二進(jìn)制合一內(nèi)核程序的升級(jí)方法。
[0046]下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。
[0047]本發(fā)明所述的ONU主控板,即ONU的控制芯片,一方面完成ONU系統(tǒng)的控制和數(shù)據(jù)交換功能,另一方面負(fù)責(zé)對(duì)各種線卡的管理,包括線卡的上下線處理、線卡的版本管理等。無(wú)源光網(wǎng)絡(luò)(PON)子卡通過(guò)光分路器完成與EP0N/GP0N光線路終端(OLT)系統(tǒng)的對(duì)接,同時(shí)完成與主控板的數(shù)據(jù)交互?;诰W(wǎng)絡(luò)層協(xié)議的語(yǔ)音(VOIP)子卡完成對(duì)模擬電話(huà)業(yè)務(wù)(POTS)用戶(hù)提供多路VOIP接入;E1子卡主要完成El業(yè)務(wù)到以太網(wǎng)的轉(zhuǎn)換與恢復(fù);電源板主要提供系統(tǒng)的電源。
[0048]圖1為本發(fā)明二進(jìn)制合一 Boot程序及內(nèi)核程序的設(shè)計(jì)方法流程圖,如圖1所示,該流程的實(shí)現(xiàn)步驟如下:
[0049]步驟101:對(duì)不同控制芯片的配置文件進(jìn)行統(tǒng)一配置;
[0050]具體為:對(duì)于不同的控制芯片,通常常見(jiàn)的沖突項(xiàng)包括:內(nèi)存基址、內(nèi)存大小、flash基址、flash大小及其他外設(shè)基址等。這里,將不同控制芯片相沖突的宏分別定義為全局變量,在控制芯片初始化的過(guò)程中對(duì)所有宏對(duì)應(yīng)的沖突項(xiàng)均進(jìn)行設(shè)置,并對(duì)使用沖突項(xiàng)的位置依次進(jìn)行修改。
[0051]以flash配置沖突為例,相關(guān)的沖突宏為CFG_FLASH_BASE和CFG_FLASH_SIZE,則將這兩個(gè)宏定義為全局變量_g_CFG_FLASH_BASE和_g_CFG_FLASH_SIZE,如果有其他宏使用了 CFG_FLASH_BASE與CFG_FLASH_SIZE,就將使用的宏修改為對(duì)應(yīng)的變量_g_CFG_FLASH_BASE 或 _g_CFG_FLASH_SIZE。
[0052]步驟102:根據(jù)硬件信息標(biāo)識(shí)控制芯片;
[0053]具體為:不同的控制芯片都有特定的識(shí)別方式,這種識(shí)別方式可以通過(guò)控制芯片獨(dú)特的硬件信息進(jìn)行標(biāo)識(shí),可使用的硬件信息有通用輸入/輸出(GPIO)接口信息或者處理器類(lèi)型信息。以ARM系列處理器為例,協(xié)處理器CP15的寄存器O中有處理器的相關(guān)信息,通過(guò)該寄存器可以判斷當(dāng)前處理器是ARM9還是ARMlI。這里,可通過(guò)設(shè)計(jì)接口 detect控制芯片來(lái)探測(cè)當(dāng)前處理器的類(lèi)型。
[0054]步驟103:修改不同控制芯片的代碼流程;
[0055]具體為:對(duì)不同控制芯片的代碼流程進(jìn)行修改,在消除代碼統(tǒng)一后的編譯錯(cuò)誤之后,從控制芯片上電后初始化代碼開(kāi)始,使用if-else結(jié)構(gòu)控制不同控制芯片的代碼流程,直到控制芯片初始化結(jié)束,進(jìn)入統(tǒng)一流程。
[0056]上述步驟101-103的操作完成了 Boot程序的二進(jìn)制合一,該方法主要使用類(lèi)似if-else指令控制程序根據(jù)控制芯片的不同類(lèi)型進(jìn)行各自的流程,直到控制芯片的初始化結(jié)束。
[0057]圖2為本發(fā)明設(shè)置的控制芯片Boot程序?qū)嵤├慕M成結(jié)構(gòu)示意圖,如圖2所示,包括:版本頭部和版本主體;其中,
[0058]所述版本頭部占用256個(gè)字節(jié),包括:版本號(hào)、版本功能,即對(duì)應(yīng)的控制芯片類(lèi)型、版本類(lèi)型,表明所述程序?yàn)锽oot程序、版本的創(chuàng)建時(shí)間、版本頭的長(zhǎng)度、整個(gè)版本的大小、版本頭的校驗(yàn)和、Boot掩碼信息和保留信息;所述版本主體即Boot版本鏡像,即Boot程序的有效代碼。
[0059]步驟104:統(tǒng)一不同控制芯片的內(nèi)核配置;
[0060]這部分主要統(tǒng)一兩個(gè)或多個(gè)不同控制芯片的內(nèi)核配置項(xiàng),使用同一套配置,能夠編譯出在不同控制芯片上都能運(yùn)行正常的映像。
[0061]步驟105:不同控制芯片的編譯共存配置;
[0062]這里,所述編譯共存配置是指:使用同一套配置,將一個(gè)或者多個(gè)控制芯片的板級(jí)支持包(Board Support Package,BSP)代碼整合到其中一個(gè)控制芯片的BSP中。以ARMll和ARM9控制芯片的整合為例,將ARMl I控制芯片的BSP整合到ARM9控制芯片中,編譯完成。
[0063]由于不同控制芯片沖突的宏較多,且取值也不同,因此將所有有沖突的宏定義采取改名的方式進(jìn)行整合;控制芯片相關(guān)的代碼,以不同的控制芯片目錄進(jìn)行區(qū)分;驅(qū)動(dòng)代碼也進(jìn)行區(qū)分,其中,各個(gè)控制芯片可以共用通用的驅(qū)動(dòng);而對(duì)于某些控制芯片特有的驅(qū)動(dòng),則僅為該控制芯片使用。
[0064]所有控制芯片的所有模塊都加載,在模塊加載與卸載的時(shí)候,首先判斷處理器類(lèi)型,如果不是本控制芯片,直接返回;因此在后續(xù)執(zhí)行的過(guò)程中,控制芯片初始化代碼與驅(qū)動(dòng)代碼都不會(huì)混合。
[0065]步驟106:不同控制芯片的運(yùn)行共存配置;
[0066]這里,所述運(yùn)行共存是二進(jìn)制合一調(diào)試的關(guān)鍵,主要在于不同版本處理器指令的統(tǒng)一。由于同一個(gè)架構(gòu)的處理器,通常高版本處理器能夠兼容低版本處理器的指令,因此,可提取包含高版本處理器指令的代碼,將這部分代碼使用高版本處理器指令去編譯。
[0067]以ARMll和ARM9的統(tǒng)一為例,需對(duì)ARMV6與ARMV4都進(jìn)行配置,ARMV6的代碼使用ARMV6指令去編譯。
[0068]這樣處理之后,內(nèi)核能夠同時(shí)支持不同版本的處理器。內(nèi)核程序二進(jìn)制合一設(shè)置之后,再和用戶(hù)態(tài)代碼一起編譯出系統(tǒng)的二進(jìn)制合一版本。
[0069]上述步驟104-106的操作完成了內(nèi)核程序的二進(jìn)制合一,由于不同控制芯片的處理器類(lèi)型存在差異,涉及一些擴(kuò)展指令,以及不同宏控制的代碼,因此內(nèi)核程序二進(jìn)制合一相對(duì)復(fù)雜,但是基本思想與Boot程序類(lèi)似。
[0070]當(dāng)然,由于上述過(guò)程均在系統(tǒng)啟動(dòng)之前完成的,所以上述步驟101-103可與步驟104-106的操作可以相互調(diào)換。
[0071]本發(fā)明還提供了一種Boot程序的啟動(dòng)方法,如圖3所示,實(shí)現(xiàn)步驟如下:
[0072]步驟301:系統(tǒng)上電,Boot程序開(kāi)始啟動(dòng),獲取控制芯片類(lèi)型;
[0073]步驟302:判斷控制芯片類(lèi)型,如果是ARM9核控制芯片,則執(zhí)行步驟303 ;如果是ARMll核控制芯片,則執(zhí)行步驟304 ;
[0074]步驟303:初始化ARM9核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件,之后執(zhí)行步驟305 ;
[0075]所述外圍硬件包括:內(nèi)存,flash,網(wǎng)口,串口等設(shè)備。
[0076]步驟304:初始化ARMll核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件;
[0077]所述外圍硬件包括:內(nèi)存,flash,網(wǎng)口,串口等設(shè)備。
[0078]步驟305:檢測(cè)文件系統(tǒng)類(lèi)型,即:檢測(cè)flash上的文件系統(tǒng)類(lèi)型,并初始化文件系統(tǒng);
[0079]步驟306:判斷flash上的版本文件是否完整有效,主要是檢查主程序的掩碼,大小,校驗(yàn)和等,如果是完整有效版本,則執(zhí)行步驟307 ;否則,跳轉(zhuǎn)到步驟308 ;
[0080]步驟307:啟動(dòng)系統(tǒng)主版本;
[0081 ] 步驟308:返回Boot命令行,提示無(wú)有效版本。
[0082]進(jìn)一步地,本發(fā)明還包括Boot程序的升級(jí)方法,分為=Boot命令行下的升級(jí),以及帶內(nèi)升級(jí),即版本啟動(dòng)后,通過(guò)網(wǎng)管進(jìn)行的遠(yuǎn)程升級(jí)。
[0083]圖4為本發(fā)明Boot程序在Boot命令行下的升級(jí)方法流程示意圖,如圖4所示,實(shí)現(xiàn)流程如下:
[0084]步驟401:搭建Boot命令行下升級(jí)Boot程序的設(shè)備環(huán)境;
[0085]具體為:把ONU通過(guò)網(wǎng)線和串口線連接到PC機(jī),在PC機(jī)側(cè)打開(kāi)簡(jiǎn)單文件傳輸協(xié)議(TFTP)客戶(hù)端,準(zhǔn)備好需要升級(jí)的Boot程序。
[0086]步驟402:上電啟動(dòng)0NU,并配置網(wǎng)絡(luò)參數(shù);
[0087]具體為:上電啟動(dòng)0NU,在Boot啟動(dòng)的過(guò)程中按回車(chē)鍵,進(jìn)入Boot命令行,輸入c命令,配置ONU側(cè)和TFTP服務(wù)器側(cè)的IP地址在同一網(wǎng)段。
[0088]步驟403:執(zhí)行更新命令,即執(zhí)行Boot程序升級(jí)命令,升級(jí)二進(jìn)制合一 Boot程序;
[0089]步驟404:升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
[0090]圖5為本發(fā)明Boot程序帶內(nèi)升級(jí)方法的流程示意圖,如圖5所示,實(shí)現(xiàn)流程如下:
[0091]步驟501:搭建版本啟動(dòng)后升級(jí)Boot程序的設(shè)備環(huán)境;
[0092]具體為:把ONU通過(guò)網(wǎng)線連接到PC機(jī),在PC機(jī)側(cè)打開(kāi)WFTP客戶(hù)端,準(zhǔn)備好需要升級(jí)的Boot程序。
[0093]步驟502:0NU上電啟動(dòng),配置網(wǎng)絡(luò)參數(shù);
[0094]具體為:0NU上電啟動(dòng),版本啟動(dòng)后,通過(guò)PC機(jī)遠(yuǎn)程登錄到主控板,即控制芯片,控制芯片遠(yuǎn)程配置ONU的IP地址和vlan參數(shù)。
[0095]步驟503:執(zhí)行Boot程序升級(jí)命令,升級(jí)二進(jìn)制合一 Boot程序;
[0096]步驟504:升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。[0097]本發(fā)明還提供了一種內(nèi)核程序的啟動(dòng)方法,如圖6所示,實(shí)現(xiàn)步驟如下:
[0098]步驟601:系統(tǒng)上電,內(nèi)核程序開(kāi)始啟動(dòng),獲取控制芯片類(lèi)型;
[0099]步驟602:判斷控制芯片類(lèi)型,如果是ARM9核控制芯片,則執(zhí)行步驟603 ;如果是ARMll核控制芯片,則執(zhí)行步驟604 ;
[0100]步驟603:初始化ARM9核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件,加載ARM9單板相關(guān)外設(shè)的驅(qū)動(dòng)程序,之后執(zhí)行步驟605 ;
[0101]所述外圍硬件包括:內(nèi)存,flash,網(wǎng)口,串口等設(shè)備。
[0102]步驟604:初始化ARMll核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件,加載ARMll單板相關(guān)外設(shè)的驅(qū)動(dòng)程序;
[0103]所述外圍硬件包括:內(nèi)存,flash,網(wǎng)口,串口等設(shè)備。
[0104]步驟605:兼容ARMV6和ARMV4兩種體系結(jié)構(gòu)編碼,使運(yùn)行共存;
[0105]步驟606:檢測(cè)文件系統(tǒng)類(lèi)型,即:檢測(cè)flash上的文件系統(tǒng)類(lèi)型,初始化文件系統(tǒng);
[0106]步驟607:判斷flash上的用戶(hù)態(tài)版本文件是否完整有效,主要是檢查主程序的掩碼,大小,校驗(yàn)和等,如果是完整有效版本,則執(zhí)行步驟608 ;否則,跳轉(zhuǎn)到步驟609 ;
[0107]步驟608:啟動(dòng)用戶(hù)態(tài)版本;
[0108]步驟609:返回內(nèi)核she 11命令行,提示無(wú)有效用戶(hù)態(tài)版本。
[0109]進(jìn)一步地,本發(fā)明還包括內(nèi)核程序的升級(jí)方法,分為=Boot命令行下的升級(jí),以及帶內(nèi)升級(jí),即版本啟動(dòng)后,通過(guò)網(wǎng)管進(jìn)行遠(yuǎn)程升級(jí)。
[0110]圖7為本發(fā)明內(nèi)核程序在Boot命令行下的升級(jí)方法流程示意圖,如圖7所示,實(shí)現(xiàn)流程如下:
[0111]步驟701:搭建Boot命令行下升級(jí)內(nèi)核程序的設(shè)備環(huán)境;
[0112]具體為:把ONU通過(guò)網(wǎng)線和串口線連接到PC機(jī),在PC機(jī)側(cè)打開(kāi)TFTP客戶(hù)端,準(zhǔn)備好需要升級(jí)的二進(jìn)制合一內(nèi)核程序。
[0113]步驟702:上電啟動(dòng)0NU,并配置網(wǎng)絡(luò)參數(shù);
[0114]具體為:上電啟動(dòng)0NU,在Boot啟動(dòng)的過(guò)程中按回車(chē)鍵,進(jìn)入Boot命令行,輸入c命令,配置ONU側(cè)和TFTP服務(wù)器側(cè)的IP地址在同一網(wǎng)段。
[0115]步驟703:執(zhí)行版本升級(jí)命令,升級(jí)二進(jìn)制合一內(nèi)核程序,即升級(jí)二進(jìn)制合一版本程序;
[0116]步驟704:升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
[0117]圖8為本發(fā)明內(nèi)核程序帶內(nèi)升級(jí)方法的流程示意圖,如圖8所示,實(shí)現(xiàn)流程如下:
[0118]步驟801:搭建版本啟動(dòng)后升級(jí)內(nèi)核程序的設(shè)備環(huán)境;
[0119]具體為:把ONU通過(guò)網(wǎng)線連接到PC機(jī),在PC機(jī)側(cè)打開(kāi)WFTP客戶(hù)端,準(zhǔn)備好需要升級(jí)的二進(jìn)制合一內(nèi)核程序。
[0120]步驟802:0NU上電啟動(dòng),配置網(wǎng)絡(luò)參數(shù);
[0121]具體為:0NU上電啟動(dòng),版本啟動(dòng)后,通過(guò)PC機(jī)遠(yuǎn)程登錄到控制芯片,控制芯片遠(yuǎn)程配置ONU的IP地址和vlan參數(shù)。
[0122]步驟803:執(zhí)行版本升級(jí)命令,升級(jí)二進(jìn)制合一內(nèi)核程序,即升級(jí)二進(jìn)制合一版本程序;[0123]步驟804:升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
[0124]以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種二進(jìn)制合一 Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,該方法包括: 對(duì)不同控制芯片的配置文件進(jìn)行統(tǒng)一配置,根據(jù)硬件信息標(biāo)識(shí)控制芯片,并修改不同控制芯片的代碼流程,以完成Boot程序的二進(jìn)制合一; 統(tǒng)一不同控制芯片的內(nèi)核配置,并進(jìn)行不同控制芯片的編譯共存配置和運(yùn)行共存配置,以實(shí)現(xiàn)內(nèi)核程序的二進(jìn)制合一。
2.根據(jù)權(quán)利要求1所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,所述對(duì)不同控制芯片的配置文件進(jìn)行統(tǒng)一配置,為: 將不同控制芯片相沖突的宏分別定義為全局變量,在控制芯片初始化的過(guò)程中對(duì)所有宏對(duì)應(yīng)的沖突項(xiàng)均進(jìn)行設(shè)計(jì),并對(duì)使用沖突項(xiàng)的位置依次進(jìn)行修改。
3.根據(jù)權(quán)利要求1所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,所述硬件信息包括:通用輸入/輸出GPIO接口信息或處理器類(lèi)型信息。
4.根據(jù)權(quán)利要求1所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,所述編譯共存配置為:使用同一套配置,將一個(gè)或者多個(gè)控制芯片的板級(jí)支持包BSP代碼整合到其中一個(gè)控制芯片的BSP中。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,該方法還包括二進(jìn)制合一 Boot程序的啟動(dòng)方法,包括: 系統(tǒng)上電,Boot程序開(kāi)始啟動(dòng),獲取控制芯片類(lèi)型; 判斷控制芯片類(lèi)型,如果是ARM9核控制芯片,則初始化ARM9核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件;如果是ARMll核控制芯片,則初始化ARMl I核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件; 檢測(cè)文件系統(tǒng)類(lèi)型,并初始化文件系統(tǒng); 判斷flash上的版本文件是否完整有效,如果是完整有效版本,則啟動(dòng)系統(tǒng)主版本;否貝U,返回Boot命令行,提示無(wú)有效版本。
6.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,該方法還包括:二進(jìn)制合一 Boot程序的升級(jí)方法,分為:Boot命令行下的升級(jí),以及帶內(nèi)升級(jí),即版本啟動(dòng)后,通過(guò)網(wǎng)管進(jìn)行的遠(yuǎn)程升級(jí)。
7.根據(jù)權(quán)利要求6所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,所述Boot程序在Boot命令行下的升級(jí)方法包括: 搭建Boot命令行下升級(jí)Boot程序的設(shè)備環(huán)境;上電啟動(dòng)0NU,并配置網(wǎng)絡(luò)參數(shù);執(zhí)行更新命令,升級(jí)二進(jìn)制合一 Boot程序;升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
8.根據(jù)權(quán)利要求6所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,所述Boot程序帶內(nèi)升級(jí)方法包括: 搭建版本啟動(dòng)后升級(jí)Boot程序的設(shè)備環(huán)境;0NU上電啟動(dòng),配置網(wǎng)絡(luò)參數(shù);執(zhí)行Boot程序升級(jí)命令,升級(jí)二進(jìn)制合一 Boot程序;升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
9.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,該方法還包括二進(jìn)制合一內(nèi)核程序的啟動(dòng)方法,包括: 系統(tǒng)上電,內(nèi)核程序開(kāi)始啟動(dòng),獲取控制芯片類(lèi)型; 判斷控制芯片類(lèi)型,如果是ARM9核控制芯片,則初始化ARM9核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件,加載ARM9單板相關(guān)外設(shè)的驅(qū)動(dòng)程序;如果是ARMll核控制芯片,則初始化ARMll核控制芯片控制器的寄存器,初始化系統(tǒng)外圍硬件,加載ARMll單板相關(guān)外設(shè)的驅(qū)動(dòng)程序; 兼容ARMV6和ARMV4兩種體系結(jié)構(gòu)編碼,使運(yùn)行共存; 檢測(cè)文件系統(tǒng)類(lèi)型,初始化文件系統(tǒng); 判斷flash上的用戶(hù)態(tài)版本文件是否完整有效,如果是,則啟動(dòng)用戶(hù)態(tài)版本;否則,返回內(nèi)核shell命令行,提示無(wú)有效用戶(hù)態(tài)版本。
10.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,該方法還包括:二進(jìn)制合一內(nèi)核程序的升級(jí)方法,分為=Boot命令行下的升級(jí),以及帶內(nèi)升級(jí)。
11.根據(jù)權(quán)利要求10所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,所述內(nèi)核程序在Boot命令行下的升級(jí)方法包括: 搭建Boot命令行下升級(jí)內(nèi)核程序的設(shè)備環(huán)境;上電啟動(dòng)0NU,并配置網(wǎng)絡(luò)參數(shù);執(zhí)行版本升級(jí)命令,升級(jí)二進(jìn)制合一內(nèi)核程序;升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
12.根據(jù)權(quán)利要求10所述的二進(jìn)制合一Boot程序及內(nèi)核程序的設(shè)計(jì)方法,其特征在于,所述內(nèi)核程序帶內(nèi)升級(jí)方法包括: 搭建版本啟動(dòng)后升級(jí)內(nèi)核程序的設(shè)備環(huán)境;0NU上電啟動(dòng),配置網(wǎng)絡(luò)參數(shù);執(zhí)行版本升級(jí)命令,升級(jí)二進(jìn)制合一內(nèi)·核程序;升級(jí)成功后,重啟ONU設(shè)備,運(yùn)行系統(tǒng)新版本。
【文檔編號(hào)】G06F9/445GK103823664SQ201210468412
【公開(kāi)日】2014年5月28日 申請(qǐng)日期:2012年11月19日 優(yōu)先權(quán)日:2012年11月19日
【發(fā)明者】張耀東, 徐嚴(yán)濤, 丁忠林 申請(qǐng)人:中興通訊股份有限公司