淺談基于Linux嵌入式操作系統(tǒng)掌上娛樂(lè)系統(tǒng)設(shè)計(jì)方案
近年來(lái),隨著微處理器技術(shù)、DSP技術(shù)、多媒體編解碼技術(shù)以及嵌入式技術(shù)的發(fā)展,多媒體娛樂(lè)終端已經(jīng)成為消費(fèi)性電子產(chǎn)品的熱點(diǎn)。同時(shí),逐漸成熟的市場(chǎng)隨著MP3在市場(chǎng)上取得的巨大成功,以及MP4、數(shù)字電視、3G通訊等相關(guān)技術(shù)的起步,在未來(lái)幾年內(nèi)都將會(huì)得到快速發(fā)展。
本文引用地址:http://www.ex-cimer.com/article/149230.htm嵌入式系統(tǒng)是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。
多媒體終端正是數(shù)字信息產(chǎn)業(yè)的一個(gè)重要組成部分,所以在這個(gè)背景下,MultimediaTerminal蘊(yùn)含著極大地發(fā)展?jié)摿Α?/p>
本文是基于Linux嵌入式操作系統(tǒng)在UP-TECHS3C2410DVK1。1開(kāi)發(fā)平臺(tái)下設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)高性能、低功耗、低成本的嵌入式掌上娛樂(lè)系統(tǒng)。
1系統(tǒng)概述
本系統(tǒng)以UP-TECHS3C2410DVK1。1為開(kāi)發(fā)平臺(tái),使用嵌入式linux作為操作系統(tǒng)。
本系統(tǒng)的實(shí)現(xiàn)包括兩個(gè)方面:
一是底層系統(tǒng)的搭建。本系統(tǒng)是在通用的嵌入式Linux操作系統(tǒng)上進(jìn)行適當(dāng)?shù)牟眉?,使其符合系統(tǒng)的硬件平臺(tái),并且初始化開(kāi)發(fā)底層的驅(qū)動(dòng),實(shí)現(xiàn)了對(duì)系統(tǒng)的控制以及數(shù)據(jù)的存儲(chǔ)和傳輸。
二是應(yīng)用層的實(shí)現(xiàn)。
系統(tǒng)的底層包括文件系統(tǒng)的搭建以及各種接口部件的驅(qū)動(dòng)程序,這些驅(qū)動(dòng)程序通過(guò)嵌入式Linux操作系統(tǒng)進(jìn)行調(diào)用,然后完成應(yīng)用的功能,為上層的接口層和應(yīng)用層提供服務(wù)。
中間的嵌入式GUI為接口層,采用QT4作為用戶GUI的界面庫(kù)。QT4是基于服務(wù)器-客戶端的一種用戶界面中間件,提供了豐富的功能控件和精美的界面設(shè)計(jì)功能,可以便捷的設(shè)計(jì)出所需要的各種功能模塊。
系統(tǒng)的最上層就是直接面向用戶的應(yīng)用層。該層采用QT4設(shè)計(jì),向用戶提供了精美的用戶界面,用戶可以通過(guò)觸摸屏方便的調(diào)用相關(guān)功能。系統(tǒng)的軟件結(jié)構(gòu)框圖如圖1所示:
圖1系統(tǒng)的軟件結(jié)構(gòu)框圖
應(yīng)用層的設(shè)計(jì)是本文主要的開(kāi)發(fā)工作,主要包含以下幾種功能模塊:
①多媒體功能模塊:調(diào)用MPlayer播放器對(duì)系統(tǒng)內(nèi)存或者USB接口中的外存定位對(duì)應(yīng)的體文件,并將其解碼;視頻、視頻文件可以全屏播放/最小播放。幾乎可以播放市面上現(xiàn)存的所有的音頻、視頻文件。
②娛樂(lè)游戲功能:提供了幾個(gè)界面友好有趣的游戲,增加系統(tǒng)的娛樂(lè)性。
2開(kāi)發(fā)平臺(tái)
2。1硬件開(kāi)發(fā)平臺(tái)介紹
硬件平臺(tái)采用博創(chuàng)UP-TECHS3C2410DVK1。1開(kāi)發(fā)板,處理器類(lèi)型:SamsungS3C2410。主頻:203MHZ。
它適用于工業(yè)控制、移動(dòng)通信設(shè)備、醫(yī)療儀器等多種場(chǎng)合,外擴(kuò)64MBNANDFLASH和64MSDRAM,提供USB2。0接口與計(jì)算機(jī)進(jìn)行高速通信;該平臺(tái)集成了大尺寸LCD觸摸屏,型號(hào):LQ080V3DG01,分辨率:640*480像素,這也是選擇它作為開(kāi)發(fā)平臺(tái)的重要原因。系統(tǒng)硬件結(jié)構(gòu)框圖如圖2所示。
圖2系統(tǒng)硬件結(jié)構(gòu)框圖
2。2軟件開(kāi)發(fā)平臺(tái)介紹
在系統(tǒng)層,由于UP-TECHS3C2410DVK1。1開(kāi)發(fā)板提供原始的系統(tǒng)(vivi、linux-2。4、root。cramfs)版本低,因此,針對(duì)多媒體娛樂(lè)系統(tǒng),裁剪移植了適合本系統(tǒng)的Uboot-1。1。6、linux-2。6。24內(nèi)核和yaffs文件系統(tǒng)。該系統(tǒng)使用較為通用的bootloader:UBoot,網(wǎng)絡(luò)資源較多的內(nèi)核linux2。6和可讀可寫(xiě)的yaffs文件系統(tǒng),易于系統(tǒng)的開(kāi)發(fā)。并配置了LCD屏驅(qū)動(dòng)、網(wǎng)卡驅(qū)動(dòng)、SD卡等驅(qū)動(dòng)。
在應(yīng)用層,采用QTSDK設(shè)計(jì)所有的應(yīng)用程序。
Qt是一個(gè)跨平臺(tái)的C++圖形用戶界面(GUI)庫(kù),包括跨平臺(tái)類(lèi)庫(kù)、集成開(kāi)發(fā)工具和跨平臺(tái)IDE。使用Qt一次開(kāi)發(fā),多次編譯,無(wú)須重新編寫(xiě)源代碼,便可跨不同桌面和嵌入式操作系統(tǒng)部署這些應(yīng)用程序。
3實(shí)現(xiàn)原理
應(yīng)用層軟件的設(shè)計(jì)主要包括兩個(gè)模塊:多媒體播放器以及游戲模塊。用戶主界面設(shè)計(jì)了一個(gè)主框架,然后將其他功能模塊的圖標(biāo)放在該框架內(nèi),完成了整體的規(guī)劃設(shè)計(jì)。下面詳細(xì)介紹這兩個(gè)功能模塊的設(shè)計(jì)與實(shí)現(xiàn)。
3。1播放器的實(shí)現(xiàn)
對(duì)于音頻和視頻的播放,本系統(tǒng)使用QT設(shè)計(jì)一個(gè)前端播放、控制界面,并使用Mplayer作為后端程序,能播放mp3、ogg、ogm、wma、wav、asf、au、avi、mpeg、mpg、mv1、mov、wmv、pls、m3u、mp4、m4a等音頻和視頻格式。播放器模塊的結(jié)構(gòu)圖如圖3所示,播放器使用Mplayer作為后端程序(紅色部分),使用QT4開(kāi)發(fā)前端程序(綠色部分)。
圖3播放器結(jié)構(gòu)圖
3。1。1后端程序簡(jiǎn)介
本系統(tǒng)使用Mplayer作為其后端程序。MPlayer被評(píng)為L(zhǎng)inux下的最佳媒體播放工具,不需要任何系統(tǒng)解碼器就可以播放包括視頻、音頻、流媒體、廣播、電視等各種媒體。
Mplayer另一個(gè)重要特點(diǎn)在于其開(kāi)源性。
Realplayer,WindowsMediaPlayer,QuickTime等許多播放軟件都是性能優(yōu)秀的播放軟件,但由于它們都不開(kāi)放源代碼,給移植帶來(lái)了麻煩。同時(shí)MPlayer還具有良好的移植性,可以移植到許多非X86平臺(tái)上,MPlayer軟件包中含有針對(duì)ARM架構(gòu)的優(yōu)化代碼,這些代碼利用ARM的特性加快了對(duì)媒體的處理速度。
基于以上多個(gè)原因,本系統(tǒng)選擇了MPlayer作為娛樂(lè)終端的播放軟件。本系統(tǒng)通過(guò)移植Mplayer來(lái)實(shí)現(xiàn)對(duì)視頻的播放功能。Mplayer編、解碼模塊,是系統(tǒng)的音、視頻處理中心,在mplayer的編解碼庫(kù)中,包含的大量的音、視頻格式處理程序,經(jīng)過(guò)編譯優(yōu)化過(guò)的mplayer可以完成對(duì)大多數(shù)音、視頻格式高效的編解碼工作。
3。1。2前端程序的設(shè)計(jì)與播放器的實(shí)現(xiàn)
主界面窗口有一個(gè)顯示屏和一些控制按鈕,包括播放、暫停、下一首、上一首、音量調(diào)整以及播放進(jìn)度條。文件操作窗口可以使用戶選擇要播放的文件。
播放列表用來(lái)播放用戶加載的多媒體文件。
MPlayer默認(rèn)全屏播放,但在GUI中一般都是指定區(qū)域或者控制來(lái)播放。這樣顯得美觀,MPlayer支持在指定的X窗口播放的功能。用-wid參數(shù)告訴窗口ID即可。例如:mplayertest。mpg-wid0x00029#0x0029是XID,而QT的控件都是從QWidget繼承下來(lái),因此它本身也有wid,這樣只要用QWidget::winID()取出WID,即可實(shí)現(xiàn)在指定窗口播放視頻的功能。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論