在UP-TECH S3C2410 DVK1.1 開發(fā)平臺下,,提出了一個觸摸式的嵌入式掌上娛樂系統(tǒng)設計方案,。本系統(tǒng)主要包括多媒體播放器和游戲的基本功能。本系統(tǒng)可以播放現(xiàn)有的大多數(shù)的音頻視頻文件,;設計了嵌入式游戲,,增加了系統(tǒng)的娛樂性。使用觸摸屏方便作為人機交互的平臺,。采用跨平臺性能良好的Qt4 設計了應用程序和人機界面,,界面友好,漢化顯示,,美觀,,操作簡便,運行流暢,。整個系統(tǒng)模塊化設計,,充分考慮了軟件系統(tǒng)自身所占的存儲空間以及可擴展性,具有廣闊的市場前景,。
嵌入式系統(tǒng)是以應用為中心,、以計算機技術為基礎、軟件硬件可裁剪,、適應應用系統(tǒng)對功能,、可靠性、成本,、體積,、功耗嚴格要求的專用計算機系統(tǒng)。近年來,,隨著微處理器技術,、DSP 技術、多媒體編解碼技術以及嵌入式技術的發(fā)展,多媒體娛樂終端已經(jīng)成為消費性電子產(chǎn)品的熱點,。同時,,逐漸成熟的市場隨著MP3 在市場上取得的巨大成功,以及MP4,、數(shù)字電視,、3G 通訊等相關技術的起步,在未來幾年內(nèi)都將會得到快速發(fā)展,。多媒體終端正是數(shù)字信息產(chǎn)業(yè)的一個重要組成部分,, 所以在這個背景下,MultimediaTerminal 蘊含著極大地發(fā)展?jié)摿?。本文是基?a class="innerlink" href="http://forexkbc.com/tags/Linux" title="Linux" target="_blank">Linux 嵌入式操作系統(tǒng)在UP-TECHS3C2410 DVK1.1 開發(fā)平臺下設計并實現(xiàn)了一個高性能,、低功耗、低成本的嵌入式掌上娛樂系統(tǒng),。
1 系統(tǒng)概述
本系統(tǒng)以UP-TECH S3C2410 DVK1.1 為開發(fā)平臺,,使用嵌入式linux 作為操作系統(tǒng)。
本系統(tǒng)的實現(xiàn)包括兩個方面,,一是底層系統(tǒng)的搭建,。本系統(tǒng)是在通用的嵌入式Linux 操作系統(tǒng)上進行適當?shù)牟眉簦蛊浞舷到y(tǒng)的硬件平臺,,并且初始化開發(fā)底層的驅動,,實現(xiàn)了對系統(tǒng)的控制以及數(shù)據(jù)的存儲和傳輸。二是應用層的實現(xiàn),。
系統(tǒng)的底層包括文件系統(tǒng)的搭建以及各種接口部件的驅動程序,,這些驅動程序通過嵌入式Linux 操作系統(tǒng)進行調用,然后完成應用的功能,,為上層的接口層和應用層提供服務[5].
中間的嵌入式GUI 為接口層,,采用QT4 作為用戶GUI 的界面庫。QT4 是基于服務器-客戶端的一種用戶界面中間件,,提供了豐富的功能控件和精美的界面設計功能,,可以便捷的設計出所需要的各種功能模塊。
系統(tǒng)的最上層就是直接面向用戶的應用層,。該層采用QT4 設計,,向用戶提供了精美的用戶界面,用戶可以通過觸摸屏方便的調用相關功能,。系統(tǒng)的軟件結構框圖如圖1 所示:
圖1 系統(tǒng)的軟件結構框圖
應用層的設計是本文主要的開發(fā)工作,,主要包含以下幾種功能模塊:
① 多媒體功能模塊:調用MPlayer 播放器對系統(tǒng)內(nèi)存或者USB 接口中的外存定位對應的體文件,并將其解碼,;視頻,、視頻文件可以全屏播放/最小播放,。幾乎可以播放市面上現(xiàn)存的所有的音頻、視頻文件,。
② 娛樂游戲功能:提供了幾個界面友好有趣的游戲,,增加系統(tǒng)的娛樂性。
2 開發(fā)平臺
2.1 硬件開發(fā)平臺介紹
硬件平臺采用博創(chuàng)UP-TECH S3C2410 DVK1.1 開發(fā)板,,處理器類型:Samsung S3C2410.主頻:203MHZ,。
它適用于工業(yè)控制、移動通信設備,、醫(yī)療儀器等多種場合,,外擴64MB NAND FLASH 和64M SDRAM,提供USB2.0 接口與計算機進行高速通信;該平臺集成了大尺寸LCD 觸摸屏,,型號:LQ080V3DG01,分辨率:640*480 像素,這也是選擇它作為開發(fā)平臺的重要原因,。系統(tǒng)硬件結構框圖如圖2 所示,。
圖2 系統(tǒng)硬件結構框圖
2.2 軟件開發(fā)平臺介紹
在系統(tǒng)層,由于UP-TECH S3C2410 DVK1.1 開發(fā)板提供原始的系統(tǒng)(vivi,、linux-2.4,、root.cramfs)版本低,因此,,針對多媒體娛樂系統(tǒng),,裁剪移植了適合本系統(tǒng)的Uboot-1.1.6、linux-2.6.24 內(nèi)核和yaffs 文件系統(tǒng),。該系統(tǒng)使用較為通用的bootloader:UBoot,網(wǎng)絡資源較多的內(nèi)核linux2.6 和可讀可寫的yaffs 文件系統(tǒng),,易于系統(tǒng)的開發(fā)。并配置了LCD 屏驅動,、網(wǎng)卡驅動,、SD 卡等驅動。
在應用層,,采用QT SDK 設計所有的應用程序,。
Qt 是一個跨平臺的C++圖形用戶界面(GUI)庫,包括跨平臺類庫,、集成開發(fā)工具和跨平臺IDE.使用Qt"一次開發(fā),,多次編譯",無須重新編寫源代碼,便可跨不同桌面和嵌入式操作系統(tǒng)部署這些應用程序,。
3 實現(xiàn)原理
應用層軟件的設計主要包括兩個模塊:多媒體播放器以及游戲模塊,。用戶主界面設計了一個主框架,然后將其他功能模塊的圖標放在該框架內(nèi),,完成了整體的規(guī)劃設計,。下面詳細介紹這兩個功能模塊的設計與實現(xiàn),。
3.1 播放器的實現(xiàn)
對于音頻和視頻的播放,本系統(tǒng)使用QT 設計一個前端播放,、控制界面,,并使用Mplayer 作為后端程序,能播放mp3,、ogg,、ogm、wma,、wav,、asf、au,、avi,、mpeg、mpg,、mv1,、mov、wmv,、pls,、m3u、mp4,、 m4a 等音頻和視頻格式,。播放器模塊的結構圖如圖3 所示,播放器使用Mplayer 作為后端程序(紅色部分),,使用QT4開發(fā)前端程序(綠色部分),。
圖3 播放器結構圖
3.1.1 后端程序簡介
本系統(tǒng)使用Mplayer 作為其后端程序。MPlayer被評為Linux 下的最佳媒體播放工具,,不需要任何系統(tǒng)解碼器就可以播放包括視頻,、音頻、流媒體,、廣播,、電視等各種媒體。
Mplayer 另一個重要特點在于其開源性,。
Realplayer,Windows Media Player,Quick Time 等許多播放軟件都是性能優(yōu)秀的播放軟件,,但由于它們都不開放源代碼,給移植帶來了麻煩,。同時MPlayer 還具有良好的移植性,, 可以移植到許多非X86 平臺上,MPlayer 軟件包中含有針對ARM 架構的優(yōu)化代碼,,這些代碼利用ARM 的特性加快了對媒體的處理速度,。
基于以上多個原因,,本系統(tǒng)選擇了MPlayer 作為娛樂終端的播放軟件。本系統(tǒng)通過移植Mplayer 來實現(xiàn)對視頻的播放功能,。Mplayer 編,、解碼模塊,是系統(tǒng)的音,、視頻處理中心,,在mplayer 的編解碼庫中,包含的大量的音,、視頻格式處理程序,,經(jīng)過編譯優(yōu)化過的mplayer 可以完成對大多數(shù)音、視頻格式高效的編解碼工作,。
3.1.2 前端程序的設計與播放器的實現(xiàn)
主界面窗口有一個顯示屏和一些控制按鈕,,包括播放、暫停,、下一首,、上一首、音量調整以及播放進度條,。文件操作窗口可以使用戶選擇要播放的文件。
播放列表用來播放用戶加載的多媒體文件,。
MPlayer 默認全屏播放,,但在GUI 中一般都是指定區(qū)域或者控制來播放。這樣顯得美觀,,MPlayer 支持在指定的X 窗口播放的功能,。用-wid 參數(shù)告訴窗口ID即可。例如:mplayer test.mpg -wid 0x00029 #0x0029是XID,而QT 的控件都是從QWidget 繼承下來,,因此它本身也有wid,這樣只要用 QWidget::winID() 取出WID,即可實現(xiàn)在指定窗口播放視頻的功能,。
本模塊是建立一個Qt GUI 程序。然后用一個label控件來播放視屏,,用一個進度條顯示播放的進度,,用按鍵顯播放,暫停,,上一首,,下一首,停止和添加資源文件,。然后用一個Qprocess 在后臺執(zhí)行MPlayer,并把label 的WID 傳給它,。然后把MPlayer 的輸入輸出重定向,把原本從標準輸入接收命令變成從GUI 的接收命令,。
3.1.3 播放功能設計
播放器實現(xiàn)的軟件流程圖如圖4 所示:
圖4 播放器軟件流程圖,。
通過定義一個QProcess 對象調用已編譯好的Mplayer,。
QProcess *process = new QProcess();
process->setProcessChannelMode(QProcess::MergedChannels),;
Process->start("mplayer –ac –mad xxxxx"),;
在命令中添加 -slave 和 -quiet 就可以通過命令設置Mplayer 實現(xiàn)相應的功能。Process->start("mplayer–slave –quiet –ac –mad xxxxx"),。
下面對播放器的暫停播放功能和音量調節(jié)進行介紹,。
① 播放暫停功能設計
通過這段代碼可以設置Mplayer 暫停:process->write("pause ");執(zhí)行這段代碼的時候在播放狀態(tài)下就會暫停,,暫停狀態(tài)下就會繼續(xù)播放,。
② 音量調節(jié)
下面代碼即可實現(xiàn)音量調節(jié)的功能:
Process->write("volume -1 "); //音量減??;
Process->write("volume +1 "); //音量增加,;
Process->write("volume XX 1 "),; //音量設置成指定值
該系統(tǒng)使用如下代碼實現(xiàn)音量調節(jié):
QString cmd="volume" +QString::number(value)+" 1 ";
process->write(cmd.toLocal8Bit()。data()),;
系統(tǒng)最終實現(xiàn)的實驗效果圖如圖5 所示:
圖5 播放器模塊實驗結果圖
3.2 游戲模塊的設計
本系統(tǒng)設計了一個打磚塊游戲,。通過建立一個打磚塊的游戲類CannonField,包含角度int angle、力度int force,、是否正在射擊bool isShooting 等成員,,具有設置角度setAngle(int angle)、設置力度setForce(intforce),、射擊shoot(),、運動軌跡shotRect()、游戲控制newTarget(),、 setGameOver(),、restartGame()等槽函數(shù),能發(fā)出擊中hit() ,、未擊中missed() ,、角度變化angleChanged(int newAngle) 力度變化force Changed(int newForce)等信號。
游戲開始時使用隨機函數(shù)在指定區(qū)域內(nèi)顯示一個磚塊,,點擊射擊按鈕時通過setAngle 和setForce 設置的角度和力度,,使用shoot()進行射擊,通過發(fā)出的擊中hit()或未擊中missed()信號來作出相應的動作,。仿真效果圖如圖6 所示:
圖6 游戲模塊實驗結果圖
4 總結
本系統(tǒng)采用開源的Linux 操作系統(tǒng)和QT4 界面設計工具,,整個系統(tǒng)采用模塊化設計,具有良好的可擴展性,。硬件平臺采用的是 UP-TECH S3C2410 DVK1.1嵌入式系統(tǒng),,該芯片采用ARM 架構,,其獨特的架構設計具有功耗低、功能強的特點,,因此非常適合用于手持式設備,;采用LCD 觸摸屏與用戶進行交互,使用簡單,,符合便攜式終端的發(fā)展趨勢,。