王 薇,張春麗
(四川財經(jīng)職業(yè)學(xué)院 四川 成都 610101)
隨著國家數(shù)字電視工程的推廣與普及,數(shù)字電視機頂盒已成為其發(fā)展過程中必要的組成設(shè)備。為了提高機頂盒的性能,方便快捷地更新機頂盒的功能,在用戶使用過程中需要對機頂盒的軟件進行定期有計劃的升級?,F(xiàn)階段在數(shù)字電視機頂盒的設(shè)計中,Bootloader作為引導(dǎo)加載程序一般用于引導(dǎo)和啟動機頂盒,其功能比較單一,機頂盒在使用過程中的軟件維護與升級工作必須由專業(yè)人員來完成,這種設(shè)計方法給產(chǎn)品的后期維護帶來一定的不便。本文在基于衛(wèi)星的數(shù)字視頻廣播的DVB-S電視機頂盒產(chǎn)品開發(fā)過程中,針對一般Bootloader功能上的不足,提出一種方案對Bootloader功能進行了改進。新的Bootloader能自動對DVB-S電視機頂盒中的軟件進行維護和升級,從而提高系統(tǒng)的自維護性[1]。(4 M×8 bits);NOR Flash 采用臺灣旺宏公司的 MX29LV160,其容量為2 MB,主要存儲系統(tǒng)的軟件部分(包括BootLoader、嵌入式Linux操作系統(tǒng),根文件系統(tǒng)及應(yīng)用軟件);各種接口主要有IrDA控制接口 (接收紅外鍵盤的遙控)、LED控制接口(輸出系統(tǒng)的基本狀態(tài)信息)、I2C控制接口(通過I2C讀寫24C01的E2PROM,并存放系統(tǒng)的某些配置參數(shù),如音量,節(jié)目流的左右聲道等)、RS232串行口,及各種音視頻接口(SVideo,CVBS,VGA)等,其中 IrDA 控制接口、LED 控制接口及I2C控制接口的通信由6502微控制器進行輸入輸出處理[2]。整個系統(tǒng)的硬件組成框圖如圖1所示。
該DVB-S電視機頂盒中,采用的CPU是臺灣凌陽公司生產(chǎn)的16/32位RISC微控制器SPHE1000,內(nèi)含一個MIPS架構(gòu)的RISC處理器核,最高主頻可達108 MHz,該芯片還集成有DSP處理器,主要用于衛(wèi)星電視的音視頻解碼等;此外,系統(tǒng)還集成有SAMSUNG公司的數(shù)字衛(wèi)星高頻頭(DVB-S Tuner),其主要任務(wù)是從衛(wèi)星信號中調(diào)制出TS流(Tranmit Stream,傳輸碼流),其中包括有電視節(jié)目流和廣播節(jié)目流;系統(tǒng)所用的SDRAM采用Samsung公司的4 MB的K4S561632D
圖1 DVB-S電視機頂盒的硬件組成框圖Fig.1 DVB-S TV set-top box hardware block diagram
自維護引導(dǎo)裝載系統(tǒng)是在一般引導(dǎo)裝載系統(tǒng)的基礎(chǔ)上添加了系統(tǒng)升級功能,系統(tǒng)在運行之中能夠根據(jù)實際情況,對Flash現(xiàn)有的軟件進行維護和更新。其軟件體系結(jié)構(gòu)如圖2所示。
圖2 自維護Bootloader的軟件體系結(jié)構(gòu)Fig.2 Software architecture of the self-maintenance bootloader
在該Bootloader中,引導(dǎo)程序和裝載程序與一般的Bootloader作用一樣,其實現(xiàn)的功能是將系統(tǒng)硬件引導(dǎo)起來,并將內(nèi)核及應(yīng)用程序裝載入RAM后,啟動內(nèi)核[3]。
微控制器SPHE1000基于MIPS體系結(jié)構(gòu)的CPU,其內(nèi)存向量表是設(shè)置中很重要的一部分。在MIPS CPU中,有兩部分的地址是系統(tǒng)所固定的。一部分是系統(tǒng)內(nèi)存映射表,另一部分是系統(tǒng)異常發(fā)生后(包括中斷)的地址入口點,其地址分配別如表1和表2所示。
表1 系統(tǒng)固定使用的地址表Tab.1 Fixed address table of the system
表2 系統(tǒng)異常地址入口點Tab.2 System exception entry point address
系統(tǒng)的程序入口點為ROM cached地址,CPU運行點為Boot UP地址。系統(tǒng)的一般異?;蛑袛喟l(fā)生時的入口點為General Exception。
在DVB-S機頂盒系統(tǒng)中,CPU加電后,將會由0xBFC00000地址跳轉(zhuǎn)到系統(tǒng)異常處理向量表的第一項 (reset)處執(zhí)行CPU指令,該地址也是系統(tǒng)ROM/Flash的虛擬地址。其初始化過程中涉及幾個主要文件,依次為:init0.s-->crt0.s-->main.c-->upgradeflash.c。 加 電 后 ,SEPH1000 首 先 執(zhí) 行0xBFC00000處的中斷向量表起始處的跳轉(zhuǎn)命令b__romstart,跳到了init0.s和crt0.s中,完成了系統(tǒng)的大部分初始化工作,如設(shè)置寄存器、SDRAM、Flash等。在完成以上基本硬件初始化后,系統(tǒng)將會進入Bootloader升級程序[4]。
Bootloader升級程序主要完成的功能是通過Bootloader程序?qū)Υ娣旁贔lash中的軟件 (Flash中的軟件一般由bootloader、嵌入式linux內(nèi)核、根文件系統(tǒng)、應(yīng)用程序組成,本文中Flash軟件是指除bootloader以外的其它幾部分)進行升級。Bootloader在引導(dǎo)程序執(zhí)行完成后,可以通過條件判斷程序,如Flash中軟件CRC校驗是否有錯、Bootloader是否能夠成功啟動系統(tǒng)、Flash中軟件版本是否太低等,使程序進入升級過程[5]。其升級流程如圖3所示。
圖3 自維護Bootloader系統(tǒng)的升級流程圖Fig.3 Flow chart self-maintenance bootloader upgrade the system
該DVB-S機頂盒中使用自維護Bootloader相對一般的Bootloader系統(tǒng)具有以下一些特點:
1)采用自維護Bootloader的嵌入式系統(tǒng),能夠在使用過程中自動維護數(shù)據(jù)的完整性。
嵌入式系統(tǒng)在運行過程中,因其軟件部分存放在ROM/Flash等不揮發(fā)介質(zhì),數(shù)據(jù)相對比較穩(wěn)定,但當(dāng)嵌入式系統(tǒng)使用時間過長或長期運行于惡劣環(huán)境時,其軟件部分可能會出現(xiàn)一些錯誤,這時,系統(tǒng)的運行將會導(dǎo)致不可預(yù)料的失敗。自維護Bootloader可以通過對Flash中軟件的CRC校驗來檢查數(shù)據(jù)的完整性,或通過引入硬件watchdog機制來記錄Bootloader的上次執(zhí)行情況,并自動維護有錯誤的Flash軟件。
2)采用自維護Bootloader的嵌入式系統(tǒng),能夠根據(jù)系統(tǒng)的版本號自動更新系統(tǒng)的軟件,從而使嵌入式系統(tǒng)的升級維護變得更加容易和方便。自維護Bootloader會定期地檢查系統(tǒng)的軟件版本,比較軟件的版本號來決定是否更新Flash中的軟件[6]。
當(dāng)然,以上兩點都必須有外部數(shù)據(jù)的支撐,這需要根據(jù)實際硬件情況,從USB設(shè)備,網(wǎng)絡(luò)或硬盤中獲取到用于升級的外部數(shù)據(jù)。在數(shù)字電視機頂盒中,自維護Bootloader能夠從Tuner接收到的TS流中獲取到相應(yīng)的軟件內(nèi)容,并對Flash的軟件升級或更新,從而提高系統(tǒng)的自維護能力。下面將會具體分析這種自維護Bootloader在DVB-S電視機頂盒中的應(yīng)用。
通過在DVB-S電視機頂盒中設(shè)計一種自維護的嵌入式Bootloader系統(tǒng),保證了機頂盒flash中數(shù)據(jù)的完整性,從而使機頂盒在運行過程中具有較強的健壯性,同時這種方案也大大地提高了機頂盒軟件的自動維護和恢復(fù)功能。當(dāng)然,這種設(shè)計方案是延長了機頂盒的啟動時間的,但經(jīng)實驗測試其啟動時間大約延長1 s,對于DVB-S電視機頂盒來說,這種設(shè)計導(dǎo)致的延遲是可以容忍的。
[1]胡鐵喬.DVB-C機頂盒在線升級原理及實現(xiàn) [J].中國民航學(xué)院學(xué)報,2006,24(5):34-38.
HU Tie-qiao.Theory and reality of online update in set of box based on DVB-C[J].Journal of Civel Aviation University of China,2006,24(5):34-38.
[2]袁磊,朱怡安,蘭婧.嵌入式系統(tǒng)BootLoader設(shè)計與實現(xiàn)[J].計算機測量與控制,2009,17(2):389-391.
YUAN Lei,ZHU Yi-an,LAN Jing.Design and implementation of BootLoader in embedded system[J].Computer Measurement&Control,2009,17(2):389-391.
[3]陶永,鄢萍,郭建興,等.基于MIPS體系的嵌入式Linux引導(dǎo)裝載系統(tǒng)的設(shè)計與實現(xiàn) [J].計算機應(yīng)用,2004,24(11):159-161.
TAO Yong, YAN Ping, GUO Jian-xing, et al.Design and implementation of bootloader based on MIPS in embedded Linux[J].Computer Applications,2004,24(11):159-161.
[4]馬學(xué)文,朱名日,程小輝.嵌入式系統(tǒng)中Bootloader的設(shè)計與實現(xiàn)[J].計算機工程,2005,31(7):96-97.
MA Xue-wen,ZHU Ming-ri,CHENG Xiao-hui.Design and Realization of Bootloader in Embedded System[J].Computer Engineering,2005,31(7):96-97.
[5]高偉,張洪波.基于嵌入式系統(tǒng)的Bootloader分析與設(shè)計[J].唐山師范學(xué)院學(xué)報,2009,31(5):63-65.
GAO Wei,ZHANG Hong-bo.Analysis and design of bootloader based on embedded system[J].Journal of Tangshan Teachers College,2009,31(5):63-65.
[6]莊子明,程恩.基于DMB-TH的地面數(shù)字電視機頂盒的軟件升級[J].中國有線電視,2008(8):809-813.
ZHUANG Zi-ming,CHENG En.Software upgrade of terrestrial mobile digital TV STB based on DMB-TH[J].China Digital Cable TV,2008(8):809-813.