基于數(shù)字電視系統(tǒng)的嵌入式linux操作系統(tǒng)實現(xiàn)
本文關(guān)鍵詞:嵌入式Linux操作系統(tǒng),由筆耕文化傳播整理發(fā)布。
歡迎進(jìn)入IT技術(shù)社區(qū)論壇,與200萬技術(shù)人員互動交流 >>進(jìn)入 1.簡介: 數(shù)字電視是在電視信號產(chǎn)生后的處理、傳送、接收、記錄等過程都采用數(shù)字技術(shù)的電視。在設(shè)計數(shù)字電視系統(tǒng)時,應(yīng)用于傳統(tǒng)模擬電視系統(tǒng)中的硬件,不能滿足音頻、視頻和數(shù)據(jù)處理等功能的需要,
歡迎進(jìn)入IT技術(shù)社區(qū)論壇,與200萬技術(shù)人員互動交流 >>進(jìn)入
1. 簡介:數(shù)字電視是在電視信號產(chǎn)生后的處理、傳送、接收、記錄等過程都采用數(shù)字技術(shù)的電視。在設(shè)計數(shù)字電視系統(tǒng)時,應(yīng)用于傳統(tǒng)模擬電視系統(tǒng)中的硬件,不能滿足音頻、視頻和數(shù)據(jù)處理等功能的需要,因此,數(shù)字電視系統(tǒng)需要更高性能的處理器和大規(guī)模的存儲器。嵌入式操作系統(tǒng)可以有效的管理這些硬件資源。
本文將嵌入式Linux操作系統(tǒng)移植到一個數(shù)字電視上,使其能夠接收數(shù)字廣播節(jié)目。為了將操作系統(tǒng)移植到數(shù)字電視系統(tǒng)上,需要修改內(nèi)核和交叉開發(fā)環(huán)境,重新設(shè)計基本的設(shè)備驅(qū)動,配置系統(tǒng)的存儲器映像以便加載內(nèi)核到主存儲器中,并且設(shè)計一個總線接口設(shè)備的驅(qū)動程序來控制整個系統(tǒng)。
2. 數(shù)字電視操作系統(tǒng)
數(shù)字電視比模擬電視能夠提供更優(yōu)質(zhì)的電視圖像和更多的視頻服務(wù)。它采用改進(jìn)的掃描線和水平清晰度獲得高質(zhì)量的視頻效果,同時采用AC3或MPEG2壓縮技術(shù)來獲得高質(zhì)量的音頻效果。數(shù)字電視的節(jié)目不但便于存儲,而且還可以通過眾多的媒介進(jìn)行傳播。因此,數(shù)字電視系統(tǒng)需要處理大量的數(shù)據(jù)。如在EPG(電子節(jié)目指南)服務(wù)中,被提取出來的數(shù)據(jù)被修改并存儲后作為一個畫面打印至OSD(屏幕菜單式調(diào)節(jié))界面,在這個過程中需要靠操作系統(tǒng)來不斷地接收到被篩選、存儲后的信號,同時產(chǎn)生屏幕畫面。
市場上的數(shù)字電視系統(tǒng)包括如pSOSTM (Windriver Inc.)等的商業(yè)操作系統(tǒng),這些系統(tǒng)具有高可靠性和最優(yōu)化的特點,但要支付昂貴的版稅。如果在數(shù)字電視系統(tǒng)中使用嵌入式linux操作系統(tǒng),則不用支付版稅費用。嵌入式Linux操作系統(tǒng)還有其他一些優(yōu)點,如有開放源代碼的設(shè)備驅(qū)動程序及應(yīng)用程序的存在,大大縮短了開發(fā)時間;利用shell、文件系統(tǒng)及模塊功能方便了開發(fā)環(huán)境的配置;許多問題可以在開源社區(qū)得到快速解決等。
3. 商業(yè)數(shù)字電視系統(tǒng)
數(shù)字電視的結(jié)構(gòu)
數(shù)字電視系統(tǒng)包括數(shù)字處理模塊、視頻處理模塊、射頻模塊、LCD驅(qū)動模塊和模擬輸出模塊,其結(jié)構(gòu)如圖1所示。
數(shù)字處理模塊負(fù)責(zé)控制其它模塊和執(zhí)行程序。它由MCU、SDRAM、FLASH存儲器、UART、I2C總線接口構(gòu)成。視頻處理模塊把從射頻模塊捕獲的數(shù)據(jù)解碼生成視頻、音頻和文本消息。它由一個信號處理單元(SPU)和一個SDRAM構(gòu)成,SDRAM中包含被顯示的數(shù)據(jù)幀。射頻模塊接收數(shù)字廣播信號,并且將該信號解調(diào)成數(shù)據(jù)流。LCD驅(qū)動模塊控制LCD面板。模擬輸出模塊控制視頻-音頻信號輸出和輸出信號。數(shù)字處理模塊通過I2C總線,控制射頻模塊、LCD模塊和模擬輸出模塊,同時通過DMA控制視頻處理模塊。
硬件構(gòu)成
在數(shù)字電視系統(tǒng)中,數(shù)字處理模塊的核心是arm7TDMITM,它不包括MMU(存儲器管理單元)。在數(shù)字電視系統(tǒng)中MCU只支持大端格式[5],存儲器映射由MCU內(nèi)的系統(tǒng)管理寄存器來配置,在系統(tǒng)運(yùn)行之前,嵌入式linux內(nèi)核運(yùn)行在flashROM中,當(dāng)系統(tǒng)運(yùn)行時,內(nèi)核被拷入ram中。除了ROM和RAM外,外設(shè)也經(jīng)常被使用。這些設(shè)備被映射到一個線性存儲器映射單元,且可以按同樣的方式尋址。。MCU的中斷控制器包括21個中斷資源(其中17個來自內(nèi)部設(shè)備,4個來自外部設(shè)備)。數(shù)字處理模塊中的定時器是一個32位的間隔模式定時器。在系統(tǒng)中用串口設(shè)備如UART(通用異步收發(fā)器)來打印啟動過程中的消息和程序出錯信息,由于射頻模塊、LCD驅(qū)動模塊、模擬輸出模塊都是由MCU通過I2C總線控制,因此,在MCU和I2C串行總線之間需要一個接口。在這里使用PCF8584 (Philips Inc.)。圖2描述了MCU和I2C總線之間的連接。
圖2 MCU和I2C總線之間的連接
4.linux系統(tǒng)移植
在這一部分中,我們將解釋linux操作系統(tǒng)的移植順序。包括修改內(nèi)核初始化代碼和編寫設(shè)備驅(qū)動程序。
4.1重建內(nèi)核初始化代碼
為了將linux內(nèi)核加載到嵌入式系統(tǒng)中,有必要修改與硬件相關(guān)的內(nèi)核初始化代碼。這個過程包括設(shè)置存儲器映射以便加載內(nèi)核映像,以及為支持內(nèi)核的運(yùn)行而修改設(shè)備驅(qū)動程序。
4.1.1設(shè)置存儲器映射
Linux內(nèi)核映像是一種壓縮文件,存放在flash存儲器中,執(zhí)行時被拷貝到SDRAM中并解壓。圖3描述了內(nèi)存映像的加載順序。
系統(tǒng)復(fù)位時,CPU只能接受flash ROM空間的代碼,同時執(zhí)行位于flash ROM底層的bootloader,,它負(fù)責(zé)從主機(jī)端下載代碼并且將代碼存儲到flashROM中。
1)bootloader將主機(jī)的linux內(nèi)核拷貝到數(shù)字處理模塊上的SDRAM中。
2)SDRAM中被下載的linux內(nèi)核映像被存儲在flash ROM中位于bootloader頂層的空間中。
3)系統(tǒng)初始化,同時,bootloader調(diào)用linux映像內(nèi)的一段執(zhí)行代碼(head.o),將全部flash ROM空間中的內(nèi)容拷貝到SDRAM中。
4)CPU利用系統(tǒng)管理寄存器,將flash ROM中的初始地址空間與SDRAM的初始地址空間相交換。
當(dāng)flash ROM中的映像被加載到SDRAM之后,無需改變程序計數(shù)器就可以執(zhí)行代碼(head.o)。圖4中顯示了最終的存儲器映射。
拷貝到SDRAM中的linux映像可解壓執(zhí)行,為了完成釋放功能,需要一些存儲器空間,例如符號開始段、用戶堆棧、分配的內(nèi)存等。在這些空間中,一個壓縮的linux內(nèi)核映像被解壓工具釋放出來,被釋放的代碼位于被分配的內(nèi)存空間的下一地址。
4.1.2 內(nèi)核需要的設(shè)備
內(nèi)核需要的基本設(shè)備包括中斷控制器、定時器和控制臺設(shè)備。這些設(shè)備被映像到MCU的內(nèi)部寄存器中,通過修改內(nèi)部寄存器而提供必要的功能。
4.2設(shè)備驅(qū)動的設(shè)計
數(shù)字電視系統(tǒng)包括視頻處理設(shè)備和模擬輸出設(shè)備以及內(nèi)核所必須的設(shè)備,本文為I2C總線接口(PCF8584)設(shè)計一個設(shè)備驅(qū)動。PCF8584設(shè)備驅(qū)動包括接口模塊、內(nèi)核模塊、算法模塊、適配器模塊,如圖5所示。
接口模塊提供設(shè)備驅(qū)動程序與應(yīng)用程序之間的接口,定義設(shè)備文件操作(open, read, write, ioctl,release)以及初始化設(shè)備文件(/dev/i2c0);內(nèi)核模塊用來增加或移除適配器、定義I2C總線的功能以及初始化包含系統(tǒng)信息的文件系統(tǒng)(/proc);算法模塊用來初始化PCF8584設(shè)備以及定義PCF8584的函數(shù)(i2c_start,i2c_stop(), wait_for_pin());適配器模塊通過被映射到MCU的存儲器地址將數(shù)據(jù)傳送到MCU。
[1] [2]
本文關(guān)鍵詞:嵌入式Linux操作系統(tǒng),由筆耕文化傳播整理發(fā)布。
本文編號:247596
本文鏈接:http://sikaile.net/wenshubaike/mishujinen/247596.html