基于A(yíng)RM Linux QT的掌上多媒體系統的設計和實(shí)現
影音錄制的系統框架見(jiàn)圖2。通過(guò)擴展用于視頻錄制的Philips的視頻解碼芯片SAA7113和ADI的JPEG壓縮芯片來(lái)實(shí)現。首先輸入的模擬視頻信號經(jīng)過(guò)SAA7113轉換為數字信號,然后傳輸給ADI的JPEG壓縮芯片JPEG2000,壓縮為JPEG圖像信號,并通過(guò)擴展的總線(xiàn)接口傳輸到系統上。音頻信號則直接通過(guò)音頻輸入接口送到音頻解碼芯片,并轉化為數字信號進(jìn)行編碼。編寫(xiě)應用程序使傳到的音視頻數字信號一起轉化為Motion JPEG編碼的AVI格式的多媒體文件,并存入擴展的存儲設備(微硬盤(pán)或者M(jìn)MC/SD卡),這樣就可以被Mplayer播放。
3 性能優(yōu)化
盡管ARM9處理器主頻可以高達200MHz以上,但是為了降低功耗,本系統在保證滿(mǎn)足實(shí)時(shí)播放的前提下,對系統進(jìn)行優(yōu)化。所以,在一個(gè)資源受限的處理器上要實(shí)現多媒體文件的實(shí)時(shí)播放,性能優(yōu)化成為關(guān)鍵。本系統主要通過(guò)解碼程序優(yōu)化,打開(kāi)Cache等措施來(lái)提高系統性能。
3.1 對解碼程序的優(yōu)化
由于解碼過(guò)程絕大部分是計算,以MP3音頻文件為例,其解碼過(guò)程主要是高精度乘法和矢量運算,其中80%的CPU時(shí)間用于數值計算,因此對于解碼部分主要采用了以下方法進(jìn)行優(yōu)化:
(1)整數運算。在沒(méi)有硬件浮點(diǎn)單元的CPU上,浮點(diǎn)運算是仿真方式,因此解碼代碼中應直接采用整數運算方式編碼,而避免浮點(diǎn)運算;
(2)通過(guò)查表方式代替很多運算式獲取計算結果,對調用頻繁的小函數采用inline修飾;
(3)關(guān)鍵代碼采用匯編語(yǔ)言編程,以獲得更高效的目標代碼,來(lái)提高系統的運行性能。
3.2 打開(kāi)Cache
ARM9處理器帶有獨立的16 kB數據Cache和16 kB的指令Cache。本系統中,打開(kāi)指令Cache肯定能在一定程度上提高性能。至于數據Cache,由于從SD卡或者U盤(pán)讀進(jìn)來(lái)解碼的數據使用完畢后就再也不會(huì )使用了,解碼產(chǎn)生的數據也是一樣,使用一次就會(huì )被丟棄,因此數據訪(fǎng)問(wèn)的時(shí)間局限性基本是不存在的。但是,系統在訪(fǎng)問(wèn)數據時(shí)存在很強的"空間局限性",所以打開(kāi)數據Cache后可以提高性能,因為:
(1)Cache和IDRAM之間通過(guò)Burst方式傳遞數據,提高了總線(xiàn)帶寬,從而降低讀數據的延遲。
(2)Cache一次讀128bit或256bit,當讀已在Cache中的數據時(shí)就會(huì )命中。
(3)通過(guò)WriteBuffer或WriteBack方式讀內存時(shí),沒(méi)有寫(xiě)DRAM的延遲。
但是這樣也會(huì )帶來(lái)數據不一致的問(wèn)題,主要是DMA造成數據的不一致,因為SD卡或USB的傳輸是通過(guò)DMA進(jìn)行的,其傳輸過(guò)程無(wú)需CPU干預,DMA操作直接訪(fǎng)問(wèn)內存,但不會(huì )跟新Cache和寫(xiě)緩存相應的內容,這樣就造成了數據的不一致,可用以下方法解決:
(1)將SD卡或USB和CPU共享的控制數據空間設置為uncachable,否則無(wú)法保證CPU讀到的Cache中的數據是最新數據,從而可能造成系統運行錯誤。
(2)SD卡或USB輸入模塊通過(guò)DMA像主存傳輸文件數據時(shí),寫(xiě)數據的緩沖區是由文件系統提供的。該緩沖區的特點(diǎn)是存儲空間比較大而且是順序訪(fǎng)問(wèn)的,可將其設置為cachable。
經(jīng)過(guò)上述方法的優(yōu)化以后,系統性能得到了大幅度的提高。經(jīng)過(guò)測試表明,優(yōu)化后解碼所需的時(shí)間為優(yōu)化前的15%左右,均小于正常播放所需的時(shí)間,完全滿(mǎn)足實(shí)時(shí)播放的要求。
4 結束語(yǔ)
本系統以ARM9處理器為核心建立嵌入式多媒體系統,并在其上移植Mplayer播放器,擴展其功能,使mpeg-1、mpeg-2、avi等視頻格式以及MP3、WMA等音頻格式都能在其上流暢地播放,并實(shí)現了影音錄制功能。在測試中各模塊工作正常,達到了能全屏播放視頻,流暢播放音頻,能夠將攝像頭拍到的視頻傳送到Mplayer進(jìn)行播放,能讀取外接U盤(pán)或者SD卡中的多媒體文件進(jìn)行播放,能從網(wǎng)絡(luò )下載多媒體文件到擴展存儲設備被Mplayer播放的設計要求。隨著(zhù)多媒體技術(shù)的廣泛應用,掌上多功能媒體播放器會(huì )有更廣闊的應用前景。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論