嵌入式Linux下基于ARM9的媒體播放的設(shè)計
現(xiàn)在大多數(shù)嵌入式設(shè)備都要求實現(xiàn)音視頻的播放功能。ARM9+Linux在嵌入式系統(tǒng)中應(yīng)用廣泛,因此,這里提出一種嵌入式Linux下基于ARM9的多媒體播放系統(tǒng)。
1 播放器系統(tǒng)平臺
播放器的嵌入式Linux系統(tǒng)的層次結(jié)構(gòu)如圖1所示。硬件上電后,CPU的程序指針首先指向一個特定的存儲器地址,該地址一般存放Boot-loader,Bootloader在CPU和內(nèi)存初始化后,把Linux內(nèi)核從ROM設(shè)備中解壓到內(nèi)存,然后程序指針跳轉(zhuǎn)到內(nèi)核在內(nèi)存的起始位,由Linux內(nèi)核繼續(xù)完成剩下的系統(tǒng)引導(dǎo)。內(nèi)核在重新初始化系統(tǒng)后,就加載根文件系統(tǒng),運行用戶應(yīng)用程序。圖2為開發(fā)系統(tǒng)硬件設(shè)計框圖。
系統(tǒng)硬件平臺的核心處理器為S3C2410X,微處理器是一款由Samsung公司為手持設(shè)備設(shè)計的低功耗、高度集成的基于ARM7TDMI核的微處理器。為了降低系統(tǒng)總成本和減少外圍器件,這款芯片中還集成有:16 KB指令Cache、16 KB數(shù)據(jù)Cache、MMU、外部存儲器控制器、LCD控制器(STN和TFT)、NAND Flash控制器、4個DMA通道、3通道UART、1個12C總線控制器、1個I2S總線控制器,以及4通道PWM定時器和1個內(nèi)部定時器、通用I/O口、實時時鐘、8通道10位ADC和觸摸屏接口、UsB主、USB從、SD/MMC卡接口等。該處理器廣泛應(yīng)用于PDA、移動通信、路由器和工業(yè)控制等領(lǐng)域。
軟件系統(tǒng)設(shè)計必須與硬件平臺緊密結(jié)合。S3C2410采用NAND Flash作為整個系統(tǒng)的程序存儲區(qū)域,在系統(tǒng)啟動時通過片上ROM的Bootload-er程序,從NAND Flash加載并執(zhí)行外部引導(dǎo)程序來實現(xiàn)整個系統(tǒng)的啟動步驟,整個軟件系統(tǒng)采取圖3所示的設(shè)計結(jié)構(gòu)。
2 madplay MP3播放器的移植
2.1 系統(tǒng)部分代碼
madplay主程序頭文件信息數(shù)據(jù)結(jié)構(gòu)如下:
[!--empirenews.page--]
2.2 安裝及編譯
本系統(tǒng)需要madplay源代碼以及l(fā)ibid3tag庫和libmad庫,這里采用madplay-0.15.1b.tar.gz、libid3tag-0.15.1b.tar.gz和
libmad-0.15.1b.tar.gz,另外libid3tag庫編譯時需要zlib庫。將文件拷貝到/home/cvteeh/jx2410/examples。其安裝后的目錄為:
其中,install目錄是libid3tag和libmad庫安裝后的安裝目錄,madplay編譯時必須正確指定該目錄下的include和lib子目錄為其inclu-de搜索目錄和庫文件搜索目錄;libid3tag-0.15.1b為libid3tag庫的源代碼目錄;libmad-0.15.1b為libmad庫的源代碼目錄;libz為li-bz庫安裝目錄,libid3tag庫編譯時使用;madplay-0.15.1b為madplay源程序目錄;mkall為編譯腳本。
在該目錄下直接執(zhí)行以下語句:
[root@localhost madplay]#./mkall
該腳本將編譯libid3tag庫、libmad庫以及madplay。編譯成功后在madplay-0.15.1b目錄下生成madplay文件即為MP3播放器程序。
[!--empirenews.page--]
編譯成功后將在madplay目錄下生成mplayer文件,該文件為mplayer媒體播放程序:
[root@localhost madplay-0.15.1b]#cp madplay/tftpboot
下載運行。啟動ARM9+Linux平臺,用U盤中的MP3音頻文件zgl.mp3,系統(tǒng)使用該文件進(jìn)行測試:
將耳機(jī)插入SPK座,如果正常的話將聽到歌聲。
3 mplayer媒體播放器的移植
mplayer只支持16 bpp以上圖形顯示,而不支持8 bpp圖形顯示,因此,當(dāng)mplayer程序運行在LCD配置為STN的教學(xué)系統(tǒng)時,只能播放聲音,不能顯示圖形,而在LCD配置為TFT的教學(xué)系統(tǒng)時,既可以播放聲音,又能顯示圖形。
以下為音視頻同步代碼
安裝及編譯結(jié)果如下:
在MPlayer-0.93目錄下有一個腳本文件:mkall,這個文件為編譯腳本。在該目錄下直接執(zhí)行:
[root@localhost MPlayer-0.93]#./mkall
該腳本將配置并編譯mplayer,下面是該腳本所進(jìn)行的配置和編譯命令:
編譯成功后將在MPlayer-0.93目錄下生成mplayer文件,該文件為mplayer媒體播放程序。
[root@localhost MPlayer-0.93]# cp mplayer/tftpboot
下載運行。啟動ARM9+Linux平臺,用U盤中的mpeg視頻測試。
將耳機(jī)插入SPK座,觀察LCD顯示器。測試系統(tǒng)是否有音視頻輸出。
4 結(jié)束語
本系統(tǒng)設(shè)計具有很好的移植性,其實現(xiàn)過程和核心的代碼對同類應(yīng)用有很好的通用性,只需要較小的修改就能移植到不同的操作系統(tǒng)和平臺上,可以廣泛使用在各種嵌入式系統(tǒng)中,如PDA,智能手機(jī)等方面,并具有較高的經(jīng)濟(jì)價值。該設(shè)計方案具有低耦合、高內(nèi)聚、可擴(kuò)展、可移植等良好特點,支持編碼格式為MPEG-1、MPEG-2、MPEG-3和MPEG-4等多媒體文件。