專利名稱:一種啟動閃存內(nèi)引導(dǎo)程序的方法及其網(wǎng)絡(luò)電視和機(jī)頂盒的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字電視和機(jī)頂盒的系統(tǒng)啟動技術(shù)及其設(shè)備領(lǐng)域,更具體的 說,涉及的是一種啟動閃存內(nèi)引導(dǎo)載入程序的方法及其網(wǎng)絡(luò)電視和機(jī)頂盒的 改進(jìn)。
背景技術(shù):
根據(jù)NAND FLASH技術(shù)標(biāo)準(zhǔn)的要求,NAND FLASH在其出廠的時(shí)候允 許有5%的壞塊,所謂的NAND FLASH也叫做與非閃存,或者NAND閃存, 這樣一來,當(dāng)有壞塊的NAND閃存作為存儲介質(zhì)用于存儲系統(tǒng)程序時(shí),其存 儲數(shù)據(jù)的可靠性就非常危險(xiǎn)。如何提高NAND閃存中bootloader引導(dǎo)載入程序 的可靠性,以確保操作系統(tǒng)能夠正確引導(dǎo),已經(jīng)越來越備受關(guān)注。
現(xiàn)有的技術(shù)中,如申請?zhí)枮?2125341.2《一種采用與非閃存作系統(tǒng)存儲 器的方法》的中國專利,就采用了在自舉程序中設(shè)置的專用Flash管理函數(shù), 以標(biāo)記出NAND閃存在擦寫過程中被損傷的壞塊,從而避免在操作系統(tǒng)代碼 在擦寫時(shí)寫入壞塊而出現(xiàn)讀寫地址不連續(xù)的現(xiàn)象。但是,對于NAND閃存中 存儲的自舉程序即bootloader引導(dǎo)載入程序而言,如果自舉程序一旦存儲在與 非閃存的壞塊上,其中的專用Flash管理函數(shù)就不能運(yùn)行,顯然也就無法引導(dǎo) 系統(tǒng)載入操作系統(tǒng)。
因此,現(xiàn)有技術(shù)尚有待改進(jìn)和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的是,在于提供一種啟動閃存內(nèi)引導(dǎo)程序的方法及其網(wǎng)絡(luò)電視和機(jī)頂盒,可以提高NAND閃存中引導(dǎo)載入程序啟動的可靠性,以確保系 統(tǒng)能正確引導(dǎo),降低系統(tǒng)無法啟動的失敗率。 本發(fā)明的技術(shù)方案如下
一種啟動閃存內(nèi)引導(dǎo)程序的方法,包括以下步驟
A、 將引導(dǎo)代碼存放在閃存中,啟動所述閃存內(nèi)的引導(dǎo)程序;
B、 通過所述閃存第0個(gè)塊的數(shù)據(jù)標(biāo)志判斷當(dāng)前啟動是否為第一次啟 動,是則轉(zhuǎn)入步驟C,否則轉(zhuǎn)入步驟D;
C、 掃描并記錄所述閃存壞塊信息,且讀寫數(shù)據(jù)時(shí)修改所述第0個(gè)塊 的數(shù)據(jù)標(biāo)志;
D、 根據(jù)記錄的所述閃存壞塊信息讀取所述第0個(gè)塊的數(shù)據(jù),獲取所 述閃存分區(qū)信息。
所述的方法,其中,所述步驟A具體包括 Al、在所述第O個(gè)塊之后多個(gè)連續(xù)的塊中存放所述引導(dǎo)程序的第一階 段代碼,且每個(gè)塊中都存放一份相同的第 一階段引導(dǎo)代碼;
A2 、在所述閃存后續(xù)的好塊中存放所述引導(dǎo)程序的第二階段代碼; A3、依次序啟動所述的第一階段代碼,并自動搜尋所述的第二階段代碼。
所述的方法,其中,所述步驟C具體包括 Cl、掃描所述閃存,將其壞塊的位置信息記錄在所述第O個(gè)塊的數(shù)據(jù)
中;
C2、計(jì)算環(huán)境變量的保存位置,讀取系統(tǒng)默認(rèn)的環(huán)境變量; C3、保存所述閃存分區(qū)信息,啟動圖片位置信息,寫驗(yàn)證標(biāo)志,寫應(yīng) 用程序;
C4、修改第一次啟動的標(biāo)志,保存數(shù)據(jù)到所述閃存第O個(gè)塊的位置。 所述的方法,其中,所述步驟D具體包括
Dl、從記錄的所述閃存壞塊信息中計(jì)算環(huán)境變量的啟動位置,讀取環(huán)境變量到系統(tǒng),取出所述閃存分區(qū)信息的同時(shí)讀取所述第0個(gè)塊的數(shù)據(jù);D2、判斷所述第O個(gè)塊內(nèi)最后一位數(shù)據(jù)是否為指定代碼,是則轉(zhuǎn)入步驟D3,否則轉(zhuǎn)入步驟D4;D3 、是則系統(tǒng)直接從所述閃存第0個(gè)分區(qū)獲取分區(qū)信息并啟動圖片位置信息;D4、否則直接從環(huán)境變量中獲取所述閃存分區(qū)信息,并開始計(jì)算該分 區(qū)信息的偏移量和大小。一種啟動閃存內(nèi)引導(dǎo)程序的網(wǎng)絡(luò)電視,包括一閃存芯片,所述閃存芯片 中存放有引導(dǎo)代碼,用于啟動系統(tǒng)的引導(dǎo)程序,其中,所述的網(wǎng)絡(luò)電視還包 括一啟動判斷模塊,用于通過所述閃存芯片第O個(gè)塊的數(shù)據(jù)標(biāo)志判斷當(dāng)前啟 動是否為第一次啟動;是則掃描并記錄所述閃存芯片壞塊信息,且讀寫數(shù)據(jù) 時(shí)修改所述第0個(gè)塊的數(shù)據(jù)標(biāo)志;否則根據(jù)記錄的所述閃存芯片壞塊信息讀 取所述第0個(gè)塊的數(shù)據(jù),獲取所述閃存芯片分區(qū)信息。所述的網(wǎng)絡(luò)電視,其中,所述閃存芯片中的引導(dǎo)代碼包括所述引導(dǎo)程序 的第一階段引導(dǎo)代碼和第二階段引導(dǎo)代碼,在所述第0個(gè)塊之后多個(gè)連續(xù)的 塊中存放所述第 一階段代碼,且每個(gè)塊中都存放一份相同的第 一階段引導(dǎo)代 碼;在所述閃存芯片后續(xù)的好塊中存》丈所述第二階段代碼。所述的網(wǎng)絡(luò)電視,其中,所述的網(wǎng)絡(luò)電視還包括一代碼判斷模塊,用于 判斷所述第O個(gè)塊內(nèi)最后一位數(shù)據(jù)是否為指定代碼;是則系統(tǒng)直接從所述閃 存芯片第O個(gè)分區(qū)獲取分區(qū)信息并啟動圖片位置信息;否則直接從環(huán)境變量 中獲取所述閃存芯片分區(qū)信息,并開始計(jì)算該分區(qū)信息的偏移量和大小。一種啟動閃存內(nèi)引導(dǎo)程序的機(jī)頂盒,包括一閃存芯片,所述閃存芯片中 存放有引導(dǎo)代碼,用于啟動系統(tǒng)的引導(dǎo)程序,其中,所述的機(jī)頂盒還包括一 啟動判斷模塊,用于通過所述閃存芯片第O個(gè)塊的數(shù)據(jù)標(biāo)志判斷當(dāng)前啟動是 否為第一次啟動;是則掃描并記錄所述閃存芯片壞塊信息,且讀寫數(shù)據(jù)時(shí)修 改所述第0個(gè)塊的數(shù)據(jù)標(biāo)志;否則根據(jù)記錄的所述閃存芯片壞塊信息讀取所7述第o個(gè)塊的數(shù)據(jù),獲取所述閃存芯片分區(qū)信息。所述的機(jī)頂盒,其中,所述閃存芯片中的引導(dǎo)代碼包括所述引導(dǎo)程序的 第一階段引導(dǎo)代碼和第二階段引導(dǎo)代碼,在所述第o個(gè)塊之后多個(gè)連續(xù)的塊 中存放所述第一階段代碼,且每個(gè)塊中都存放一份相同的第 一階段引導(dǎo)代碼;在所述閃存芯片后續(xù)的好塊中存放所述第二階段代碼。所述的機(jī)頂盒,其中,所述的機(jī)頂盒還包括一代碼判斷模塊,用于判斷 所述第O個(gè)塊內(nèi)最后一位數(shù)據(jù)是否為指定代碼;是則系統(tǒng)直接從所述閃存芯 片第O個(gè)分區(qū)獲取分區(qū)信息并啟動圖片位置信息;否則直接從環(huán)境變量中獲 取所述閃存芯片分區(qū)信息,并開始計(jì)算該分區(qū)信息的偏移量和大小。本發(fā)明所提供的一種啟動閃存內(nèi)引導(dǎo)程序的方法及其網(wǎng)絡(luò)電視和機(jī)頂 盒,由于釆用了備份第一階段引導(dǎo)代碼,以及在第一次啟動時(shí)記錄壞塊信息 的技術(shù)手段,提高了NAND閃存中引導(dǎo)載入程序啟動的可靠性,保證了系統(tǒng) 正確的引導(dǎo),大大降低了系統(tǒng)無法啟動的失敗率。
圖1為本發(fā)明啟動NAND Flash內(nèi)引導(dǎo)程序方法的流程示意圖。
具體實(shí)施方式
以下將結(jié)合附圖,對本發(fā)明啟動閃存內(nèi)引導(dǎo)程序的方法及其網(wǎng)絡(luò)電視和 機(jī)頂盒的具體實(shí)施方式
和實(shí)施例加以詳細(xì)說明。本發(fā)明的 一種啟動閃存內(nèi)引導(dǎo)程序的方法及其網(wǎng)絡(luò)電視和機(jī)頂盒,主要 核心點(diǎn)在于采用了備份第一階段引導(dǎo)代碼,以及在第一次啟動時(shí)記錄壞塊信 息的4支術(shù)手4殳,至于NAND Flash、塊、bootloader、引導(dǎo)代碼、網(wǎng)絡(luò)電視以 及IPTV機(jī)頂盒等技術(shù)為本領(lǐng)域技術(shù)人員所熟知,在此不再贅述。本發(fā)明的一種啟動閃存內(nèi)引導(dǎo)程序的方法,包括以下步驟步驟一、將引導(dǎo)代碼存放在閃存中,啟動所述閃存內(nèi)的引導(dǎo)程序。具體包括在所述閃存第O個(gè)塊之后多個(gè)連續(xù)的塊中存放所述引導(dǎo)程序的第一階 段代碼,且每個(gè)塊中都存放一份相同的第一階段引導(dǎo)代碼;在所述閃存后續(xù) 的好塊中存放所述? I導(dǎo)程序的第二階段代碼;以及依次序啟動所述的第 一 階 段代碼,并自動搜尋所述的第二階段代碼。步驟二、通過所述閃存第0個(gè)塊的數(shù)據(jù)標(biāo)志判斷當(dāng)前啟動是否為第 一次 啟動,是則轉(zhuǎn)入步驟三,否則轉(zhuǎn)入步驟四。步驟三、掃描并記錄所述閃存壞塊信息,且讀寫數(shù)據(jù)時(shí)修改所述第O個(gè) 塊的數(shù)據(jù)標(biāo)志。具體包括掃描所述閃存,將其壞塊的位置信息記錄在所述 第0個(gè)塊的數(shù)據(jù)中;計(jì)算環(huán)境變量的保存位置,讀取系統(tǒng)默認(rèn)的環(huán)境變量; 保存所述閃存分區(qū)信息,啟動圖片位置信息,寫驗(yàn)證標(biāo)志,寫應(yīng)用程序;以 及修改第一次啟動的標(biāo)志,保存數(shù)據(jù)到所述閃存第0個(gè)塊的位置。步驟四、根據(jù)記錄的所述閃存壞塊信息讀取所述第O個(gè)塊的數(shù)據(jù),荻取 所述閃存分區(qū)信息。具體包括從記錄的所述閃存壞塊信息中計(jì)算環(huán)境變量 的啟動位置,讀取環(huán)境變量到系統(tǒng),取出所述閃存分區(qū)信息的同時(shí)讀取所述 第0個(gè)塊的數(shù)據(jù);判斷所述第O個(gè)塊內(nèi)最后一位數(shù)據(jù)是否為指定代碼,是則系 統(tǒng)直接從所述閃存第O個(gè)分區(qū)獲取分區(qū)信息并啟動圖片位置信息,否則直接 從環(huán)境變量中獲取所述閃存分區(qū)信息,并開始計(jì)算該分區(qū)信息的偏移量和大 小。以在某款I(lǐng)PTV機(jī)頂盒中TI davinci 6443為例,結(jié)合附圖,詳細(xì)說明啟動 NAND閃存內(nèi)引導(dǎo)程序的具體實(shí)施方式
,具體流程如附圖1所示。步驟S100、啟動u-boot,啟動的第一步是讀入第O個(gè)塊的數(shù)據(jù),因?yàn)镹AND 閃存的生產(chǎn)廠家保證第0個(gè)塊始終是沒有壞塊的;步驟S101、在讀取數(shù)據(jù)之后,判斷前4個(gè)整數(shù)是否為0x01234567, 0x89abcdef, 0xlc8b9a01, 0x98ab0022,是則說明系統(tǒng)已經(jīng)完成第一次的啟 動,轉(zhuǎn)入步驟S112;否則為第一次啟動,轉(zhuǎn)入步驟S122;步驟S112、掃描壞塊,進(jìn)行壞塊的記錄,第5個(gè)整lt為壞塊的數(shù)目,第6個(gè)整數(shù)到4*1024的地方記錄的都是壞塊的位置信息;步驟S113、計(jì)算u-boot的環(huán)境變量保存位置;同時(shí)為了便于后續(xù)的代碼 得知系統(tǒng)為第一次啟動,可將讀數(shù)據(jù)的最后一位設(shè)置為l,也可將讀數(shù)據(jù)的 2047最后設(shè)置為0xl2;步驟S 114、把系統(tǒng)的默認(rèn)環(huán)境變量取出進(jìn)行后面的處理;步驟S115、保存mtd分區(qū)信息;步驟S116、啟動圖片位置信息;步驟S117、寫驗(yàn)證標(biāo)志,寫應(yīng)用環(huán)境信息;步驟S118、修改第l次的標(biāo)志為0x34,保存數(shù)據(jù)到第O個(gè)塊,直接轉(zhuǎn)入步 驟S130;步驟S122、讀取壞塊的記錄信息;步驟S 123 、從壞塊的記錄信息中計(jì)算環(huán)境變量的啟動位置; 步驟S124、讀取環(huán)境變量到系統(tǒng);步驟S125、從系統(tǒng)的環(huán)境變量中取出mtd分區(qū)信息,同時(shí)讀取第O個(gè)塊的 數(shù)據(jù);步驟S 126、判斷所述第O個(gè)塊數(shù)據(jù)的最后一位是否為2; 步驟S127、是則系統(tǒng)直接從第O個(gè)分區(qū)取得mtdpart信息和啟動圖片位置 信息;步驟S 128、否則直接用環(huán)境變量中的mtdpart信息和啟動圖片位置信息; 步驟S129、開始計(jì)算分區(qū)信息的偏移量和大小,用于在啟動LINUX后提 供給mtd設(shè)備驅(qū)動作FLASH分區(qū)的參數(shù)時(shí)使用;步驟S130、開始正式啟動內(nèi)核,同時(shí)啟動linux^:作系統(tǒng)。 需要說明的是,在啟動引導(dǎo)程序之前,在NAND閃存中第1塊到第5塊的 位置上,存放5份相同的第一階段的引導(dǎo)代碼ubl,其字節(jié)數(shù)大小size小于每 一塊16K的字節(jié)數(shù)。同時(shí)修改ubl程序,從第6塊開始,找第2階段的引導(dǎo)代碼 u-boot.bin,每個(gè)u-boot.bin字節(jié)數(shù)占256k,共16個(gè)塊。假設(shè)u-boot.Bin的代碼在10進(jìn)行存放的時(shí)候,遇到了壞塊,則將數(shù)據(jù)往后面的好塊存放;然后ubl進(jìn)行自 動的搜索,找到一個(gè)完整的u-boot.Bin,如果其啟動第一個(gè)u-boot不成功,則 啟動后面的u-boot, 一共4個(gè)u-boot。如果系統(tǒng)都啟動不成功,則停止系統(tǒng)啟 動。而本發(fā)明的 一種啟動閃存內(nèi)引導(dǎo)程序的網(wǎng)絡(luò)電視或機(jī)頂盒,包括一 閃存 芯片,所述閃存芯片中存放有引導(dǎo)代碼,用于啟動系統(tǒng)的引導(dǎo)程序,此外, 所述的網(wǎng)絡(luò)電視或機(jī)頂盒還包括一啟動判斷模塊,用于通過所述閃存芯片第 O個(gè)塊的數(shù)據(jù)標(biāo)志判斷當(dāng)前啟動是否為第一次啟動;是則掃描并記錄所述閃 存芯片壞塊信息,且讀寫數(shù)據(jù)時(shí)修改所述第O個(gè)塊的數(shù)據(jù)標(biāo)志;否則根據(jù)記 錄的所述閃存芯片壞塊信息讀取所述第0個(gè)塊的數(shù)據(jù),獲取所述閃存芯片分 區(qū)信息。進(jìn)一步地,位于所述網(wǎng)絡(luò)電視或機(jī)頂盒的閃存芯片中的引導(dǎo)代碼,包括 所述引導(dǎo)程序的第一階段引導(dǎo)代碼和第二階段引導(dǎo)代碼,在所述第0個(gè)塊之 后多個(gè)連續(xù)的塊中存放所述第 一階段代碼,且每個(gè)塊中都存放一份相同的第 一階段引導(dǎo)代碼;在所述閃存芯片后續(xù)的好塊中存放所述第二階段代碼。更進(jìn)一步地,所述的網(wǎng)絡(luò)電視或機(jī)頂盒還包括一代碼判斷模塊,用于判 斷所述第0個(gè)塊內(nèi)最后一位數(shù)據(jù)是否為指定代碼;是則系統(tǒng)直接從所述閃存 芯片第0個(gè)分區(qū)獲取分區(qū)信息并啟動圖片位置信息;否則直接從環(huán)境變量中 獲取所述閃存芯片分區(qū)信息,并開始計(jì)算該分區(qū)信息的偏移量和大小。以上優(yōu)選實(shí)施例中備份第 一階段《1導(dǎo)代碼,以及在第 一次啟動時(shí)記錄壞 塊信息的技術(shù)根據(jù)實(shí)際應(yīng)用可以釆用現(xiàn)有各種可能的方案,為本領(lǐng)域技術(shù)人 員所熟知,在此也不再贅述。本發(fā)明的具體實(shí)施方式
所描述的 一種啟動閃存內(nèi)引導(dǎo)程序的方法及其 網(wǎng)絡(luò)電視和機(jī)頂盒,由于采用了備份第一階段引導(dǎo)代碼,以及在第一次啟動 時(shí)記錄壞塊信息的技術(shù)手段,提高了NAND閃存中引導(dǎo)載入程序啟動的可靠 性,保證了系統(tǒng)正確的引導(dǎo),大大降低了系統(tǒng)無法啟動的失敗率。應(yīng)當(dāng)理解的是,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改 進(jìn)或變換,例如備份引導(dǎo)代碼的份數(shù)變化,變換第一次啟動的標(biāo)志代碼等, 而所有這些改進(jìn)和變換都本應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1、一種啟動閃存內(nèi)引導(dǎo)程序的方法,包括以下步驟A、將引導(dǎo)代碼存放在閃存中,啟動所述閃存內(nèi)的引導(dǎo)程序;B、通過所述閃存第0個(gè)塊的數(shù)據(jù)標(biāo)志判斷當(dāng)前啟動是否為第一次啟動,是則轉(zhuǎn)入步驟C,否則轉(zhuǎn)入步驟D;C、掃描并記錄所述閃存壞塊信息,且讀寫數(shù)據(jù)時(shí)修改所述第0個(gè)塊的數(shù)據(jù)標(biāo)志;D、根據(jù)記錄的所述閃存壞塊信息讀取所述第0個(gè)塊的數(shù)據(jù),獲取所述閃存分區(qū)信息。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A具體包括 Al、在所述第0個(gè)塊之后多個(gè)連續(xù)的塊中存放所述引導(dǎo)程序的第一階段代碼,且每個(gè)塊中都存放一份相同的第 一 階段引導(dǎo)代碼;A2 、在所述閃存后續(xù)的好塊中存放所述引導(dǎo)程序的第二階段代碼; A3、依次序啟動所述的第一階段代碼,并自動搜尋所述的第二階段代碼。
3、 根據(jù)權(quán)利要求所述的方法,其特征在于,所述步驟C具體包括 Cl、掃描所述閃存,將其壞塊的位置信息記錄在所述第0個(gè)塊的數(shù)據(jù)中;C2、計(jì)算環(huán)境變量的保存位置,讀取系統(tǒng)默認(rèn)的環(huán)境變量; C3、保存所述閃存分區(qū)信息,啟動圖片位置信息,寫驗(yàn)證標(biāo)志,寫 應(yīng)用程序;C4、修改第一次啟動的標(biāo)志,保存數(shù)據(jù)到所述閃存第O個(gè)塊的位置。
4、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟D具體包括 Dl、從記錄的所述閃存壞塊信息中計(jì)算環(huán)境變量的啟動位置,讀取環(huán)境變量到系統(tǒng),取出所述閃存分區(qū)信息的同時(shí)讀取所述第0個(gè)塊的數(shù)據(jù); D2、判斷所述第0個(gè)塊內(nèi)最后一位數(shù)據(jù)是否為指定代碼,是則轉(zhuǎn)入步驟D3,否則轉(zhuǎn)入步驟D4;D3、是則系統(tǒng)直接從所述閃存第0個(gè)分區(qū)獲取分區(qū)信息并啟動圖片位置信息;D4、否則直接從環(huán)境變量中獲取所述閃存分區(qū)信息,并開始計(jì)算該 分區(qū)信息的偏移量和大小。
5、 一種啟動閃存內(nèi)引導(dǎo)程序的網(wǎng)絡(luò)電視,包括一閃存芯片,所述閃存 芯片中存放有引導(dǎo)代碼,用于啟動系統(tǒng)的引導(dǎo)程序,其特征在于,所述的 網(wǎng)絡(luò)電視還包括一啟動判斷模塊,用于通過所述閃存芯片第0個(gè)塊的數(shù)據(jù) 標(biāo)志判斷當(dāng)前啟動是否為第 一次啟動;是則掃描并記錄所述閃存芯片壞塊 信息,且讀寫數(shù)據(jù)時(shí)修改所述第0個(gè)塊的數(shù)據(jù)標(biāo)志;否則根據(jù)記錄的所述 閃存芯片壞塊信息讀取所述第0個(gè)塊的數(shù)據(jù),獲取所述閃存芯片分區(qū)信息。
6、 根據(jù)權(quán)利要求5所述的網(wǎng)絡(luò)電視,其特征在于,所述閃存芯片中的 引導(dǎo)代碼包括所述引導(dǎo)程序的第一階段引導(dǎo)代碼和第二階段引導(dǎo)代碼,在 所述第0個(gè)塊之后多個(gè)連續(xù)的塊中存放所述第一階段代碼,且每個(gè)塊中都 存放一份相同的第 一階段引導(dǎo)代碼;在所述閃存芯片后續(xù)的好塊中存放所 述第二階段代碼。
7、 根據(jù)權(quán)利要求5或6所述的網(wǎng)絡(luò)電視,其特征在于,所述的網(wǎng)絡(luò)電 視還包括一代碼判斷模塊,用于判斷所述第0個(gè)塊內(nèi)最后一位數(shù)據(jù)是否為 指定代碼;是則系統(tǒng)直接從所述閃存芯片第0個(gè)分區(qū)獲取分區(qū)信息并啟動圖片位置信息;否則直接從環(huán)境變量中獲取所述閃存芯片分區(qū)信息,并開 始計(jì)算該分區(qū)信息的偏移量和大小。
8、 一種啟動閃存內(nèi)引導(dǎo)程序的機(jī)頂盒,包括一閃存芯片,所述閃存芯 片中存放有引導(dǎo)代碼,用于啟動系統(tǒng)的引導(dǎo)程序,其特征在于,所述的機(jī) 頂盒還包括一啟動判斷模塊,用于通過所述閃存芯片第0個(gè)塊的數(shù)據(jù)標(biāo)志 判斷當(dāng)前啟動是否為第一次啟動;是則掃描并記錄所述閃存芯片壞塊信息, 且讀寫數(shù)據(jù)時(shí)修改所述第o個(gè)塊的數(shù)據(jù)標(biāo)志;否則根據(jù)記錄的所述閃存芯 片壞塊信息讀取所述第0個(gè)塊的數(shù)據(jù),獲取所述閃存芯片分區(qū)信息。
9、 根據(jù)權(quán)利要求8所述的機(jī)頂盒,其特征在于,所述閃存芯片中的引 導(dǎo)代碼包括所述引導(dǎo)程序的第一階段引導(dǎo)代碼和第二階段引導(dǎo)代碼,在所 述第0個(gè)塊之后多個(gè)連續(xù)的塊中存放所述第一階段代碼,且每個(gè)塊中都存 放一份相同的第 一階段S1導(dǎo)代碼;在所述閃存芯片后續(xù)的好塊中存放所述 第二階段代碼。
10、 根據(jù)權(quán)利要求8或9所述的機(jī)頂盒,其特征在于,所述的機(jī)頂盒 還包括一代碼判斷模塊,用于判斷所述第0個(gè)塊內(nèi)最后一位數(shù)據(jù)是否為指 定代碼;是則系統(tǒng)直接從所述閃存芯片第0個(gè)分區(qū)獲取分區(qū)信息并啟動圖 片位置信息;否則直接從環(huán)境變量中獲取所述閃存芯片分區(qū)信息,并開始 計(jì)算該分區(qū)信息的偏移量和大小。
全文摘要
本發(fā)明公開了一種啟動閃存內(nèi)引導(dǎo)程序的方法及其網(wǎng)絡(luò)電視和機(jī)頂盒,所述的方法包括以下步驟將引導(dǎo)代碼存放在閃存中,啟動所述閃存內(nèi)的引導(dǎo)程序;通過所述閃存第0個(gè)塊的數(shù)據(jù)標(biāo)志判斷當(dāng)前啟動是否為第一次啟動,是則掃描并記錄所述閃存壞塊信息,且讀寫數(shù)據(jù)時(shí)修改所述第0個(gè)塊的數(shù)據(jù)標(biāo)志;否則根據(jù)記錄的所述閃存壞塊信息讀取所述第0個(gè)塊的數(shù)據(jù),獲取所述閃存分區(qū)信息。由于采用了備份第一階段引導(dǎo)代碼,以及在第一次啟動時(shí)記錄壞塊信息的技術(shù)手段,提高了NAND閃存中引導(dǎo)載入程序啟動的可靠性,保證了系統(tǒng)正確的引導(dǎo),大大降低了系統(tǒng)無法啟動的失敗率。
文檔編號G06F12/06GK101520735SQ20081024165
公開日2009年9月2日 申請日期2008年12月18日 優(yōu)先權(quán)日2008年12月18日
發(fā)明者王叢華 申請人:康佳集團(tuán)股份有限公司