陳洋君 吳志勇 崔明 張維達(dá)
摘 要: 針對(duì)目前大多數(shù)多媒體播放系統(tǒng)都需要通過(guò)專門的視頻編解碼芯片對(duì)視頻文件進(jìn)行編解碼,所帶來(lái)的成本高、開發(fā)繁瑣等問(wèn)題,結(jié)合ARM微處理器、嵌入式Linux操作系統(tǒng)、MPlayer應(yīng)用程序等,設(shè)計(jì)一種基于ARM?Linux的嵌入式多媒體播放系統(tǒng)。該系統(tǒng)采用了低成本、低功耗、高性能的ARM處理器,嵌入了開源、移植性高,功能強(qiáng)大的Linux操作系統(tǒng)。同時(shí)使用了網(wǎng)絡(luò)文件系統(tǒng)NFS,實(shí)現(xiàn)不同操作平臺(tái)上的文件共享。最終在該嵌入式系統(tǒng)下,通過(guò)經(jīng)移植的應(yīng)用程序MPlayer將音視頻文件直接經(jīng)軟解碼后實(shí)現(xiàn)了多媒體播放器的功能,播放音畫質(zhì)流暢穩(wěn)定,達(dá)到預(yù)期效果。結(jié)果表明,該設(shè)計(jì)不僅降低了成本,且簡(jiǎn)化了開發(fā)的過(guò)程。
關(guān)鍵詞: ARM微處理器; 嵌入式Linux; 多媒體播放器; NFS
中圖分類號(hào): TN912.23+1?34; TP368.1 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)10?0075?04
Abstract: As the most present multimedia player systems need the special codec chip to encode and decode video files, which leads to the high cost and cockamamie fussy development, an embedded multimedia player system based on ARM?Linux was designed in combination with ARM microprocessors, embedded Linux operating system, MPlayer application program, etc. The low cost, low power consumption and high performance ARM microprocessor are adopted in system, in which open source, high portability and powerful Linux operating system is embedded, and the network file system (NFS) is employed for sharing of files on different operating platforms. The function of the multimedia player was achieved after software direct decoding of audio and video files by means of the transplanted application program MPlayer. The expected effect of smooth and stable audio and video playback was realized. The result indicates that the design reduces costs and simplifies the development process.
Keywords: ARM microprocessor; embedded Linux; multimedia player; NFS
當(dāng)代,信息技術(shù)飛速發(fā)展,新穎便攜的消費(fèi)類電子產(chǎn)品得到了大眾的追捧,成為了IT市場(chǎng)的一個(gè)重要的經(jīng)濟(jì)增長(zhǎng)點(diǎn)[1],嵌入式系統(tǒng)在消費(fèi)類電子產(chǎn)品得到了廣泛的應(yīng)用[2?3]。本文研究是在嵌入式系統(tǒng)下實(shí)現(xiàn)多媒體功能。近十年國(guó)內(nèi)多媒體播放器主要采用簡(jiǎn)單控制芯片(如單片機(jī)等)加上音視頻解碼芯片的方式,雖然價(jià)格低,但功能單一,音畫質(zhì)差,且開發(fā)難度大。而國(guó)外采用專用解碼芯片的多媒體播放器,在處理性能和效果上得到了提升,卻因其高昂的價(jià)格,不適用于國(guó)內(nèi)市場(chǎng)。針對(duì)這些弊端,本文設(shè)計(jì)的多媒體播放器采用的是ARM?Linux的解決方案,即在ARM開發(fā)板上移植Linux操作系統(tǒng),并通過(guò)移植的應(yīng)用程序MPlayer對(duì)音視頻軟解碼后實(shí)現(xiàn)多媒體功能。該方案具有反應(yīng)速度快、移植性高、費(fèi)用低、功能可擴(kuò)展性強(qiáng)等特點(diǎn)。
1 ARM微處理器以及Linux嵌入式
1.1 ARM微處理器平臺(tái)
ARM處理器是一款RISC微處理器[4],共有37個(gè)寄存器,其中包括31個(gè)通用寄存器,6個(gè)狀態(tài)寄存器(標(biāo)識(shí)CPU的工作狀態(tài)及程序的運(yùn)行狀態(tài))。ARM處理器主要面向低預(yù)算市場(chǎng)。ARM特點(diǎn)主要體現(xiàn)在:成本低、功耗低,性能高,采用雙指令集,尋址方式靈活多樣等。
該系統(tǒng)采用的ARM處理器是S3C2440A[5],該處理器具有16/32位RISC體系架構(gòu)和ARM920T CPU核心強(qiáng)大的指令集,增強(qiáng)型的ARM架構(gòu)MMU以支持WinCE,EPOC32和Linux。共有8個(gè)Bank(每個(gè)128 MB),支持NOR以及NAND FLASH啟動(dòng),它具有低功耗,全靜態(tài)設(shè)計(jì)等優(yōu)點(diǎn),還提供豐富的外設(shè)資源,適合多媒體播放器的設(shè)計(jì)要求。
1.2 嵌入式Linux
嵌入式系統(tǒng)是依托于計(jì)算機(jī)技術(shù),以應(yīng)用為目標(biāo),并且軟硬件都可裁剪,在成本、性能、穩(wěn)定性、體積大小、功耗等有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)[6]。
嵌入式操作系統(tǒng)具有可裁剪、可配置、實(shí)時(shí)性高等特點(diǎn)。近年來(lái),廣為人知的嵌入式操作系統(tǒng)有VxWorks,WinCE,嵌入式Linux等。但Linux得益于其免費(fèi),開源等優(yōu)勢(shì),Linux操作系統(tǒng)被廣泛應(yīng)用于嵌入式系統(tǒng)中。Linux是類Unix操作系統(tǒng)的一種,用戶可以免費(fèi)使用,也可自由傳播的。得益于其成本低以及可定制性,在嵌入式領(lǐng)域異軍突起。Linux特點(diǎn):自由軟件,免費(fèi)試用,多用戶、多任務(wù);極強(qiáng)的平臺(tái)可伸縮性(可裁剪);提供強(qiáng)大的管理功能;完全符合POSIX標(biāo)準(zhǔn);具有豐富的圖形用戶界面;具有強(qiáng)大的網(wǎng)絡(luò)功能。
2 ARM?Linux嵌入式系統(tǒng)總體設(shè)計(jì)
目前,在嵌入式ARM開發(fā)板上運(yùn)行Linux[7]已經(jīng)非常普遍,一個(gè)基于ARM?Linux的嵌入式系統(tǒng)大致可以分為5部分,如圖1所示。
系統(tǒng)軟件層次主要由五個(gè)部分組成:
引導(dǎo)加載程序(Boot Loader):它是系統(tǒng)上電運(yùn)行的第一段程序,在操作系統(tǒng)啟動(dòng)前,完成目標(biāo)板軟硬件的初始化,為內(nèi)核的調(diào)用做好準(zhǔn)備。本系統(tǒng)使用的是U?boot。
Linux內(nèi)核:包括嵌入式硬件平臺(tái)的內(nèi)核啟動(dòng)參數(shù)和依據(jù)需求所定制的內(nèi)核。
文件系統(tǒng):包括根文件系統(tǒng)和普通的文件系統(tǒng)。
應(yīng)用程序即用戶特定的應(yīng)用程序。
硬件平臺(tái):該系統(tǒng)主要由嵌入式處理器、FLASH、 TFT?LCD屏、串口、電源等構(gòu)成。
該系統(tǒng)采用的ARM9處理器是三星公司的S3C2440A,首先通過(guò)運(yùn)行在虛擬機(jī)(VMware workstation) 的Fedora10上利用交叉編譯鏈arm?Linux?gcc將Linux內(nèi)核,U?Boot源碼包編譯成可用鏡像文件,然后構(gòu)建根文件系統(tǒng),進(jìn)行相應(yīng)的NAND FLASH驅(qū)動(dòng)移植,Qt移植、TFT?LCD移植、USB設(shè)備驅(qū)動(dòng)移植。在ARM開發(fā)板上搭建好多媒體播放器的嵌入式環(huán)境后,移植應(yīng)用程序MPlayer。通過(guò)將視頻文件NFS掛載到Linux,在ARM芯片控制下由移植的MPlayer軟解碼來(lái)實(shí)現(xiàn)多媒體播放器的功能。系統(tǒng)總體結(jié)構(gòu)框圖如圖2所示。
然后,NAND FLASH驅(qū)動(dòng)移植,網(wǎng)卡驅(qū)動(dòng)移植、USB設(shè)備驅(qū)動(dòng)移植、TFT?LCD屏驅(qū)動(dòng)移植[9]、I2C總線移植等。
制作文件系統(tǒng):包括移植yaffs文件系統(tǒng)[6],編譯并安裝BusyBox后,在手動(dòng)添加“dev” ,“etc”,“home” ,“l(fā)ib”,“mnt”,“opt”等,構(gòu)建文件系統(tǒng)。
3.2 配置網(wǎng)絡(luò)文件系統(tǒng)NFS服務(wù)
在網(wǎng)絡(luò)上,通過(guò)網(wǎng)絡(luò)文件系統(tǒng)(Network File System,NFS)[10],一個(gè)系統(tǒng)可以與他人共享目錄和文件。用戶和程序可以像訪問(wèn)本地文件一樣的訪問(wèn)遠(yuǎn)端系統(tǒng)上的文件。在嵌入式開發(fā)中,NFS服務(wù)是常用于內(nèi)核啟動(dòng)掛載根文件系統(tǒng)的方式。使用這種方式掛載根文件系統(tǒng),為嵌入式產(chǎn)品開發(fā)和測(cè)試提供了廉價(jià)而高效的方案。
具體配置[11]流程如下:
(1) 首先關(guān)閉防火墻:使用#/etc/init.d/iptables stop或者使用命令#lokkit(永久關(guān)閉防火墻)。
(2) 設(shè)置共享目錄: #gedit/etc/exports,然后編輯NFS的配置文件,添加/opt/EmbedSky/root_nfs *(rw,sync,no_root_squsah)。其中/opt/EmbedSky/ root_nfs為NFS共享目錄,通過(guò)NFS掛載后它可以作為開發(fā)板的根文件系統(tǒng)。
(3) 將前面制作好的根文件系統(tǒng)復(fù)制一份后改名為root_nfs,然后修改etc/init.d/rcS,屏蔽掉net_set &。
(4) 測(cè)試PC端是否成功設(shè)置并啟動(dòng)NFS服務(wù):?jiǎn)?dòng)NFS,命令行輸入:#/etc/init.d/nfs start;命令行輸入 mount?t nfs 192.168.1.58: /opt/EmbedSky /root_nfs/opt/EmbedSky/root,通過(guò)檢查/opt/ EmbedSky/ root_nfs和/opt/EmbedSky/root目錄內(nèi)容是否一致驗(yàn)證設(shè)置成功與否。
(5) 開發(fā)板下的設(shè)置:首先將PC與開發(fā)板連接起來(lái)(包括網(wǎng)線、并口線、電源線),進(jìn)入U(xiǎn)?Boot下載模式,然后依次輸入命令0?>1?>192.168.1.58(PC的Linux的IP地址)?>192.168.1.2(開發(fā)板的Linux的IP地址)?>255.255.255.0(開發(fā)板的掩碼地址)?>/opt/EmbedSky/root_nfs(PC的Linux中的NFS文件系統(tǒng)的路徑)?>s?>q?>8,啟動(dòng)開發(fā)版。
(6) 在SecureCRT控制臺(tái)下輸入:mount?t nfs?o intr,nolock,rsize=1024,wsize=1024 192.168.1.58:/opt/ EmbedSky/root_nfs /mnt。
掛載成功后,訪問(wèn)開發(fā)板的/mnt/目錄時(shí),就相當(dāng)于訪問(wèn)PC的Linux的NFS目錄。
SecureCRT控制臺(tái)如圖3所示,開發(fā)板被啟動(dòng)后狀態(tài)如圖4所示。
4 應(yīng)用程序MPlayer的移植
MPlayer是一款開源的多媒體播放器,可以運(yùn)行在多種操作系統(tǒng)上[12],例如Linux和類Unix系統(tǒng)、Windows等。其本身編譯自帶多種解碼器,能夠播放大多數(shù)音視頻文件,如AVI,MPEG,MP3,WMV等。還能夠觀看 DVD,VideoCD,RealMedia和DivX等格式電影[13]。MPlayer還具有廣泛的輸出設(shè)備支持,它可以在OpenGL,XII,DGA,Xv,SVGAlib及AAlib上工作,而且也能夠使用一些硬件相關(guān)的低級(jí)的驅(qū)動(dòng)模式[14]。MPlayer具備解碼、播放及音視頻同步功能。十分適用于本系統(tǒng)的需求。
具體的移植實(shí)現(xiàn)流程如下:
首先準(zhǔn)備源碼包:MPlayer?1.0rc2.tar.bz2以及l(fā)ibmad?0.15.1b.tar.gz。MPlayer 1.0已經(jīng)把大部分解碼庫(kù)都自帶了,如FFmpeg等,但是自帶的音頻庫(kù)在處理器S3C2440A下效果非常不好,換成使用libmad效果不錯(cuò)。因此MPlayer在ARM?Linux的最簡(jiǎn)單的移植只需要移植這兩個(gè)即可。移植后進(jìn)行字符界面的播放。
(1) 編譯libmad。配置configure文件,#./configure CC=arm ?linux ?gcc??enable?fpm=arm??host=arm?linux??disable?shared??disable?debugging??prefix=/opt/EmbestSky/video/MPlayer?1.0rc2 ;輸入命令make ,make install編譯安裝libmad。
(2) 編譯安裝MPlayer。下載并解壓源代碼MPlayer?1.0rc3.tar.bz2,#tar?jzxvf MPlayer?1.0rc3.tar.bz2。
配置 configure 文件。其中包括指定安裝路徑,交叉編譯工具,添加環(huán)境變量,設(shè)定靜態(tài)變量等。
(3) 輸入命令make,make install 編譯安裝MPlayer。
(4) 將編譯后的Mplayer通過(guò)NFS掛載的方式在開發(fā)板上運(yùn)行:在控制臺(tái)輸入指令:./mplayer?libmad car.avi?framedrop?quiet?vf rotate=1,scale=480:240,如圖5所示。開發(fā)板視頻播放最終全屏顯示結(jié)果如圖6所示。
5 結(jié) 語(yǔ)
本文設(shè)計(jì)的觸屏多媒體播放器是在ARM?Linux嵌入式環(huán)境下,通過(guò)MPlayer軟解碼實(shí)現(xiàn)的。該方案充分發(fā)揮了性能優(yōu)越的S3C2440A微處理器,高兼容性,易剪裁的Linux操作系統(tǒng)以及MPlayer軟解碼的優(yōu)勢(shì)。設(shè)計(jì)出的多媒體播放器性能穩(wěn)定,界面友好,達(dá)到了預(yù)期效果。與傳統(tǒng)的多媒體播放器相比,基于ARM?Linux的嵌入式播放器具有功能可擴(kuò)展、低成本、開發(fā)過(guò)程簡(jiǎn)單的優(yōu)勢(shì)。
參考文獻(xiàn)
[1] 姚放,肖海.嵌入式處理器分類與現(xiàn)狀[EB/OL].[2014?02?23].http://www.bol?system.com.
[2] 傅籬.嵌入式系統(tǒng)在我國(guó)的應(yīng)用現(xiàn)狀與發(fā)展趨勢(shì)[J].管理觀察,2013(11):164?166.
[3] 宮鵬,宮玥,王端寶.基于嵌入式系統(tǒng)的多媒體音樂(lè)播放器[J].現(xiàn)代電子技術(shù),2011,34(12):100?103.
[4] 周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2005.
[5] Samsung Electronics. S3C2440A 32?bit CMOS microcontroller user′s manual [M]. South Korea: Samsung Electronics, 2004.
[6] 馬義德,劉映杰,張新國(guó).嵌入式系統(tǒng)的現(xiàn)狀及發(fā)展前景[J].信息技術(shù),2001,8(12):57?59.
[7] 韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出報(bào)社,2012:197.
[8] 田磊.基于ARM的嵌入式Linux操作系統(tǒng)的移植[D].西安:西安電子科技大學(xué),2009:21.
[9] 紀(jì)寧寧,孫靈燕.S3C2440A驅(qū)動(dòng)RGB接口TFT LCD的研究[J].液晶與顯示,2008,23(1):96?100.
[10] 聶和平.基于ARM9的嵌入式Linux系統(tǒng)移植與驅(qū)動(dòng)開發(fā)[D].南京:南京郵電大學(xué),2013:21?42.
[11] 瑛宣.Linux 下NFS(網(wǎng)絡(luò)文件系統(tǒng))的建立與配置方法[J].計(jì)算機(jī)與網(wǎng)絡(luò),2013,39(21):44?45.
[12] 劉玉萍.MPlayer的嵌入移植[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(1):192?196.
[13] 米韶華.嵌入式多媒體系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:成都理工大學(xué),2010:43?57.
[14] 宋丹,馬昌萍,馬幼鳴.MPlayer在嵌入式開發(fā)系統(tǒng)中的應(yīng)用[J].電子產(chǎn)品世界,2005,13(7):68?71.