本發(fā)明涉及數(shù)字電視技術(shù),尤其涉及一種機(jī)頂盒軟件升級方法及機(jī)頂盒。
背景技術(shù):隨著數(shù)字電視技術(shù)的發(fā)展,機(jī)頂盒已經(jīng)成為很多家庭的主要家電產(chǎn)品,機(jī)頂盒生產(chǎn)廠商提供的機(jī)頂盒軟件、硬件版本都在逐漸增多。為了滿足數(shù)字電視用戶不斷增長的業(yè)務(wù)需求,在網(wǎng)絡(luò)運(yùn)營上,需要對機(jī)頂盒不斷進(jìn)行更新?lián)Q代。而在機(jī)頂盒上開通新的業(yè)務(wù)、解決機(jī)頂盒軟件缺陷等都需要對機(jī)頂盒軟件進(jìn)行升級,但由于機(jī)頂盒的多廠家、多軟硬件版本,使得機(jī)頂盒軟件升級存在很大的難度,機(jī)頂盒軟件升級成為了數(shù)字電視網(wǎng)絡(luò)運(yùn)營商需要面臨的重要問題之一。機(jī)頂盒的軟件按照功能模塊劃分,可以劃分為啟動(dòng)(Boot)模塊、升級(Loader)模塊以及應(yīng)用(APP)軟件模塊。機(jī)頂盒為每一模塊分配獨(dú)立的閃存(Flash)分區(qū),存儲編譯的可獨(dú)立運(yùn)行的模塊文件。其中,啟動(dòng)模塊,用于機(jī)頂盒的初始化和引導(dǎo),在機(jī)頂盒啟動(dòng)后,首先執(zhí)行燒錄在Flash中的啟動(dòng)模塊文件,加載系統(tǒng)軟件;升級模塊,用于對啟動(dòng)模塊以及應(yīng)用軟件模塊進(jìn)行更新,即用于對機(jī)頂盒軟件進(jìn)行升級,其中,機(jī)頂盒軟件包括系統(tǒng)軟件、升級模塊軟件以及應(yīng)用軟件;應(yīng)用軟件模塊,為機(jī)頂盒的功能模塊,在啟動(dòng)模塊啟動(dòng)機(jī)頂盒后,加載應(yīng)用軟件模塊中的應(yīng)用軟件,執(zhí)行相應(yīng)功能。在升級模塊對啟動(dòng)模塊以及應(yīng)用軟件模塊升級時(shí),在接收到軟件升級包后,將燒錄至Flash中的升級模塊文件讀取至內(nèi)存,在內(nèi)存中運(yùn)行升級模塊文件,運(yùn)行的升級模塊文件對軟件升級包進(jìn)行解析,并將解析得到的軟件信息更新對應(yīng)燒錄在Flash中的軟件信息,從而完成軟件的升級。實(shí)際應(yīng)用中,隨著機(jī)頂盒功能的日益擴(kuò)展,升級模塊也存在更新(升級)的需求,即需要對升級模塊軟件也進(jìn)行升級。當(dāng)升級模塊出現(xiàn)問題,或進(jìn)行功能擴(kuò)充,或有調(diào)整需求,需要進(jìn)行升級時(shí),升級模塊的升級流程如下:生產(chǎn)廠商或運(yùn)營廠商根據(jù)需要升級的升級模塊功能,制作用于對升級模塊進(jìn)行升級的只讀存儲器(ROM,Read-OnlyMemory)文件,即升級模塊軟件并下發(fā)至升級模塊;機(jī)頂盒在啟動(dòng)后,升級模塊接收ROM文件,在接收完成后,擦除燒錄在Flash中升級模塊對應(yīng)的ROM文件數(shù)據(jù),然后將接收的ROM文件寫入Flash中擦除的空間,并將燒錄至Flash中的ROM文件讀取至內(nèi)存,在內(nèi)存中運(yùn)行ROM文件,從而完成升級模塊功能的升級。由上述可見,現(xiàn)有的機(jī)頂盒軟件升級方法,在對升級模塊進(jìn)行功能升級時(shí),接收到ROM文件后,需要先在Flash中擦除升級前升級模塊對應(yīng)的ROM文件數(shù)據(jù),然后將接收的ROM文件寫入該升級模塊對應(yīng)的Flash空間。這樣,在擦除或?qū)懭氲倪^程中,如果機(jī)頂盒斷電,或者,擦除或?qū)懭霑r(shí)發(fā)生數(shù)據(jù)錯(cuò)誤,將導(dǎo)致讀取至內(nèi)存的待升級ROM文件不完整,使得機(jī)頂盒不能完成對升級模塊的升級,進(jìn)而導(dǎo)致系統(tǒng)軟件以及應(yīng)用軟件的升級不能正常進(jìn)行,使得機(jī)頂盒不能正常運(yùn)行,機(jī)頂盒軟件升級效率低,降低了機(jī)頂盒運(yùn)行的可靠性。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明的實(shí)施例提供一種機(jī)頂盒軟件升級方法,提升機(jī)頂盒軟件升級效率、提高機(jī)頂盒運(yùn)行的可靠性。本發(fā)明的實(shí)施例還提供一種機(jī)頂盒,提升機(jī)頂盒軟件升級效率、提高機(jī)頂盒運(yùn)行的可靠性。為達(dá)到上述目的,本發(fā)明實(shí)施例提供的一種機(jī)頂盒軟件升級方法,該方法包括:預(yù)先獲取升級模塊軟件中的數(shù)據(jù)加載信息,將獲取的數(shù)據(jù)加載信息封裝為只讀存儲器ROM文件,然后燒錄至機(jī)頂盒的閃存分區(qū)中;接收升級文件;讀取燒錄至機(jī)頂盒的閃存分區(qū)中的ROM文件,然后運(yùn)行讀取的ROM文件;觸發(fā)運(yùn)行的ROM文件解析接收的升級文件,獲取升級文件中包含升級模塊的可執(zhí)行固件格式文件;運(yùn)行解析的升級模塊的可執(zhí)行固件格式文件。其中,所述升級文件進(jìn)一步包含有系統(tǒng)升級軟件、和/或,應(yīng)用升級軟件。其中,在所述運(yùn)行解析的升級模塊的可執(zhí)行固件格式文件的步驟之后,所述方法進(jìn)一步包括:判斷解析的升級文件中包含系統(tǒng)軟件或應(yīng)用軟件的可執(zhí)行固件格式文件,如果包含有,運(yùn)行系統(tǒng)軟件或應(yīng)用軟件的可執(zhí)行固件格式文件。其中,所述封裝的ROM文件中,進(jìn)一步包括預(yù)先設(shè)置的私鑰信息以及校驗(yàn)算法,在所述接收升級文件的步驟之前,所述方法進(jìn)一步包括:采用預(yù)先設(shè)置的校驗(yàn)算法,對可執(zhí)行固件格式文件進(jìn)行簽名,得到簽名信息,并使用預(yù)先設(shè)置的生成私鑰信息的加密算法生成的公鑰,加密簽名信息,將可執(zhí)行固件格式文件、加密的簽名信息以及系統(tǒng)升級軟件和應(yīng)用升級軟件封裝在升級文件中。其中,所述解析升級文件中包含升級模塊的可執(zhí)行固件格式文件包括:解析升級文件,獲取可執(zhí)行固件格式文件以及密文的簽名信息;讀取燒錄在閃存分區(qū)中預(yù)先設(shè)置的私鑰,對簽名信息進(jìn)行解密,得到明文的簽名信息;采用預(yù)先設(shè)置的校驗(yàn)算法,對可執(zhí)行固件格式文件進(jìn)行校驗(yàn),得到校驗(yàn)信息;判斷明文的簽名信息是否與校驗(yàn)信息一致,如果一致,執(zhí)行所述運(yùn)行解析的升級模塊的可執(zhí)行固件格式文件的流程,否則,結(jié)束流程。其中,所述校驗(yàn)算法為消息摘要算法第五版校驗(yàn)算法,所述預(yù)先設(shè)置的私鑰信息采用數(shù)據(jù)加密算法生成。其中,所述機(jī)頂盒的操作系統(tǒng)為Linux操作系統(tǒng),所述運(yùn)行解析的升級模塊的可執(zhí)行固件格式文件包括:在當(dāng)前父進(jìn)程下開啟新的Linux子進(jìn)程,并為Linux子進(jìn)程分配資源;調(diào)用新開啟的Linux子進(jìn)程,執(zhí)行升級模塊的可執(zhí)行固件格式文件;父進(jìn)程監(jiān)控Linux子進(jìn)程的執(zhí)行狀況,在監(jiān)控到Linux子進(jìn)程執(zhí)行升級模塊的可執(zhí)行固件格式文件完畢,釋放Linux子進(jìn)程占用的資源。一種機(jī)頂盒,該機(jī)頂盒包括:啟動(dòng)模塊、升級模塊以及應(yīng)用軟件模塊,其中,啟動(dòng)模塊,用于在機(jī)頂盒啟動(dòng)后,引導(dǎo)和初始化機(jī)頂盒;應(yīng)用軟件模塊,用于在啟動(dòng)模塊啟動(dòng)機(jī)頂盒后,根據(jù)用戶指令加載應(yīng)用軟件;升級模塊,用于預(yù)先獲取升級模塊軟件中的數(shù)據(jù)加載信息,將獲取的數(shù)據(jù)加載信息封裝為ROM文件,然后燒錄至升級模塊對應(yīng)的閃存分區(qū)中;接收升級文件;讀取燒錄至機(jī)頂盒的閃存分區(qū)中的ROM文件,然后運(yùn)行讀取的ROM文件;觸發(fā)運(yùn)行的ROM文件解析接收的升級文件,獲取升級文件包含升級模塊的可執(zhí)行固件格式文件;運(yùn)行解析的升級模塊的可執(zhí)行固件格式文件。較佳地,所述升級模塊進(jìn)一步用于判斷解析的升級文件中是否包含系統(tǒng)軟件或應(yīng)用軟件的可執(zhí)行固件格式文件,如果包含有,運(yùn)行系統(tǒng)軟件或應(yīng)用軟件的可執(zhí)行固件格式文件。較佳地,所述升級模塊包括:ROM文件存儲單元、ROM文件運(yùn)行單元、解析單元以及升級單元,其中,ROM文件存儲單元,用于預(yù)先獲取升級模塊軟件中的數(shù)據(jù)加載信息,將獲取的數(shù)據(jù)加載信息封裝為ROM文件,然后燒錄至機(jī)頂盒的閃存分區(qū)中;ROM文件運(yùn)行單元,用于接收升級文件;讀取燒錄至機(jī)頂盒的閃存中的ROM文件,然后運(yùn)行讀取的ROM文件;解析單元,用于觸發(fā)運(yùn)行的ROM文件解析接收的升級文件,獲取升級文件中包含升級模塊的可執(zhí)行固件格式文件;升級單元,用于運(yùn)行解析的升級模塊的可執(zhí)行固件格式文件。由上述技術(shù)方案可見,本發(fā)明實(shí)施例提供的一種機(jī)頂盒軟件升級方法及機(jī)頂盒,通過預(yù)先將包含數(shù)據(jù)加載信息的ROM文件燒錄至機(jī)頂盒的Flash分區(qū)中,因而,在接收到升級文件后,可以直接從Flash分區(qū)讀取燒錄的ROM文件,輸出至內(nèi)存,并在內(nèi)存中運(yùn)行ROM文件,以對接收的升級文件進(jìn)行解析。無需對ROM文件進(jìn)行擦除以及寫入的操作,可以避免在擦除和寫入過程中機(jī)頂盒斷電或數(shù)據(jù)錯(cuò)誤導(dǎo)致的升級模塊不能正常運(yùn)行的技術(shù)問題,進(jìn)而保障系統(tǒng)軟件以及應(yīng)用軟件升級的正常進(jìn)行,有效提升了機(jī)頂盒軟件的升級效率,并提高了機(jī)頂盒運(yùn)行的可靠性。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,以下將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹。顯而易見地,以下描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員而言,還可以根據(jù)這些附圖所示實(shí)施例得到其它的實(shí)施例及其附圖。圖1為本發(fā)明實(shí)施例機(jī)頂盒軟件升級方法流程示意圖。圖2為本發(fā)明實(shí)施例機(jī)頂盒軟件升級方法具體流程示意圖。圖3為本發(fā)明實(shí)施例的機(jī)頂盒結(jié)構(gòu)示意圖。具體實(shí)施方式以下將結(jié)合附圖對本發(fā)明各實(shí)施例的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所得到的所有其它實(shí)施例,都屬于本發(fā)明所保護(hù)的范圍?,F(xiàn)有的機(jī)頂盒軟件升級方法,如果需要對升級模塊進(jìn)行功能升級,需要在升級模塊對應(yīng)的Flash中執(zhí)行擦除和寫入處理,使得在擦除或?qū)懭胩幚淼倪^程中發(fā)生斷電或數(shù)據(jù)錯(cuò)誤時(shí),將導(dǎo)致無法對升級模塊進(jìn)行升級,進(jìn)而導(dǎo)致系統(tǒng)軟件以及應(yīng)用軟件的升級不能正常進(jìn)行,造成機(jī)頂盒軟件升級效率低,運(yùn)行可靠性不高。實(shí)際應(yīng)用中,在升級模塊功能升級過程中,寫入Flash中的升級模塊軟件信息中,只是利用到寫入的一部分信息(非功能升級信息),用于在讀取到內(nèi)存后,解析升級模塊軟件中的功能升級信息,對于功能升級信息,在將該功能升級信息寫入到Flash后,只是簡單地將該功能升級信息從Flash中讀出到內(nèi)存中,在內(nèi)存中,通過運(yùn)行非功能升級信息,對讀入的功能升級信息進(jìn)行解析,從而實(shí)現(xiàn)升級模塊的功能升級。因而,本發(fā)明實(shí)施例中,考慮對于同一生產(chǎn)廠商生產(chǎn)的機(jī)頂盒,在每一次升級模塊功能更新時(shí),由于封裝功能升級信息的編碼和格式一般不會發(fā)生變化,因而,用于解析功能升級信息的非功能升級信息實(shí)質(zhì)上是無需更新的,升級模塊軟件中包含的更新信息為功能升級信息。基于上述考慮,本發(fā)明實(shí)施例中,在對升級模塊軟件進(jìn)行升級時(shí),將升級模塊軟件拆分為功能升級信息和數(shù)據(jù)加載信息兩部分,其中,數(shù)據(jù)加載信息對應(yīng)解析功能升級信息的非功能升級信息。功能升級信息封裝為機(jī)頂盒操作系統(tǒng)可執(zhí)行固件格式文件,例如,二進(jìn)制格式文件,并將該可執(zhí)行固件格式文件,與系統(tǒng)升級軟件以及應(yīng)用升級軟件,打包到升級文件,傳輸至機(jī)頂盒;并在機(jī)頂盒出廠前,預(yù)先將數(shù)據(jù)加載信息燒錄到Flash中,用于將接收到的升級文件中包含升級模塊的可執(zhí)行固件格式文件進(jìn)行解析,并執(zhí)行。這樣,在機(jī)頂盒斷電以及擦除或?qū)懭胩幚磉^程中發(fā)生數(shù)據(jù)錯(cuò)誤時(shí),不會導(dǎo)致Flash中的數(shù)據(jù)異常,保障升級模塊的正常運(yùn)行,進(jìn)而保障系統(tǒng)軟件以及應(yīng)用軟件升級的正常進(jìn)行。圖1為本發(fā)明實(shí)施例機(jī)頂盒軟件升級方法流程示意圖。參見圖1,該流程包括:步驟101,預(yù)先獲取升級模塊軟件中的數(shù)據(jù)加載信息,將獲取的數(shù)據(jù)加載信息封裝為ROM文件,然后燒錄至機(jī)頂盒的Flash分區(qū)中;本步驟中,通過對升級模塊軟件的分析,提取升級模塊軟件中用于解析升級模塊功能升級的數(shù)據(jù)加載信息,封裝為ROM文件并燒錄到機(jī)頂盒對應(yīng)存儲升級模塊的Flash分區(qū)中。這樣,在對升級模塊進(jìn)行功能升級時(shí),無需擦除升級模塊的Flash分區(qū)空間,再將升級模塊軟件中的數(shù)據(jù)加載信息寫入擦除的Flash分區(qū)空間。關(guān)于如何從升級模塊軟件中提取數(shù)據(jù)加載信息,可根據(jù)本領(lǐng)域技術(shù)人員掌握的慣用計(jì)算機(jī)編程知識分析得到,在此略去詳述。實(shí)際應(yīng)用中,為了保障接收到的升級文件,即升級模塊軟件以及其他軟件,例如,系統(tǒng)軟件以及應(yīng)用軟件的完整性,封裝的ROM文件中,還可以進(jìn)一步包括預(yù)先設(shè)置的私鑰信息以及校驗(yàn)算法。其中,私鑰信息可以是通過公用密鑰算法(RSA,Rivest-Shamir-Adlemanpublickeyalgorithm)生成的私鑰,當(dāng)然,在生成私鑰的同時(shí),還對應(yīng)生成公鑰。實(shí)際應(yīng)用中,也可以通過其他密鑰算法生成公鑰和私鑰,例如數(shù)據(jù)加密算法(DES,DataEncryptionStandard)、Diffie-Hellman算法等。關(guān)于公鑰和私鑰的生成方法為公知技術(shù),在此略去詳述。校驗(yàn)算法可以是消息摘要算法第五版(MD5,MessageDigestAlgorithm)校驗(yàn)算法,也可以是循環(huán)冗余校驗(yàn)碼(CRC,CyclicRedundancyCheck)算法等。步驟102,接收升級文件,然后讀取燒錄至機(jī)頂盒的Flash分區(qū)中的ROM文件,然后運(yùn)行讀取的ROM文件;本步驟中,可以是通過在線的方式,接收來自存儲有升級文件的服務(wù)器下發(fā)的升級文件;也可以是通過USB接口的方式,從與機(jī)頂盒相連的外部USB設(shè)備接收升級文件。升級文件中,包含有功能升級信息。功能升級信息用于實(shí)現(xiàn)升級模塊的升級,功能升級信息通過編譯和鏈接操作,生成操作系統(tǒng)可執(zhí)行的二進(jìn)制命令文件,即二進(jìn)制的可執(zhí)行固件格式文件。例如,生成后綴名為out的out文件。即.out文件就是擴(kuò)展名為out的文件,為可執(zhí)行文件。實(shí)際應(yīng)用中,升級文件中,還可以進(jìn)一步包括系統(tǒng)升級軟件以及應(yīng)用升級軟件。當(dāng)然,實(shí)際應(yīng)用中,升級文件也可以采用現(xiàn)有的生成方式,即包括數(shù)據(jù)加載信息,并將數(shù)據(jù)加載信息封裝為ROM文件,然后將out文件與ROM文件再封裝在升級文件中。本發(fā)明實(shí)施例中,升級文件可以采用預(yù)先設(shè)置的標(biāo)記進(jìn)行標(biāo)識。較佳地,為了保障升級文件的完整性以及安全性,可以對升級文件進(jìn)行完整性校驗(yàn)以及加密。例如,采用預(yù)先設(shè)置的校驗(yàn)算法,例如,MD5對out文件進(jìn)行簽名,得到簽名信息,并使用預(yù)先設(shè)置的生成私鑰信息的加密算法,例如,RSA生成的公鑰加密簽名信息,最后,將生成的out文件、加密的簽名信息以及系統(tǒng)升級軟件和應(yīng)用升級軟件封裝在升級文件中。當(dāng)然,實(shí)際應(yīng)用中,也可以對升級文件進(jìn)行簽名,或者,分別對out文件以及系統(tǒng)升級軟件、和/或,應(yīng)用升級軟件進(jìn)行簽名。升級文件格式如下:Out文件長度(4字節(jié))+out文件+密文(加密)的簽名信息(128字節(jié))+系統(tǒng)升級軟件、和/或,應(yīng)用升級軟件。其中,以系統(tǒng)升級軟件為例,系統(tǒng)升級軟件中包含的信息內(nèi)容,即系統(tǒng)升級軟件格式為:待更新數(shù)據(jù)在Flash分區(qū)中的存儲地址+待更新數(shù)據(jù)的大?。聰?shù)據(jù)的內(nèi)容。其中,待更新數(shù)據(jù)在Flash分區(qū)中的存儲地址是指Flash中對應(yīng)存儲系統(tǒng)升級軟件的存儲地址。本發(fā)明實(shí)施例中,升級模塊在接收到升級文件后,從Flash分區(qū)中,讀取燒錄至機(jī)頂盒的升級模塊對應(yīng)的ROM文件,輸出至內(nèi)存,并在內(nèi)存中運(yùn)行ROM文件,以對接收的升級文件進(jìn)行解析。由于包含數(shù)據(jù)加載信息的ROM文件已燒錄在Flash分區(qū)中,因而,無需進(jìn)行擦除以及寫入的操作,可以避免在擦除和寫入過程中機(jī)頂盒斷電或數(shù)據(jù)錯(cuò)誤導(dǎo)致的升級模塊不能正常運(yùn)行的技術(shù)問題,進(jìn)而保障系統(tǒng)軟件以及應(yīng)用軟件升級的正常進(jìn)行,有效提升了機(jī)頂盒軟件的升級效率,并提高了機(jī)頂盒運(yùn)行的可靠性。也就是說,本發(fā)明實(shí)施例中,如果需要對升級模塊進(jìn)行功能升級,只要將升級模塊的功能升級信息制作成out文件,并作為升級文件的一部分,而升級模塊的數(shù)據(jù)加載信息部分,在機(jī)頂盒出廠前就燒錄在機(jī)頂盒的Flash中,通過在內(nèi)存中運(yùn)行數(shù)據(jù)加載信息,自動(dòng)將升級文件中的out文件剝離出來進(jìn)行解析,并運(yùn)行解析的out文件,以對升級模塊進(jìn)行升級,從而實(shí)現(xiàn)升級模塊功能的自動(dòng)更新,而無需重新對Flash執(zhí)行擦除及寫入處理,避免在更新升級模塊時(shí),因斷電、數(shù)據(jù)寫入錯(cuò)誤引起的風(fēng)險(xiǎn)。步驟103,觸發(fā)運(yùn)行的ROM文件解析接收的升級文件,獲取升級文件中包含升級模塊的可執(zhí)行固件格式文件;本步驟中,在內(nèi)存中運(yùn)行的數(shù)據(jù)加載信息,對傳輸至內(nèi)存的升級文件進(jìn)行解析。如前所述,如果燒錄至Flash分區(qū)的ROM文件中,包含有預(yù)先設(shè)置的私鑰信息以及校驗(yàn)算法,則解析升級文件中包含升級模塊的可執(zhí)行固件格式文件具體包括:解析升級文件,獲取out文件以及密文的簽名信息;讀取燒錄在Flash分區(qū)中預(yù)先設(shè)置的私鑰,對簽名信息進(jìn)行解密,得到明文的簽名信息;采用預(yù)先設(shè)置的校驗(yàn)算法,對out文件進(jìn)行校驗(yàn),得到校驗(yàn)信息;判斷明文的簽名信息是否與校驗(yàn)信息一致,如果一致,執(zhí)行步驟104,否則,結(jié)束流程,即終止升級模塊功能升級流程。步驟104,運(yùn)行解析的升級模塊的可執(zhí)行固件格式文件。本步驟中,較佳地,操作系統(tǒng)為Linux操作系統(tǒng)。這樣,利用Linux操作系統(tǒng)可創(chuàng)建新進(jìn)程的功能,利用創(chuàng)建的新進(jìn)程執(zhí)行功能升級信息的固件程序(可執(zhí)行固件格式文件),并可利用已執(zhí)行的固件程序?qū)ζ渌浖M(jìn)行升級。運(yùn)行解析的升級模塊的可執(zhí)行固件格式文件具體包括:在當(dāng)前父進(jìn)程下開啟新的Linux子進(jìn)程,并為Linux子進(jìn)程分配資源;調(diào)用新開啟的Linux子進(jìn)程,執(zhí)行升級模塊的可執(zhí)行固件格式文件;父進(jìn)程監(jiān)控Linux子進(jìn)程的執(zhí)行狀況,在監(jiān)控到Linux子進(jìn)程執(zhí)行升級模塊的可執(zhí)行固件格式文件完畢,釋放Linux子進(jìn)程占用的資源。本步驟中,父進(jìn)程監(jiān)控Linux子進(jìn)程,直到升級模塊的功能升級結(jié)束。較佳地,在執(zhí)行解析的升級模塊的可執(zhí)行固件格式文件完畢后,該方法還可以進(jìn)一步包括:步驟105,判斷解析的升級文件中是否包含系統(tǒng)軟件或應(yīng)用軟件的可執(zhí)行固件格式文件,如果包含有,運(yùn)行系統(tǒng)軟件或應(yīng)用軟件的可執(zhí)行固件格式文件。本步驟中,運(yùn)行系統(tǒng)軟件或應(yīng)用軟件的可執(zhí)行固件格式文件,以對系統(tǒng)軟件或應(yīng)用軟件進(jìn)行升級為公知技術(shù),在此略去詳述。圖2為本發(fā)明實(shí)施例機(jī)頂盒軟件升級方法具體流程示意圖。參見圖2,該流程包括:步驟201,從Flash中讀取升級模塊對應(yīng)的數(shù)據(jù)加載信息,在內(nèi)存中運(yùn)行;本步驟中,機(jī)頂盒啟動(dòng)后,如果需要對升級模塊進(jìn)行功能升級,則將Flash中升級模塊對應(yīng)的數(shù)據(jù)加載信息,即ROM文件讀取到內(nèi)存中,并運(yùn)行數(shù)據(jù)加載信息。步驟202,獲取封裝的升級文件;本步驟中,可以通過在線下載的方式或從外部設(shè)備有線導(dǎo)入的方式獲取封裝的升級文件。升級文件中可以包括:功能升級信息(out文件)、和/或,系統(tǒng)升級軟件、和/或,應(yīng)用升級軟件。步驟203,解析封裝的升級文件,獲取out文件和加密的簽名信息;本步驟中,以對升級模塊進(jìn)行功能升級為例,則封裝的升級文件中,至少包含out文件。同時(shí),為了確保out文件的完整性以及傳輸安全性,在封裝的升級文件中,還包含有對out文件進(jìn)行簽名、且對簽名信息進(jìn)行加密的簽名信息。步驟204,讀取預(yù)先燒錄在Flash中的私鑰,對加密的簽名信息進(jìn)行解密,得到解密后的簽名信息;本步驟中,對簽名信息進(jìn)行加密的公鑰與預(yù)先燒錄在Flash中的私鑰基于同一加密算法生成。在網(wǎng)絡(luò)側(cè)的升級文件中,采用公鑰對簽名信息進(jìn)行加密,在用戶側(cè)的機(jī)頂盒中,采用公鑰對應(yīng)的私鑰對簽名信息進(jìn)行解密。步驟205,采用預(yù)先設(shè)置的校驗(yàn)算法,對out文件進(jìn)行校驗(yàn),得到校驗(yàn)信息;本步驟中,采用MD5對out文件進(jìn)行簽名校驗(yàn),得到校驗(yàn)信息。步驟206,判斷解密后的簽名信息與校驗(yàn)信息是否一致,如果一致,執(zhí)行步驟207,否則,結(jié)束流程;本步驟中,如果解密后的簽名信息與校驗(yàn)信息一致,表明接收到的out文件是完整的、且傳輸是安全的。步驟207,利用Linux操作系統(tǒng)的分叉(fork)命令創(chuàng)建子進(jìn)程;步驟208,子進(jìn)程執(zhí)行out文件;步驟209,父進(jìn)程監(jiān)控子進(jìn)程的執(zhí)行情況,監(jiān)控到out文件執(zhí)行完畢,回收子進(jìn)程資源。本步驟中,父進(jìn)程在監(jiān)控到子進(jìn)程執(zhí)行out文件完畢后,回收子進(jìn)程資源,升級模塊的功能升級結(jié)束。后續(xù)流程中,如果升級文件中還包含有系統(tǒng)升級軟件或應(yīng)用升級軟件,則對系統(tǒng)軟件或應(yīng)用軟件進(jìn)行升級。圖3為本發(fā)明實(shí)施例的機(jī)頂盒結(jié)構(gòu)示意圖。參見圖3,該機(jī)頂盒包括:啟動(dòng)模塊301、升級模塊302以及應(yīng)用軟件模塊303,其中,啟動(dòng)模塊301,用于在機(jī)頂盒啟動(dòng)后,引導(dǎo)和初始化機(jī)頂盒;本發(fā)明實(shí)施例中,啟動(dòng)模塊在機(jī)頂盒中對應(yīng)有獨(dú)立的Flash分區(qū)。引導(dǎo)和初始化機(jī)頂盒,即執(zhí)行燒錄在Flash中的啟動(dòng)模塊文件,加載系統(tǒng)軟件。應(yīng)用軟件模塊303,用于在啟動(dòng)模塊301啟動(dòng)機(jī)頂盒后,根據(jù)用戶指令加載應(yīng)用軟件;本發(fā)明實(shí)施例中,應(yīng)用軟件模塊在機(jī)頂盒中也對應(yīng)有獨(dú)立的Flash分區(qū),存儲相應(yīng)的應(yīng)用軟件。在用戶指令需要執(zhí)行應(yīng)用功能時(shí),從應(yīng)用軟件模塊對應(yīng)的Flash分區(qū)中,加載應(yīng)用軟件,從而執(zhí)行相應(yīng)功能。升級模塊302,用于預(yù)先獲取升級模塊302軟件中的數(shù)據(jù)加載信息,將獲取的數(shù)據(jù)加載信息封裝為ROM文件,然后燒錄至升級模塊302對應(yīng)的Flash分區(qū)中;接收升級文件;讀取燒錄至機(jī)頂盒的Flash分區(qū)中的ROM文件,然后運(yùn)行讀取的ROM文件;觸發(fā)運(yùn)行的ROM文件解析接收的升級文件,獲取升級文件中包含升級模塊302的可執(zhí)行固件格式文件;運(yùn)行解析的升級模塊302的可執(zhí)行固件格式文件。本發(fā)明實(shí)施例中,升級模塊的升級功能啟動(dòng)后,數(shù)據(jù)加載信息軟件開始運(yùn)行,即升級模塊啟動(dòng)后,從升級模塊對應(yīng)的Flash分區(qū)中讀取ROM文件并運(yùn)行,在運(yùn)行后,解析升級文件并運(yùn)行解析的升級文件。其中,解析升級文件并運(yùn)行解析的升級文件的具體流程如下:按照預(yù)先設(shè)置的格式實(shí)現(xiàn)升級文件的解析,獲取升級文件中包含的out文件以及密文的簽名信息,從而將升級文件內(nèi)的功能升級信息(out文件)和密文簽名信息剝離出來。然后,利用固化在Flash分區(qū)中的私鑰,對密文簽名信息其進(jìn)行解密,得到明文的簽名信息。同時(shí),對整個(gè)out文件進(jìn)行md5校驗(yàn),將得到的校驗(yàn)信息與解密得到的簽名信息對比,從而保證加載正確的功能升級信息且保證沒有錯(cuò)誤。驗(yàn)證out文件后,開啟新的Linux子進(jìn)程,并在子進(jìn)程內(nèi)執(zhí)行out文件,同時(shí),父進(jìn)程監(jiān)控子進(jìn)程的執(zhí)行狀況,直到升級功能結(jié)束。這樣,如果在升級模塊執(zhí)行升級功能時(shí)發(fā)生斷電,由于升級模塊所需的數(shù)據(jù)加載信息軟件沒有進(jìn)行更新,因而,不會影響升級模塊的正常運(yùn)行,在下次開機(jī)后,升級模塊的數(shù)據(jù)加載信息軟件還會自動(dòng)運(yùn)行,并按照上述描述流程完成升級功能。較佳地,升級模塊還可以進(jìn)一步用于判斷解析的升級文件中是否包含系統(tǒng)軟件或應(yīng)用軟件的可執(zhí)行固件格式文件,如果包含有,運(yùn)行系統(tǒng)軟件或應(yīng)用軟件的可執(zhí)行固件格式文件。其中,升級模塊包括:ROM文件存儲單元、ROM文件運(yùn)行單元、解析單元以及升級單元(圖中未示出),其中,ROM文件存儲單元,用于預(yù)先獲取升級模塊軟件中的數(shù)據(jù)加載信息,將獲取的數(shù)據(jù)加載信息封裝為ROM文件,然后燒錄至機(jī)頂盒的Flash分區(qū)中;ROM文件運(yùn)行單元,用于接收升級文件;讀取燒錄至機(jī)頂盒的Flash中的ROM文件,然后運(yùn)行讀取的ROM文件;本發(fā)明實(shí)施例中,升級文件中包含有功能升級信息對應(yīng)的可執(zhí)行固件格式文件、和/或,系統(tǒng)升級軟件、和/或,應(yīng)用升級軟件。解析單元,用于觸發(fā)運(yùn)行的ROM文件解析接收的升級文件,獲取升級文件中包含升級模塊的可執(zhí)行固件格式文件;升級單元,用于運(yùn)行解析的升級模塊的可執(zhí)行固件格式文件。本發(fā)明實(shí)施例中,如果在網(wǎng)絡(luò)側(cè),采用預(yù)先設(shè)置的校驗(yàn)算法,對可執(zhí)行固件格式文件進(jìn)行簽名,得到簽名信息,并使用預(yù)先設(shè)置的生成私鑰信息的加密算法生成的公鑰,加密簽名信息,將可執(zhí)行固件格式文件、加密的簽名信息以及系統(tǒng)升級軟件和應(yīng)用升級軟件封裝在升級文件中。則升級模塊還可以進(jìn)一步包括:完整性校驗(yàn)單元,用于解析升級文件,獲取可執(zhí)行固件格式文件以及密文的簽名信息;讀取燒錄在Flash分區(qū)中預(yù)先設(shè)置的私鑰,對簽名信息進(jìn)行解密,得到明文的簽名信息;采用預(yù)先設(shè)置的校驗(yàn)算法,對可執(zhí)行固件格式文件進(jìn)行校驗(yàn),得到校驗(yàn)信息;判斷明文的簽名信息是否與校驗(yàn)信息一致,如果一致,執(zhí)行所述運(yùn)行解析的升級模塊的可執(zhí)行固件格式文件的流程,否則,結(jié)束流程。顯然,本領(lǐng)域技術(shù)人員可以對本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若對本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也包含這些改動(dòng)和變型在內(nèi)。