周江平+陳令+周世軍
【摘 要】為了解決嵌入式小基站頻繁的軟件版本升級帶來的不穩(wěn)定問題,通過研究嵌入式網(wǎng)絡(luò)設(shè)備升級的方法,提出了網(wǎng)絡(luò)升級和Web遠(yuǎn)程升級兩種方式,如果軟件升級過程中出現(xiàn)異常,可啟動版本回退機制。實驗結(jié)果表明,該設(shè)計提高了小基站設(shè)備軟件升級的可靠性和穩(wěn)定性,在嵌入式通信設(shè)備中具有較高的應(yīng)用價值。
【關(guān)鍵詞】嵌入式設(shè)備 網(wǎng)絡(luò)升級 Web遠(yuǎn)程升級 回退機制
中圖分類號:TN929.5 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-1010(2017)19-0060-05
Design and Implementation of Version Upgrade and Back-off Mechanism for Embedded Small Base Station
ZHOU Jiangping1, CHEN Ling2, ZHOU Shijun1
[Abstract] In order to deal with the instability of embedded small base station brought by the frequent software version upgrade, the upgrade method of embedded network device was investigated to propose two methods of network upgrade and Web remote upgrade. If the abnormity happens in the process of upgrade, the version back-off mechanism is supported. Experimental results demonstrate the proposed solution not only enhances the reliability and stability of software upgrade for small station device, but also has the high application value in the embedded communication device.
[Key words]embedded device network upgrade Web remote upgrade back-off mechanism
1 引言
LTE技術(shù)不斷發(fā)展,小基站的應(yīng)用越來越廣泛。小基站(即Nano Cell)是為滿足4G通信時代信號覆蓋和用戶分流需求而開發(fā)的移動數(shù)據(jù)終端接入系統(tǒng),作為一款室內(nèi)無線覆蓋設(shè)備,它既要為宏基站提供信號補盲和增強服務(wù),還要分擔(dān)宏基站的用戶負(fù)載以減輕其壓力。隨著小基站功能的不斷完善,其增值業(yè)務(wù)越來越多,用戶對新業(yè)務(wù)的需求越來越大,小基站設(shè)備新的軟件版本應(yīng)運而生。設(shè)備商為了滿足客戶的需求,需要不斷對小基站設(shè)備進(jìn)行軟件版本升級。由于4G用戶對低時延、高速率數(shù)據(jù)業(yè)務(wù)的要求較高,要求在嵌入式4G小基站軟件升級過程中不能出現(xiàn)信號中斷的情況,或者要求網(wǎng)絡(luò)時延的時間極短[2]。傳統(tǒng)的嵌入式設(shè)備大多通過近端進(jìn)行升級,即通過USB串口線將主機與設(shè)備直連,進(jìn)入串口后通過升級指令完成升級。但近端升級的方法有兩大局限性:其一,小基站都是以廣域網(wǎng)的組網(wǎng)方式進(jìn)行覆蓋,而近端升級要求需要在同一局域網(wǎng)內(nèi)才能進(jìn)行;其二,近端升級的方法需要大量的工程人員進(jìn)行維護(hù),會造成一定人力物力財力的浪費。
因此,介紹一種嵌入式設(shè)備FTP網(wǎng)絡(luò)升級方式,設(shè)計通過增加簡單文件頭和對每一幀數(shù)據(jù)進(jìn)行校驗的升級方案[3]以及遠(yuǎn)程Web升級的典型場景方案,這些方案與傳統(tǒng)軟件升級的方式相比具有兩大優(yōu)勢:1)在升級過程中可有效避免丟包,確保了文件傳輸?shù)耐暾院驼_性;2)頭文件的校驗方式靈活可變,可根據(jù)用戶的不同需求進(jìn)行添加和刪除,但該校驗方式增加了頭文件的字節(jié)開銷,使得文件傳輸中存在一定時延。同時,在升級過程中支持版本回退的機制可確保小基站設(shè)備頻繁進(jìn)行軟件升級的穩(wěn)定性和可靠性。
2 軟件版本升級的方案設(shè)計
嵌入式Linux小基站的軟件部分包括Fmloader、Linux內(nèi)核(kernel)、文件系統(tǒng)(rootfs)及應(yīng)用程序。當(dāng)小基站上電正常啟動時,首先運行的一段代碼是Fmloader[4],它被用來在Linux內(nèi)核運行之前對硬件設(shè)備進(jìn)行加載并初始化,使小基站的軟硬件壞境處于就緒狀態(tài)。當(dāng)Fmloader完成對小基站硬件設(shè)備的初始化后,然后再跳轉(zhuǎn)到操作系統(tǒng)用戶的應(yīng)用程序地址,啟動Linux系統(tǒng)應(yīng)用程序的運行,正常啟動完成后進(jìn)入用戶的應(yīng)用程序入口,最后啟動其它各層應(yīng)用程序。本課題研究的嵌入式Linux系統(tǒng)小基站是基于特定硬件平臺實現(xiàn)的,由Fmloader系統(tǒng)引導(dǎo)程序不同于傳統(tǒng)的Bootloader,無法進(jìn)入命令行模式,不支持uboot的環(huán)境變量設(shè)置,但支持通過網(wǎng)絡(luò)從FTP網(wǎng)絡(luò)啟動或Nand Flash[5]啟動image,當(dāng)基站上電啟動時,加載完Fmloader程序后,若在串口輸入n/o,會自動從FTP服務(wù)器加載臨時系統(tǒng),再進(jìn)行網(wǎng)絡(luò)升級;若上電不做任何操作,系統(tǒng)從Nand Flash正常啟動,當(dāng)Web進(jìn)程啟動完成,再進(jìn)行Web遠(yuǎn)程升級。
2.1 網(wǎng)絡(luò)升級流程設(shè)計
網(wǎng)絡(luò)升級,即通過網(wǎng)絡(luò)接口將小基站與電腦主機相連,啟動FTP服務(wù)器,完成小基站設(shè)備軟件升級。升級要求小基站配有網(wǎng)口,或可通過網(wǎng)絡(luò)在后臺服務(wù)器上發(fā)送升級指令完成升級。
FTP服務(wù)器的登錄操作:首先進(jìn)行服務(wù)器用戶名和密碼的驗證,判斷通過升級功能IP數(shù)據(jù)包里解析出的服務(wù)器的用戶名和密碼與真實啟動的服務(wù)器的用戶名與密碼是否一致,根據(jù)配置會校驗3次,如果3次校驗都失敗,退出此次升級,只有FTP服務(wù)器用戶名和密碼均正確,才能繼續(xù)進(jìn)行下一步。通過對FTP服務(wù)器的用戶名和密碼進(jìn)行校驗,增加了小基站設(shè)備遠(yuǎn)程升級功能的安全性和可靠性。endprint
基站上電后,系統(tǒng)啟動時按n/o,并校驗解析的FTP服務(wù)器IP地址、端口號以及pub路徑下臨時系統(tǒng)是否正確,如果不正確,則串口會打印連接FTP服務(wù)器失敗消息,退出升級流程;如果正確,則開始與FTP服務(wù)器建立TCP連接[6],同時檢測TCP的建立是否成功。若此網(wǎng)絡(luò)連接沒有建立成功,退出本次軟件升級;若網(wǎng)絡(luò)連接建立成功,則可建立起FTP服務(wù)器的命令控制通道,之后與FTP服務(wù)器的命令傳輸都是通過此通道進(jìn)行。緊接著微基站的軟件系統(tǒng)要加載pub文件夾下的uImage臨時系統(tǒng)。軟件網(wǎng)絡(luò)升級的流程圖如圖1所示:
基站上電后,系統(tǒng)啟動時按n/o進(jìn)入網(wǎng)絡(luò)啟動模式,會從FTP服務(wù)器pub文件夾下自動加載uImage,進(jìn)入臨時系統(tǒng),通過tftp將鏡像文件上傳到指定路徑下,通過執(zhí)行升級腳本./burn.sh fw_all,當(dāng)出現(xiàn)刷寫分區(qū)完成標(biāo)志Done時,通過reboot重啟系統(tǒng),當(dāng)系統(tǒng)正常啟動后,通過命令cat/etc/fwversion可以查看軟件版本,對比之前版本,若版本改變,則表示升級成功。
在小基站升級過程中,一般將小基站與PC通過網(wǎng)線直連,將FTP服務(wù)器IP設(shè)置為192.168.0.36,通過用戶名和密碼登陸,設(shè)置pub路徑,重啟基站按n/o從FTP服務(wù)器啟動uImage,若成功進(jìn)入臨時系統(tǒng),則如圖2所示。若網(wǎng)絡(luò)啟動失敗,串口則出現(xiàn)如下打印,如圖3所示。
當(dāng)網(wǎng)絡(luò)啟動失敗時,首先檢查IP設(shè)置是否正確或是否存在IP沖突,此FTP服務(wù)器IP固定為192.168.0.36。然后再確認(rèn)FTP服務(wù)器加載路徑是否正確,pub文件夾下是否存在uImage。如果FTP加載臨時系統(tǒng)失敗,則需重啟系統(tǒng),直到成功從FTP啟動uImage,配置基站IP,使其和PC位于同一網(wǎng)段,然后通過tftp將應(yīng)用軟件flash上傳到指定路徑,再通過執(zhí)行升級腳本,刷寫分區(qū)完成后,重啟系統(tǒng),則升級成功,如圖4所示。
升級成功后,查看軟件版本,如圖5所示:
2.2 Web遠(yuǎn)程升級軟件流程設(shè)計
Web遠(yuǎn)程升級:通過嵌入式GoAhead Web服務(wù)器調(diào)用標(biāo)準(zhǔn)的CGI接口將應(yīng)用程序的鏡像文件傳輸?shù)叫』驹O(shè)備的flash中,然后刷寫鏡像分區(qū),重啟系統(tǒng)完成升級。為了實現(xiàn)Web遠(yuǎn)程軟件升級,需要研究GoAheadWeb服務(wù)器端GoForms標(biāo)準(zhǔn)的通用CGI網(wǎng)關(guān)接口的處理過程[7]。在GoAhead中,GoForms過程主要處理用戶請求的各種指令消息,首先它會解釋以“/goform”形式開始的URL,緊跟著“/goform”之后的字符串websFormDefine定義了表單名字和用戶請求指令的處理方法,然后通過調(diào)用CGI應(yīng)用接口程序處理從Web服務(wù)器傳遞來的各種請求指令消息,最后GoAhead主要利用動態(tài)asp過程獲取系統(tǒng)信息,將輸出結(jié)果返回給用戶,然后動態(tài)顯示在Web頁面上。通過GoAhead Web服務(wù)器進(jìn)行軟件遠(yuǎn)程升級的流程如圖6所示:
小基站軟件遠(yuǎn)程升級流程:首先將編譯好的應(yīng)用程序打包成一個名為flash.img的鏡像文件,然后在主機PC端,通過瀏覽器登陸IP地址訪問小基站設(shè)備Web界面。在GoAhead Web服務(wù)器端,打開URL解析模塊,可以解析HTTP協(xié)議,CGI應(yīng)用程序始終在HTTP默認(rèn)80端口等待客戶端發(fā)起HTTP連接請求,當(dāng)PC端向GoAhead Web Server發(fā)起一個HTTP連接請求,GoAhead Web服務(wù)器收到一個HTTP連接請求后,與客戶端之間進(jìn)行三次TCP連接建立,當(dāng)三次握手連接建立成功后,會返回客戶端一個HTTP響應(yīng),例如返回一個動態(tài)asp頁面。根據(jù)客戶端發(fā)起的應(yīng)用請求,在服務(wù)器端會調(diào)用相應(yīng)的CGI應(yīng)用程序接口,實現(xiàn)不同的功能需求。進(jìn)行Web遠(yuǎn)程升級時,在PC客戶端發(fā)起版本升級請求,Web服務(wù)器端GoForms應(yīng)用程序接口會調(diào)用websFormDefine函數(shù)把客戶端的flash.img鏡像文件傳輸?shù)叫』驹O(shè)備的內(nèi)存中,臨時保存在根目錄下的tmp文件夾,然后GoForms應(yīng)用程序調(diào)用升級腳本burn.sh把傳輸過來的應(yīng)用程序升級包的鏡像文件解開,對鏡像文件的魔數(shù)、文件長度進(jìn)行檢查校驗,并按鏡像文件定義的頭部信息依次寫入小基站設(shè)備的Nand Flash中,最后重啟小基站設(shè)備即可啟動新版本系統(tǒng)。
3 版本回退的流程設(shè)計
版本回退的設(shè)計思路是基于版本升級過程的優(yōu)化,在設(shè)備升級過程中,難免會出現(xiàn)一些差錯,一旦出現(xiàn)升級失敗,便可以從備份flash啟動。在設(shè)備上電后,首先下載鏡像文件并解壓縮,解析并與當(dāng)前flash中版本對比,若軟件版本匹配失敗,則退出升級過程;若版本匹配成功,則將當(dāng)前flash拷貝至備份flash中,覆蓋備份flash里面的版本。將升級版本文件下載至主flash,并將版本激活,重啟系統(tǒng),從主flash啟動。通過CPLD邏輯器件[8]設(shè)置啟動超時定時器時間為10 s,同時設(shè)置啟動標(biāo)志位Flag,F(xiàn)lag為1表示從主flash啟動,F(xiàn)lag為0表示從備份flash啟動,若正常啟動系統(tǒng)定時器超時或升級過程中出現(xiàn)失敗,此時標(biāo)志為Flag置為0,則切換到備份flash啟動,更改主、備份flash設(shè)置并保存。版本回退的軟件流程圖如圖7所示。
4 結(jié)束語
隨著嵌入式通信設(shè)備增值業(yè)務(wù)需求的擴(kuò)大,軟件版本升級和版本回退成為不可或缺的重要功能。提出小基站設(shè)備軟件版本升級以及回退機制,網(wǎng)絡(luò)升級采用用戶名和密碼校驗等加密模式[9],提高了用戶權(quán)限管理系統(tǒng)的安全性,Web遠(yuǎn)程升級采用GoAhead Web服務(wù)器的標(biāo)準(zhǔn)CGI應(yīng)用程序接口進(jìn)行文件傳輸,響應(yīng)速度快,可移植,適用于多種操作系統(tǒng),使設(shè)備的工程維護(hù)方便、有效,提升了工作效率。在小基站設(shè)備軟件版本升級過程中支持版本回退機制,提高了小基站軟件升級的穩(wěn)定性和可靠性[10],后期研究開發(fā)的重點將集中于在升級過程中增加斷點重傳的優(yōu)化方案,提升升級效率。endprint
參考文獻(xiàn):
[1] 趙炯,賈培源,李中山,等. 嵌入式設(shè)備遠(yuǎn)程在線升級技術(shù)[J]. 計算機工程, 2010,36(12): 262-264.
[2] Antti Kennebunk. Non-Service Affecting Software Upgrades for Multi-Service Routers[C]//Design of Reliable Communication Networks. Naperville USA, 2005: 16-19.
[3] 黃健,陳榮征,李代平,等. 基于ARM嵌入式系統(tǒng)的Boot Loader啟動分析與移植[J]. 現(xiàn)代計算機, 2007,25(7): 85-87.
[4] 嚴(yán)菊明. 基于ARM嵌入式系統(tǒng)的通用Bootloader的設(shè)計與實現(xiàn)[D]. 南京: 東南大學(xué), 2007: 19-21.
[5] 馬豐璽,楊斌,衛(wèi)洪春. 非易失存儲器NANDFlash及其在嵌入式系統(tǒng)中的應(yīng)用[J]. 計算機技術(shù)與發(fā)展, 2007,17(1): 203-205.
[6] Ulrik Eklund, Jan Bosch. Architecture for Embedded Open Software Ecosystems[J]. Journal of Systems and Software, 2014,92(1): 128-142.
[7] 范海燕,宋加磊,管磊. 客戶端設(shè)備遠(yuǎn)程管理的方案及實現(xiàn)[J]. 信息技術(shù), 2007,33(6): 137-140.
[8] 曹耀欽,慕曉冬,郭文普,等. 計算機網(wǎng)絡(luò)技術(shù)及應(yīng)用[M]. 北京: 機械工業(yè)出版社, 2005.
[9] Yang Cao, Chunhua Hu, Bozhi Ma, et al. Secure Method for Software Upgrades for Implantable Medical Devices[J]. Tsinghua Science & Technology, 2010,15(5): 517-525.
[10] 羅娟,曹陽,鄭剛,等. 網(wǎng)絡(luò)應(yīng)用軟件中高可用性的設(shè)計與實現(xiàn)[C]//通信軟件技術(shù)學(xué)術(shù)年會論文集. 2003: 75-79.endprint