STB與Linux軟件系統(tǒng)共舞
你知道STB是什么意思么?英文名全稱是Set Top Box,簡稱STB,即機頂盒。近年來,國內(nèi)巨大的STB潛在市場,吸引了包括芯片廠商、CA廠商、中間件供應(yīng)商、機頂盒生產(chǎn)廠商等廠家的熱情,圍繞STB的競爭全面展開。而STB與Linux有什么聯(lián)系呢?這就要說說最近報道的STB上Linux軟件系統(tǒng)解決方案。
事實上,隨著IPTV的興起,對機頂盒的性能要求也越來越高,采用X86硬件提升機頂盒的性能已是大勢所趨。但是,在提供更豐富業(yè)務(wù)功能的同時,大幅降低 機頂盒成本,也是機頂盒技術(shù)發(fā)展的一個必然方向。本文將講述基于兼容X86的STB上Linux軟件系統(tǒng)解決方案,不涉及技術(shù)開發(fā)細(xì)節(jié)。主要將從以下方面進行介紹:
一、硬件環(huán)境介紹
本機頂盒核心部件包括:STPC CPU,2M FLASH,64M DOM和32M RAM。
其中FLASH中存放Bootloader代碼,DOM中存放嵌入式Linux操作系統(tǒng)。當(dāng)然,機頂盒需要一些外圍硬件電路,比如網(wǎng)絡(luò)接口、遙控器接口等等。
二、Bootloader開發(fā)
Bootloader是跟底層硬件關(guān)聯(lián)性非常強的一層軟件,也稱為BSP。開發(fā)人員需要相當(dāng)熟悉硬件結(jié)構(gòu),一般來說,可以由硬件人員完成,也可以由軟硬件 人員共同協(xié)助完成。Bootloader除了初始化CPU,RAM和基本的串口輸出等功能外,還需要一些擴展功能,比如實現(xiàn)通過網(wǎng)絡(luò)接口或者串口燒錄操作 系統(tǒng)等。u-boot是一個開源的面向多個目標(biāo)平臺(ppc, mips, arm, x86)的bootloader,并且功能強大,目前廣泛應(yīng)用在嵌入式系統(tǒng)開發(fā)中,只要根據(jù)硬件平臺做有限的修改,就可以順利實現(xiàn)。本篇不講述u- boot的具體移植過程,移植細(xì)節(jié)可參見《u-boot在PowerPC 860上的移植》一文。
三、嵌入式Linux裁減與移植
嵌入式Linux我們選用Peewee Linux進行裁減,Peewee Linux的介紹和基本配置可參考《Embedded Linux 嵌入式系統(tǒng)原理與實務(wù)》一書。Peewee Linux的裁減僅僅是通過配置界面選擇某些組件,但需要注意的是要保留X窗口,瀏覽器需要X窗口支持才能啟動圖形化瀏覽器。但是,通過Peewee Linux裁減的Linux系統(tǒng)通常比較大,還需要做更進一步的裁減。一般來說一個不帶X窗口的嵌入式Linux可以小到4M,帶有X窗口的Linux也 可以在30M以下構(gòu)建出來??傊?,裁減后的Linux系統(tǒng)不能過于龐大,否則加上瀏覽器程序極有可能超出DOM的64M空間,需要另加存儲空間,增加成 本。
另一方面,在移植Linux到STB上后,由于STB上很多硬件在Linux下缺少驅(qū)動程序支持,不能工作。為此,開發(fā)必要的驅(qū)動程序是必不可少的一步。 在Linux下開發(fā)一個驅(qū)動是相當(dāng)容易的,一是因為Linux驅(qū)動程序的架構(gòu)相對固定,二是有很多的源碼可供參考。難點往往是調(diào)試過程,也更花時間,并且 經(jīng)常需要改動某些代碼,同時,驅(qū)動開發(fā)過程中也經(jīng)常需要示波器、邏輯分析儀等設(shè)備的幫助。
四、瀏覽器程序選擇 (Embedded Mozilla)
在Linux環(huán)境下有很多開源的瀏覽器,但綜合比較來說,Mozilla功能強大,支持的協(xié)議也相對比較多,圖形界面豐富。其次,Mozilla專門為嵌 入式系統(tǒng)開發(fā)了一個Embedded Mozilla項目,不加裁減的話,編譯結(jié)果大概20M多,用戶可以對其進行裁減,一般來說,裁減到14M左右是很輕而易舉的事。并且該項目是提供源碼 的,用戶可以根據(jù)需要定制一些功能,比如用戶界面等等。
具體可以參考主頁:http://www.mozilla.org
五、JVM移植
針對目前很多網(wǎng)頁是Java severlet的特點,使得瀏覽器能支持Java語言是一大趨勢,Embedded Mozilla很容易實現(xiàn)對Java的支持,這也是為什么選擇Embedded Mozilla的原因之一。只要以動態(tài)庫的形式注冊sun公司提供的JVM到該STB的系統(tǒng)庫路徑下,并在Embedded Mozilla中設(shè)置一下瀏覽器針對Java severlet的plug in功能,即可實現(xiàn)Embedded Mozilla對Java severlet的支持。
JVM下載參考:http://www.sun.com
六、其它應(yīng)用開發(fā)擴展(EPG實現(xiàn)及EasySoap使用)
該部分功能主要是為解決STB向PVR/DVR的擴展,當(dāng)然如此擴展后需要添加大容量存儲設(shè)備,以存儲數(shù)據(jù)。EPG是PVR/DVR上不可或缺的軟件之 一,預(yù)先提供節(jié)目給用戶,用戶通過預(yù)定的方式下“訂單”,PVR/DVR根據(jù)用戶的預(yù)定情況實現(xiàn)節(jié)目的自動錄制功能。目前EPG功能比較流行的做法是:在 PC機上用Web Service實現(xiàn)服務(wù)端,在PVR/DVR上實現(xiàn)客戶端,由于Web Service利用SOAP協(xié)議交互。為此,EasySoap浮出水面,利用該開源項目,可以很方便開發(fā)出Linux上的EPG客戶端,實現(xiàn)與Web Service的交互。
七、媒體播放軟件實現(xiàn)
該功能也可認(rèn)為是STB的擴展,是PVR/DVR功能的一部分。媒體播放器我們選用功能強大的mplayer,這是Linux軟件系統(tǒng)下又一個出色的開源軟件,支 持格式眾多,包括很多流媒體在內(nèi),移植mplayer也比較簡單。參見網(wǎng)站:http://www.mplayerhq.hu/
八、VOD實現(xiàn)
VOD是STB交互功能的增強,因為我們已經(jīng)移植了Embedded Mozilla以及mplayer,VOD功能可以利用這兩個軟件順利實現(xiàn),需要做的工作只是在Embedded Mozilla中如何判斷當(dāng)前的連接是一個媒體文件,以判斷是否需要打開mplayer進行播放。
九、軟件遠(yuǎn)程更新問題
雖然目前用戶要在STB設(shè)備上實現(xiàn)軟件遠(yuǎn)程更新的需求并不突出,但軟件遠(yuǎn)程更新問題是降低維護費用一個強有力的手段。STB的遠(yuǎn)程軟件更新可以采用主動或 被動的方式,主動的方式就是由用戶手動去下載最新軟件,實現(xiàn)升級;被動方式就是由STB開發(fā)商根據(jù)STB的信息主動提示用戶更新,類似于window 2000/XP的升級程序。考慮到STB的特殊性,比如升級過程中可能發(fā)生意外,掉線等情況,建議采用由用戶手動去下載軟件進行升級的方式。
具體實現(xiàn)方法是:在STB上開發(fā)專門用于軟件升級的程序,該程序通過HTTP/FTP下載最新應(yīng)用程序到本地,然后實現(xiàn)STB上軟件的升級。由于系統(tǒng)上空 間通常比較緊張,一旦升級失敗,極有可能造成系統(tǒng)不能啟動的情況,解決辦法往往是增加內(nèi)存空間,先備份先前的系統(tǒng),如果升級成功,再刪除,如果失敗,則恢 復(fù)先前系統(tǒng)。
十、小結(jié)
Linux由于其開源特性、出色的網(wǎng)絡(luò)功能和眾多的開源項目支持,正越來越成為嵌入式系統(tǒng)開發(fā)者關(guān)注的目標(biāo)之一。相信越來越多的嵌入式開發(fā)者將加入到Linux軟件系統(tǒng)這個行列中來。
本文提出的僅僅是解決方案,實際開發(fā)中,從硬件設(shè)計到軟件開發(fā)是一個相當(dāng)漫長的過程,軟硬件的協(xié)同設(shè)計、硬件的調(diào)試、軟件的開發(fā)、軟件的測試、系統(tǒng)的集成測試等過程都會遇到攔路虎,很多意想不到的問題會時不時地忽然冒出來。
為此,在STB項目開發(fā)中,硬件的設(shè)計過程需要具有豐富經(jīng)驗的硬件工程師,以盡量縮短硬件設(shè)計與調(diào)試的時間。軟件系統(tǒng)中上層應(yīng)用的開發(fā)過程建議開發(fā)者采用 OO的思想,同時在開發(fā)中運用設(shè)計模式,以防開發(fā)過程各種意想不到的變化。另外,值得一提的是,很多項目中,開發(fā)人員認(rèn)為只有硬件開發(fā)完成后才能進行軟件 的開發(fā),這是一種誤解。事實上,軟硬件開發(fā)的過程可以同步進行,在硬件開發(fā)階段可以同時進行上層軟件的開發(fā),這樣可以盡可能加快產(chǎn)品走向市場的步伐。
隨著STB 上Linux軟件系統(tǒng)方案解決,相信廣大的用戶的生活會更加方便快捷。
【編輯推薦】