7](I)組網(wǎng)、升級(jí)操作簡單方便;
[0058](2)利用廣播數(shù)據(jù)的特性,對(duì)若干臺(tái)設(shè)備同時(shí)進(jìn)行批量升級(jí),升級(jí)周期短,節(jié)約資源;
[0059](3)與組播批量升級(jí)相比,不需要設(shè)備加入組播組,簡化了網(wǎng)絡(luò)通信交互流程;
[0060](4)在升級(jí)操作前對(duì)鏡像數(shù)據(jù)進(jìn)行驗(yàn)證,避免寫入非法鏡像數(shù)據(jù);在鏡像數(shù)據(jù)傳輸過程中進(jìn)行實(shí)時(shí)檢測,一旦發(fā)現(xiàn)丟包,立即標(biāo)識(shí)設(shè)備升級(jí)失敗,從多方面增強(qiáng)升級(jí)可靠性。
【附圖說明】
[0061]圖1為本發(fā)明提供的一種家庭網(wǎng)關(guān)本地批量升級(jí)的系統(tǒng)的結(jié)構(gòu)示意圖;
[0062]圖2為本發(fā)明中鏡像發(fā)送端子模塊的結(jié)構(gòu)框圖;
[0063]圖3為本發(fā)明中鏡像接收端子模塊的結(jié)構(gòu)框圖;
[0064]圖4為本發(fā)明提供的一種家庭網(wǎng)關(guān)本地批量升級(jí)的方法的流程圖。
【具體實(shí)施方式】
[0065]下面結(jié)合說明書附圖和具體實(shí)施例對(duì)本發(fā)明做出詳細(xì)的說明。
[0066]如圖1所示,本發(fā)明提供的一種家庭網(wǎng)關(guān)本地批量升級(jí)的系統(tǒng),包括鏡像發(fā)送端子模塊10、網(wǎng)絡(luò)連接設(shè)備20和多個(gè)設(shè)在不同家網(wǎng)關(guān)內(nèi)部的鏡像接收端子模塊30 ;其中,鏡像發(fā)送端子模塊10與鏡像接收端子模塊30通過網(wǎng)絡(luò)連接設(shè)備20連接,網(wǎng)絡(luò)連接設(shè)備20通過以太網(wǎng)方式分別與鏡像發(fā)送端子模塊10和每個(gè)家庭網(wǎng)關(guān)相連,使鏡像發(fā)送端子模塊10分別與每個(gè)運(yùn)行在不同家庭網(wǎng)關(guān)的鏡像接收端子模塊30連通。
[0067]鏡像發(fā)送端子模塊10按照一個(gè)固定長度字節(jié)對(duì)完整鏡像數(shù)據(jù)進(jìn)行分片,并對(duì)完整鏡像數(shù)據(jù)的鏡像信息以及在數(shù)據(jù)前加入分片索引、分片長度控制信息的各個(gè)分片鏡像數(shù)據(jù)分別進(jìn)行封裝,再通過廣播方式將封裝的鏡像信息以及各個(gè)分片鏡像數(shù)據(jù)發(fā)送給各個(gè)家庭網(wǎng)關(guān)的鏡像接收端子模塊;
[0068]每個(gè)鏡像接收端子模塊30接收鏡像發(fā)送端子模塊10發(fā)送的封裝的鏡像信息以及各個(gè)分片鏡像數(shù)據(jù),首先解析封裝的鏡像信息,根據(jù)解析內(nèi)容為鏡像數(shù)據(jù)分配相應(yīng)內(nèi)存空間;再解封裝、重組封裝的各個(gè)分片鏡像數(shù)據(jù),并對(duì)重組完成后的完整鏡像數(shù)據(jù)進(jìn)行校驗(yàn)和鏡像寫入操作。
[0069]在本發(fā)明中,網(wǎng)絡(luò)連接設(shè)備20是支持?jǐn)?shù)據(jù)鏈路層協(xié)議的HUB(集線器)或SWITCH(交換機(jī));網(wǎng)絡(luò)連接設(shè)備20通過每個(gè)家庭網(wǎng)關(guān)的LAN側(cè)端口與家庭網(wǎng)關(guān)內(nèi)部運(yùn)行的鏡像接收端子模塊30相連。
[0070]在本發(fā)明中,如圖2所示,鏡像發(fā)送端子模塊10包括:
[0071]發(fā)送程序初始化單元11,用于初始化鏡像發(fā)送端子模塊10的網(wǎng)絡(luò)通信協(xié)議;
[0072]發(fā)送動(dòng)態(tài)內(nèi)存分配單元12,在對(duì)網(wǎng)絡(luò)通信協(xié)議初始化后,根據(jù)待升級(jí)的完整鏡像數(shù)據(jù)大小,動(dòng)態(tài)分配同等大小的內(nèi)存空間,并將讀取的完整鏡像數(shù)據(jù)保存到分配的內(nèi)存空間中;
[0073]鏡像信息封裝單元13,對(duì)保存在發(fā)送動(dòng)態(tài)內(nèi)存分配單元12中的完整鏡像數(shù)據(jù)的鏡像信息進(jìn)行封裝,并發(fā)送;
[0074]其中,鏡像信息包括升級(jí)標(biāo)識(shí)、鏡像分片數(shù)目和鏡像總字節(jié)長度;
[0075]鏡像數(shù)據(jù)分片及封裝單元14,將保存在發(fā)送動(dòng)態(tài)內(nèi)存分配單元12中的完整鏡像數(shù)據(jù)按照一個(gè)固定長度字節(jié)進(jìn)行分片,并分別在每片分片鏡像數(shù)據(jù)前加入對(duì)應(yīng)的分片索引字段和分片長度字段(分片索引、分片長度控制信息)后進(jìn)行封裝,再將所有封裝的分片鏡像數(shù)據(jù)發(fā)送出去;
[0076]數(shù)據(jù)發(fā)送單元25,接收鏡像信息封裝單元13發(fā)送的封裝的鏡像信息以及鏡像數(shù)據(jù)分片及封裝單元14發(fā)送的所有封裝的分片鏡像數(shù)據(jù),并以廣播方式分別將封裝的鏡像信息和所有分片鏡像數(shù)據(jù)發(fā)送給鏡像接收端子模塊30 ;
[0077]在本發(fā)明中,數(shù)據(jù)發(fā)送單元25向鏡像接收端子模塊30以UDP協(xié)議(User DatagramProtocol,用戶數(shù)據(jù)報(bào)協(xié)議)發(fā)送廣播數(shù)據(jù),在發(fā)送廣播數(shù)據(jù)時(shí),需指定對(duì)端(鏡像接收端子模塊30)的定向廣播地址(如192.168.1.255,也可根據(jù)實(shí)際需求選擇其它廣播地址),以及鏡像發(fā)送端子模塊10和運(yùn)行于家庭網(wǎng)關(guān)內(nèi)部的鏡像接收端子模塊雙方約定的端口號(hào)。
[0078]在本發(fā)明中,如圖3所示,鏡像接收端子模塊30包括:
[0079]接收程序初始化單元31,用于初始化鏡像接收端子模塊30的網(wǎng)絡(luò)通信協(xié)議,并對(duì)鏡像發(fā)送端子模塊10和鏡像接收端子模塊30雙方約定的端口號(hào)進(jìn)行監(jiān)聽(即對(duì)鏡像發(fā)送端子模塊10發(fā)送的廣播數(shù)據(jù)包進(jìn)行監(jiān)聽);
[0080]數(shù)據(jù)接收單元32,當(dāng)接收程序初始化單元31監(jiān)聽到封裝的鏡像信息和各個(gè)分片鏡像數(shù)據(jù)廣播數(shù)據(jù)包時(shí),接收并發(fā)送封裝的鏡像信息和所有分片鏡像數(shù)據(jù)的廣播數(shù)據(jù)包;
[0081]鏡像信息解析單元33,對(duì)數(shù)據(jù)接收單元32接收的封裝的鏡像信息廣播數(shù)據(jù)包進(jìn)行解析;
[0082]接收動(dòng)態(tài)內(nèi)存分配單元34,根據(jù)鏡像信息解析單元33解析出的鏡像信息數(shù)據(jù),為重組的完整鏡像數(shù)據(jù)動(dòng)態(tài)分配同等大小的內(nèi)存空間;
[0083]分片鏡像數(shù)據(jù)解封裝及重組單元35,對(duì)數(shù)據(jù)接收單元32收到的封裝的分片鏡像數(shù)據(jù)進(jìn)行立即解封裝,得到分片索引字段、分片長度字段和分片鏡像數(shù)據(jù),并根據(jù)分片索引字段、分片長度字段對(duì)分片鏡像數(shù)據(jù)進(jìn)行數(shù)據(jù)重組,并保存到所述接收動(dòng)態(tài)內(nèi)存分配單元34動(dòng)態(tài)分配的內(nèi)存空間中,一直到所有分片鏡像數(shù)據(jù)收到后,結(jié)束數(shù)據(jù)重組操作,得到重組的完整鏡像數(shù)據(jù);
[0084]在本發(fā)明中,分片鏡像數(shù)據(jù)解封裝及重組單元35對(duì)于由于網(wǎng)絡(luò)不穩(wěn)定可能產(chǎn)生的封裝分片鏡像數(shù)據(jù)丟包,將立即停止分片鏡像數(shù)據(jù)的重組操作,并標(biāo)識(shí)設(shè)備升級(jí)失敗。
[0085]鏡像校驗(yàn)及升級(jí)單元36,對(duì)內(nèi)存空間中重組的完整鏡像數(shù)據(jù)的鏡像長度和合法性進(jìn)行校驗(yàn),并在校驗(yàn)成功后執(zhí)行鏡像軟件寫入Flash的操作。
[0086]如圖4所示,本發(fā)明提供的一種家庭網(wǎng)關(guān)本地批量升級(jí)的方法,包括以下步驟:
[0087]第一步、鏡像發(fā)送端子模塊按照一個(gè)固定長度字節(jié)對(duì)完整鏡像數(shù)據(jù)進(jìn)行分片(如1000,此處可根據(jù)需求選擇其他長度),并對(duì)鏡像信息和在數(shù)據(jù)前加入分片索引、分片長度控制信息的每片分片鏡像數(shù)據(jù)分別進(jìn)行封裝;
[0088]在本發(fā)明中,鏡像信息包括升級(jí)標(biāo)識(shí)、鏡像分片數(shù)目和鏡像總字節(jié)長度;鏡像分片數(shù)目是利用鏡像總字節(jié)長度和鏡像發(fā)送端子模塊對(duì)鏡像總字節(jié)長度(完整鏡像數(shù)據(jù))進(jìn)行分片時(shí)采用的一個(gè)固定長度字節(jié)計(jì)算獲得的。
[0089]在本發(fā)明中,分片索引和分片長度是在鏡像發(fā)送端子模塊按照一個(gè)固定長度字節(jié)對(duì)完整鏡像數(shù)據(jù)進(jìn)行分片時(shí),同時(shí)記錄獲得;在進(jìn)行封裝時(shí),先對(duì)鏡像信息進(jìn)行封裝發(fā)送,再順序地對(duì)分片鏡像數(shù)據(jù)進(jìn)行線性封裝,并在發(fā)送完一個(gè)封裝的分片鏡像數(shù)據(jù)后,進(jìn)行適當(dāng)?shù)难訒r(shí),再發(fā)送下一個(gè)封裝的分片鏡像數(shù)據(jù),如此循環(huán)直至所有封裝的分片鏡像數(shù)據(jù)發(fā)送完畢。
[0090]第二步、鏡像發(fā)送端子模塊通過廣播方式將封裝的鏡像信息和各個(gè)分片鏡像數(shù)據(jù)發(fā)送給家庭網(wǎng)關(guān)的鏡像接收端子模塊。
[0091]第三步、各個(gè)家庭網(wǎng)關(guān)的鏡像接收端子模塊對(duì)收到的鏡像信息進(jìn)行解析,并根據(jù)解析內(nèi)容為重組的完整鏡像數(shù)據(jù)分配相應(yīng)內(nèi)存空間;
[0092]第三步具體包括以下步驟:
[0093]步驟S301、家庭網(wǎng)關(guān)的鏡像接收端子模塊對(duì)收到的封裝的鏡像信息進(jìn)行解析,解析出升級(jí)標(biāo)識(shí)、鏡像分片數(shù)目和鏡像總字節(jié)長度;
[0094]步驟S302、根據(jù)解析出的升級(jí)標(biāo)識(shí)來判斷是否是鏡像升級(jí)操作,如果是鏡像升級(jí)操作,執(zhí)行步驟S303,否則,執(zhí)行步驟S304 ;
[0095]步驟S303、根據(jù)解析出的鏡像總字節(jié)長度分配相同長度的內(nèi)存空間,執(zhí)行步驟S305 ;
[0096]步驟S304、直接提示升級(jí)失?。?br>[0097]步驟S305、結(jié)束程序。
[0098]第四步、家庭網(wǎng)關(guān)的鏡像接收端子模塊對(duì)收到的封裝后的分片鏡像數(shù)據(jù)進(jìn)行解封裝、重組,并對(duì)重組完成后的鏡像數(shù)據(jù)進(jìn)行校驗(yàn)和鏡像寫入操作;
[0099]第四步具體包括以下步驟:
[0100]步驟S401、家庭網(wǎng)關(guān)的鏡像接收端子模塊對(duì)封裝的分片鏡像數(shù)據(jù)進(jìn)行解封裝,得到分片鏡像數(shù)據(jù)、分片索引和分片長度;
[0101]步驟S402、檢查每片分片鏡像數(shù)據(jù)的分片索引,判斷是否有丟包,如果發(fā)現(xiàn)有丟包,則執(zhí)行步驟S403 ;否則,執(zhí)行步驟S404 ;
[0102]步驟S403、標(biāo)識(shí)設(shè)備升級(jí)失敗,并返回錯(cuò)誤,不再進(jìn)行后續(xù)的升級(jí)操作,執(zhí)行步驟S408 ;
[0103]步驟S404、根據(jù)分片長度和分片索引對(duì)解析的對(duì)應(yīng)分片鏡像數(shù)據(jù)進(jìn)行數(shù)據(jù)重組操作;
[0104]步驟S40