基于ARM L i nux QT的掌上多媒體系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
0 引言
隨著人們生活水平的提高,消費(fèi)結(jié)構(gòu)發(fā)生了巨大變化,消費(fèi)者用于娛樂方面的支出在總支出中所占的比例正在不斷擴(kuò)大。掌上多媒體系統(tǒng)可以滿足人們對(duì)于試聽以及便攜的需求,另外還可以實(shí)現(xiàn)一些其他功能,如圖片瀏覽、網(wǎng)絡(luò)下載、以及影音錄制等。目前市場(chǎng)上的掌上多媒體系統(tǒng)多是Windows CE、Symbian、Palm OS等商用操作系統(tǒng),其開放的程序不夠高,而且價(jià)格偏高,不適于第三方應(yīng)用軟件的移植。ARM體系作為專用嵌入式系統(tǒng)設(shè)計(jì)的通用處理器內(nèi)核,具備高性能、低功耗、易擴(kuò)展的特點(diǎn)。本系統(tǒng)基于ARM9、嵌入式Linux操作系統(tǒng)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)更為開放的嵌入式平臺(tái),來實(shí)現(xiàn)掌上多媒體系統(tǒng)的諸多功能。
1 多功能掌上媒體播放器系統(tǒng)的硬件設(shè)計(jì)
多功能掌上媒體播放器系統(tǒng)的硬件設(shè)計(jì)如圖1所示。LCD采用的是Sharp的TFT屏,3.52in,分辨率240×320;音頻控制器是IIS接口的音頻控制器,解碼芯片是UDA1314TS;另外擴(kuò)展了用于視頻錄制的Philips的視頻解碼芯片SAA7113和ADI的JPEG壓縮芯片。視頻錄制的框圖如圖2所示。
2 多功能掌上媒體播放器系統(tǒng)的軟件設(shè)計(jì)
系統(tǒng)設(shè)計(jì)和軟件設(shè)計(jì)是本系統(tǒng)的難點(diǎn)。系統(tǒng)軟件設(shè)計(jì)的總體框架如圖3所示。
2.1 嵌入式Linux操作系統(tǒng)
Linux最初由Linux Torvalds編寫,后來在網(wǎng)絡(luò)上被眾多的Linux愛好者加以修改和維護(hù),具有內(nèi)核高效穩(wěn)定、開源、可移植性強(qiáng)、內(nèi)核可定制可裁剪、多線程多任務(wù)等特點(diǎn),因此選擇其作為本媒體播放器系統(tǒng)的操作系統(tǒng)。圖1多功能掌上多媒體系統(tǒng)的硬件設(shè)計(jì)圖2多功能掌上多媒體系統(tǒng)的視頻錄制系統(tǒng)的框圖圖3多功能掌上多媒體系統(tǒng)的軟件設(shè)計(jì)總體框架
首先定制裁剪并移植了Linux2.6的內(nèi)核,然后為使各硬件能正常工作編寫了鍵盤驅(qū)動(dòng)、LCD驅(qū)動(dòng)、觸摸屏驅(qū)動(dòng)、音頻驅(qū)動(dòng)、USB驅(qū)動(dòng)等驅(qū)動(dòng)。多功能掌上多媒體系統(tǒng)的正常工作首先是進(jìn)入ARM-Linux操作系統(tǒng),然后加載各個(gè)硬件的驅(qū)動(dòng)程序并初始化各外圍設(shè)備,接著就進(jìn)入基于QT/Embedded庫(kù)的Qtopia桌面系統(tǒng)編寫的GUI圖形界面程序的播放器,最后選擇要進(jìn)行的操作。
對(duì)于Linux內(nèi)核的移植首先要移植bootloader,系統(tǒng)采用的是VIVI,其功能包括:分區(qū)管理、參數(shù)管理、啟動(dòng)Linux操作系統(tǒng)、文件系統(tǒng)管理、支持網(wǎng)絡(luò)、通過串口下載程序到Flash或者RAM等。建立嵌入式開發(fā)環(huán)境,使得能夠交叉編譯源代碼,對(duì)VIVI的源代碼進(jìn)行交叉編譯,生成能在ARM Linux上運(yùn)行的bin文件,通過開發(fā)板的JTAG口將其燒寫到開發(fā)板的Flash中。
對(duì)內(nèi)核的移植首先要對(duì)內(nèi)核進(jìn)行修改MAKEFILE文件指定編譯器以及目標(biāo)平臺(tái),然后配置內(nèi)核,交叉編譯生成內(nèi)核鏡像,通過UART口(串口)下載到開發(fā)板上。移植相應(yīng)的文件系統(tǒng)。文件系統(tǒng)中的文件是數(shù)據(jù)的集合,不僅包含著文件中的數(shù)據(jù),而且還有文件系統(tǒng)的結(jié)構(gòu),所有Linux用戶和程序看到的文件、目錄、軟連接及文件保護(hù)信息等都存儲(chǔ)在其中。在設(shè)計(jì)過程中把文件系統(tǒng)設(shè)置為可讀寫,這樣操作性強(qiáng)一些,在投入到生產(chǎn)中的時(shí)候應(yīng)該把文件系統(tǒng)設(shè)置為只讀的,這樣整個(gè)掌上多功能媒體播放器的操作系統(tǒng)就加載好了。
2.2 驅(qū)動(dòng)程序的設(shè)計(jì)
本系統(tǒng)共涉及到鍵盤驅(qū)動(dòng)、觸摸屏驅(qū)動(dòng)、LCD驅(qū)動(dòng)、音頻驅(qū)動(dòng)和USB驅(qū)動(dòng)等驅(qū)動(dòng)。因?yàn)槎嗝襟w功能是本系統(tǒng)的重點(diǎn),所以播放器部分很重要,這里主要介紹音頻驅(qū)動(dòng)的編寫。
目前Linux下常用的音頻驅(qū)動(dòng)程序主要有兩種類型:OSS(Open Sound System) 和ALSA。最早出現(xiàn)的Linux上的編程接口是OSS,它由一套完整的內(nèi)核驅(qū)動(dòng)程序模塊組成,可為大多數(shù)音頻芯片驅(qū)動(dòng)提供統(tǒng)一的編程接口。在嵌入式系統(tǒng)中,對(duì)于特定的處理器(如本系統(tǒng)采用的S3C2410),可以按照OSS接口標(biāo)準(zhǔn)來編寫音頻驅(qū)動(dòng)程序,以滿足Linux上的應(yīng)用程序。OSS接口已經(jīng)足夠簡(jiǎn)單,需要完成的主要的工作就是對(duì)音頻設(shè)備(本系統(tǒng)采用的是Philips的UDA1314TS)的read,write和ioctl等操作。
評(píng)論