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