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