專利名稱:一種網(wǎng)絡電視自動升級的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡電視,更具體地說,涉及一種網(wǎng)絡電視自動升級的方法。
背景技術(shù):
Nand-flash內(nèi)存為flash內(nèi)存的一種,其內(nèi)部采用非線性宏單元模式,為固態(tài)大 容量內(nèi)存的實現(xiàn)提供了廉價有效的解決方案。Nand-flash存儲器具有容量較大,改寫速度 快,適用于大量數(shù)據(jù)的存儲,因而在業(yè)界得到了越來越廣泛的應用,如嵌入式產(chǎn)品中包括數(shù) 碼相機、MP3隨身聽記憶卡、體積小巧的U盤等。NAND型閃存以塊為單位進行擦除操作。閃 存的寫入操作必須在空白區(qū)域進行,如果目標區(qū)域已經(jīng)有數(shù)據(jù),必須先擦除后寫入,因此擦 除操作是閃存的基本操作。Nand-flash協(xié)議允許Nand-flash在出廠的時候有5 %的壞塊,同時Nand-flash 在不斷的刷寫中也會產(chǎn)生壞塊,所以使用Nand-flash作為系統(tǒng)主存儲介質(zhì)時其可靠性就 需要特別關(guān)注。而在目前的網(wǎng)絡電視中,其自動升級的方法沒有充分考慮到Nand-flash內(nèi) 存的壞塊問題,導致升級的正確性無法得到保障。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有網(wǎng)絡電視自動升級的方法可靠性不高的 缺陷,提供一種雙機熱備份的網(wǎng)絡電視自動升級的方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是構(gòu)造一種網(wǎng)絡電視自動升級的方 法,使用兩個容量完全一樣的閃存,并在bootloader中設置配備的一個閃存為引導分區(qū)用 來存放當前使用的主程序,設置另一個閃存為備份分區(qū)用來存放當前使用的主程序的備 份,再對其進行升級,升級完畢后修改bootloader將原來的備份分區(qū)作為引導分區(qū)。本發(fā)明提供了一種網(wǎng)絡電視自動升級的方法,包括以下步驟Si、在bootloader中設置配備的一個閃存為引導分區(qū)用來存放當前使用的主程 序,設置另一個閃存為備份分區(qū)用來存放當前使用的主程序的備份;S2、升級程序檢查當前主程序的版本號,判斷是否需要進行升級,是則轉(zhuǎn)步驟S3, 否則結(jié)束;S3、檢查當前備份分區(qū)的設備號以及閃存的壞塊;S4、對備份分區(qū)進行刷寫載入升級數(shù)據(jù);S5、檢查備份分區(qū)是否刷寫成功,是則轉(zhuǎn)步驟S6,否則轉(zhuǎn)步驟S3 ;S6、修改bootloader將原來的備份分區(qū)作為引導分區(qū)。在本發(fā)明所述的網(wǎng)絡電視自動升級的方法中,所述步驟S6進一步包括以下步驟S61、在閃存的第1塊至第5塊中存放5份相同的第一階段引導代碼;S62、修改引導代碼程序從閃存的第6塊開始尋找第二階段的引導代碼;S63、進行u-boot啟動,判斷是否為第一次啟動,是則轉(zhuǎn)步驟S64,否則轉(zhuǎn)步驟 S65 ;
S64、進行第一次啟動的處理,轉(zhuǎn)步驟S66 ;S65、從壞塊的記錄信息中計算環(huán)境變量的啟動位置,并讀取環(huán)境變量至系統(tǒng),轉(zhuǎn) 步驟S66 ;S66、從系統(tǒng)的環(huán)境變量中取出mtd分區(qū)信息,同時讀取第0個塊,判斷第0個塊最 后一位是否為2,是則轉(zhuǎn)步驟S67,否則轉(zhuǎn)步驟S68 ;S67、從第0個分區(qū)取得mtdpart信息和啟動圖片位置信息,轉(zhuǎn)步驟S69 ;S68、使用環(huán)境變量中的mtdpart信息,轉(zhuǎn)步驟S69 ;S69、計算分區(qū)信息的變量和大小;S610、開始正式啟動內(nèi)核。在本發(fā)明所述的網(wǎng)絡電視自動升級的方法中,所述步驟S6在第一次啟動時還包 括位于步驟S69后的步驟S69’ 保存mtd分區(qū)信息,啟動圖片位置信息,寫驗證標志,寫應 用環(huán)境信息,修改第一次的標志為0x34,保存數(shù)據(jù)到第0個塊。在本發(fā)明所述的網(wǎng)絡電視自動升級的方法中,所述步驟S63中,通過判斷第0個塊 前 4 個整數(shù)是否為 0x01234567,0x89abcdef,0xlc8b9a01,0x98ab0022,是則為第一次啟動。在本發(fā)明所述的網(wǎng)絡電視自動升級的方法中,所述步驟S64進一步包括S641、掃描壞塊并進行壞塊的記錄;S642、在讀數(shù)據(jù)的最后一位設置為1,以告訴后面的代碼系統(tǒng)為第一次啟動;S643、在讀的數(shù)據(jù)的2047最后設置為0x12,以告訴后面的代碼系統(tǒng)為第一次啟 動;S644、計算u-boot的環(huán)境變量保存位置;S645、把系統(tǒng)的默認環(huán)境變量取出進行后面的處理;S646、保存設置到第0個塊。實施本發(fā)明的網(wǎng)絡電視自動升級的方法,具有以下有益效果本發(fā)明采用雙機熱 備份的模式提高了網(wǎng)絡電視自動升級方法的可靠性,保證了網(wǎng)絡電視能夠安全地升級,減 少了上門維護的成本。
下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,附圖中圖1是本發(fā)明優(yōu)選實施例中網(wǎng)絡電視自動升級的方法的流程圖;圖2是本發(fā)明優(yōu)選實施例中網(wǎng)絡電視自動升級的方法的具體流程圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對 本發(fā)明進行進一步詳細說明。請參閱圖1,為本發(fā)明優(yōu)選實施例中網(wǎng)絡電視自動升級的方法的流程圖。如圖1所 示,本發(fā)明提供的網(wǎng)絡電視自動升級的方法包括以下步驟首先,開始之后在步驟Sl中,采用雙機熱備份。配置兩個容量完全一樣的 Nand-flash。然后在bootloader中設置配備的一個閃存為引導分區(qū)用來存放當前使用的 主程序,設置另一個閃存為備份分區(qū)用來存放當前使用的主程序的備份。
隨后在步驟S2中,升級程序檢查當前主程序的版本號,判斷是否需要進行升級, 是則轉(zhuǎn)步驟S3,否則結(jié)束。如需進行升級則在步驟S3中,檢查當前備份分區(qū)的設備號以及Nand-flash的壞 塊。隨后在步驟S4中,對備份分區(qū)進行刷寫載入升級數(shù)據(jù)。隨后在步驟S5中,檢查備份分區(qū)是否刷寫成功,是則轉(zhuǎn)步驟S6,否則轉(zhuǎn)步驟S3。隨后在步驟S6中,修改bootloader將原來的備份分區(qū)作為引導分區(qū)。請參閱圖2,為本發(fā)明優(yōu)選實施例中網(wǎng)絡電視自動升級的方法的具體流程圖。如圖 2所示,在修改bootloader的過程中,為保證在升級后能成功引導,采用下面的解決方法在步驟S61中,在閃存的第1塊至第5塊中存放5份相同的第一階段引導代碼 ubl (小于 16K)。隨后在步驟S62中,修改引導代碼程序從閃存的第6塊開始尋找第二階段的引 導代碼。ubl程序經(jīng)過修改,從第6塊開始,找第二階段的引導代碼(u-boot. bin),每個 u-boot.bin占25 (共16個塊)。如果u-boot. bin的代碼在存放的時候,遇到壞塊,則數(shù) 據(jù)往后面的好塊存放,ubl進行自動的搜索,找到一個完整的u-boot. Bin。如果其啟動第一 個u-boot不成功,則啟動后面的u-boot,一共4個u-boot。如果系統(tǒng)都啟動不成功,則停 止系統(tǒng)啟動。隨后在步驟S63中,進行u-boot啟動,判斷是否為第一次啟動,是則轉(zhuǎn)步驟S64, 否則轉(zhuǎn)步驟S65。首先讀入第0個塊的數(shù)據(jù)(nand的生產(chǎn)廠家保證第0個塊始終是沒 有壞塊的),讀取數(shù)據(jù)后,判斷前4個整數(shù)是否是0x01234567,0x89abcdef,0xlc8b9a01, 0x98ab0022,如果是,則說明系統(tǒng)已經(jīng)完成了第一次的啟動,否則為第一次啟動。如果是第一次啟動則在步驟S64中,進行第一次啟動的處理,轉(zhuǎn)步驟S66。如果不是第一次啟動,則在步驟S65中,從壞塊的記錄信息中計算環(huán)境變量的啟 動位置,并讀取環(huán)境變量至系統(tǒng),轉(zhuǎn)步驟S66。隨后在步驟S66中,從系統(tǒng)的環(huán)境變量中取出mtd分區(qū)信息,同時讀取第0個塊, 判斷第0個塊最后一位是否為2,是則轉(zhuǎn)步驟S67,否則轉(zhuǎn)步驟S68。如果第0個塊最后一位為2則在步驟S67中,從第0個分區(qū)取得mtdpart信息和 啟動圖片位置信息,轉(zhuǎn)步驟S69。如果第0個塊最后一位不為2則在步驟S68中,使用環(huán)境變量中的mtdpart信息, 轉(zhuǎn)步驟S69。隨后在步驟S69中,計算分區(qū)信息的變量和大小。隨后在步驟S610中,開始正式啟動內(nèi)核。在此,如果是第一次啟動時則上述步驟S6還包括位于步驟S69后的步驟S69’ 保 存mtd分區(qū)信息,啟動圖片位置信息,寫驗證標志,寫應用環(huán)境信息,修改第一次的標志為 0x34,保存數(shù)據(jù)到第0個塊。在本發(fā)明的優(yōu)選實施例中,上述步驟S64進行第一次啟動的處理的步驟進一步包 括在步驟S641中,掃描壞塊并進行壞塊的記錄。其中,第5個整數(shù)為壞塊的數(shù)目,第 6個整數(shù)到4*10M的地方記錄的都是壞塊的位置信息。
隨后在步驟S642中,在讀數(shù)據(jù)的最后一位設置為1,以告訴后面的代碼系統(tǒng)為第
一次啟動。隨后在步驟S643中,在讀的數(shù)據(jù)的2047最后設置為0x12,以告訴后面的代碼系統(tǒng)
為第一次啟動。隨后在步驟S644中,計算u-boot的環(huán)境變量保存位置。隨后在步驟S645中,把系統(tǒng)的默認環(huán)境變量取出進行后面的處理。隨后在步驟S646中,保存設置到第0個塊。綜上所述,本發(fā)明的網(wǎng)絡電視自動升級的方法采用雙機熱備份的模式提高了網(wǎng)絡 電視自動升級方法的可靠性,保證了網(wǎng)絡電視能夠安全地升級,減少了上門維護的成本。本發(fā)明是根據(jù)特定實施例進行描述的,但本領(lǐng)域的技術(shù)人員應明白在不脫離本發(fā) 明范圍時,可進行各種變化和等同替換。此外,為適應本發(fā)明技術(shù)的特定場合或材料,可對 本發(fā)明進行諸多修改而不脫離其保護范圍。因此,本發(fā)明并不限于在此公開的特定實施例, 而包括所有落入到權(quán)利要求保護范圍的實施例。
權(quán)利要求
1.一種網(wǎng)絡電視自動升級的方法,其特征在于,包括以下步驟.51、在bootloader中設置配備的一個閃存為引導分區(qū)用來存放當前使用的主程序,設 置另一個閃存為備份分區(qū)用來存放當前使用的主程序的備份;.52、升級程序檢查當前主程序的版本號,判斷是否需要進行升級,是則轉(zhuǎn)步驟S3,否則 結(jié)束;.53、檢查當前備份分區(qū)的設備號以及閃存的壞塊;.54、對備份分區(qū)進行刷寫載入升級數(shù)據(jù);.55、檢查備份分區(qū)是否刷寫成功,是則轉(zhuǎn)步驟S6,否則轉(zhuǎn)步驟S3;.56、修改bootloader將原來的備份分區(qū)作為引導分區(qū)。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡電視自動升級的方法,其特征在于,所述步驟S6進一步 包括以下步驟.561、在閃存的第1塊至第5塊中存放5份相同的第一階段引導代碼;.562、修改引導代碼程序從閃存的第6塊開始尋找第二階段的引導代碼;.563、進行u-boot啟動,判斷是否為第一次啟動,是則轉(zhuǎn)步驟S64,否則轉(zhuǎn)步驟S65;.564、進行第一次啟動的處理,轉(zhuǎn)步驟S66;.565、從壞塊的記錄信息中計算環(huán)境變量的啟動位置,并讀取環(huán)境變量至系統(tǒng),轉(zhuǎn)步驟.S66 ;.566、從系統(tǒng)的環(huán)境變量中取出mtd分區(qū)信息,同時讀取第0個塊,判斷第0個塊最后一 位是否為2,是則轉(zhuǎn)步驟S67,否則轉(zhuǎn)步驟S68 ;.567、從第0個分區(qū)取得mtdpart信息和啟動圖片位置信息,轉(zhuǎn)步驟S69;.568、使用環(huán)境變量中的mtdpart信息,轉(zhuǎn)步驟S69;.569、計算分區(qū)信息的變量和大?。?S610、開始正式啟動內(nèi)核。
3.根據(jù)權(quán)利要求2所述的網(wǎng)絡電視自動升級的方法,其特征在于,所述步驟S6在第一 次啟動時還包括位于步驟S69后的步驟S69’ 保存mtd分區(qū)信息,啟動圖片位置信息,寫驗 證標志,寫應用環(huán)境信息,修改第一次的標志為0x34,保存數(shù)據(jù)到第0個塊。
4.根據(jù)權(quán)利要求2所述的網(wǎng)絡電視自動升級的方法,其特征在于,所述步驟S63中,通 過判斷第 0 個塊前4個整數(shù)是否為 0x01234567,0x89abcdef,0xlc8b9a01,0x98ab0022,是則 為第一次啟動。
5.根據(jù)權(quán)利要求4所述的網(wǎng)絡電視自動升級的方法,其特征在于,所述步驟S64進一步 包括.5641、掃描壞塊并進行壞塊的記錄;.5642、在讀數(shù)據(jù)的最后一位設置為1,以告訴后面的代碼系統(tǒng)為第一次啟動;.5643、在讀的數(shù)據(jù)的2047最后設置為0x12,以告訴后面的代碼系統(tǒng)為第一次啟動;.5644、計算u-boot的環(huán)境變量保存位置;.5645、把系統(tǒng)的默認環(huán)境變量取出進行后面的處理;.5646、保存設置到第0個塊。
全文摘要
本發(fā)明涉及一種網(wǎng)絡電視自動升級的方法,包括以下步驟S1、在bootloader中設置配備的一個閃存為引導分區(qū)用來存放當前使用的主程序,設置另一個閃存為備份分區(qū)用來存放當前使用的主程序的備份;S2、升級程序檢查當前主程序的版本號,判斷是否需要進行升級,是則轉(zhuǎn)步驟S3,否則結(jié)束;S3、檢查當前備份分區(qū)的設備號以及閃存的壞塊;S4、對備份分區(qū)進行刷寫載入升級數(shù)據(jù);S5、檢查備份分區(qū)是否刷寫成功,是則轉(zhuǎn)步驟S6,否則轉(zhuǎn)步驟S3;S6、修改bootloader將原來的備份分區(qū)作為引導分區(qū)。本發(fā)明的網(wǎng)絡電視自動升級的方法采用雙機熱備份的模式保證了網(wǎng)絡電視能夠安全地升級,減少了上門維護的成本。
文檔編號G06F9/445GK102104750SQ20091018927
公開日2011年6月22日 申請日期2009年12月22日 優(yōu)先權(quán)日2009年12月22日
發(fā)明者郭欣陽 申請人:康佳集團股份有限公司