




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGEPAGE18基于嵌入式ARM-Linux的播放器的設(shè)計與實現(xiàn)摘要隨著21世紀(jì)的到來,人類進(jìn)入了PC時代。在這一階段,嵌入式技術(shù)得到了飛速發(fā)展和廣泛應(yīng)用。由此,本文提出了一種基于嵌入式ARM-Linux的播放器設(shè)計與實現(xiàn)的方案。本文首先詳細(xì)分析了ARM體系結(jié)構(gòu),研究了嵌入式Linux操作系統(tǒng)在ARM9微處理器的移植技術(shù),包括交叉編譯環(huán)境的建立、引導(dǎo)裝載程序應(yīng)用、移植嵌入式Linux內(nèi)核及建立根文件系統(tǒng),并且實現(xiàn)了嵌入式Linux到S3C2410開發(fā)板的移植。由于嵌入式系統(tǒng)本身硬件條件的限制,常用在PC機(jī)的圖形用戶界面GUI系統(tǒng)不適合在其上運行。為此,本文選擇了Minigui作為研究對象,在對其體系結(jié)構(gòu)等方面進(jìn)行研究基礎(chǔ)上,實現(xiàn)了Minigui到S3C2410開發(fā)板的移植,完成了嵌入式圖形用戶界面開發(fā),使得系統(tǒng)擁有良好的操作界面。對于播放器,本文實現(xiàn)了Linux系統(tǒng)下的通用媒體播放器—Mplayer到S3C2410開發(fā)板的移植。通過對音頻數(shù)據(jù)輸出的研究,解決了Mp1ayer播放聲音不正常的問題,實現(xiàn)了一個集音樂和視頻播放于一體的嵌入式多媒體播放系統(tǒng)。最后,總結(jié)了論文所做的工作,指出了嵌入式播放器所需要進(jìn)一步解決和完善的問題。關(guān)鍵詞:嵌入式ARM-Linux;S3C2410;Mplayer;GUI界面;Minigui
PlayerDesigningandImplementBasedOnEmbeddedARM-LinuxAbstract Alongwiththe21stcenturyarrivals,thehumanityentersthepostPCtime.Inthisstage,embeddedtechnologygetsrapidlydevelopedandwidelyused.So,thispaperaimstodesignaplayerbasedonembeddedARM-Linux. First,inthispaper,ARMarchitectureandthecharacteristicareanalyzedindetail.TheemphasisofthestudyisputontheportingtechniquesofembeddedLinuxoperationsystembasedontheARM9micro-processor,whichincludesettingcrosscomplier、transplantingBootloader、transplantingembeddedLinuxkernelandsettingrootfilesystem;Furthermore,implementthetechniqueoftransplantingEmbeddedLinuxtoS3C2410board. GUI(GraphicalUserInterfaces)systemswhicharesupportedbynormalPCscannotrunwellontheembeddedsystems,justbecauseoftherestrictionofthehardwareofembeddeddevices.So,thispaperselectsMiniguiasresearchobject.BasedontheMiniguiarchitectureanditsotheraspects,thetechniqueoftransplantingMiniguitoS3C2410boardisgivenindetail,andthenanembeddedGUIsystemisestablishedanditalsomakesthehandleinterfacefriendly. Abouttheplayer,thispaperimplementstransplantingtheuniversalplayeronLinux-MplayertoS3C2410board.Bylearningofaudiodata,itsolvestheproblemofsoundabnormality,andachievesanembeddedmultimediasystemwhichcouldplayaudioandvideofiles.Keywords:EmbeddedARM-Linux;S3C2410;Mplayer;GUIinterface;Minigui
目錄摘要 IAbstract II目錄 III第一章緒論 11.1系統(tǒng)研究背景 11.1.1多媒體播放器與嵌入式系統(tǒng) 11.1.2嵌入式多媒體播放器國內(nèi)外發(fā)展現(xiàn)狀 11.2嵌入式處理器 31.3嵌入式系統(tǒng) 41.3.1嵌入式系統(tǒng)的概述 41.3.2嵌入式系統(tǒng)的選擇 61.4本文的意義和主要工作 7第二章系統(tǒng)軟硬件平臺的搭建 82.1硬件開發(fā)平臺的介紹 82.1.1核心板 82.1.2外設(shè)板 82.1.3設(shè)計所用硬件介紹 92.2硬件平臺的設(shè)計方案 92.2.1核心板設(shè)計 92.2.2外設(shè)電路設(shè)計 142.3嵌入式軟件開發(fā)環(huán)境 152.3.1引導(dǎo)裝載程序 162.3.2宿主機(jī)開發(fā)環(huán)境配置 172.3.3交叉開發(fā)環(huán)境的建立 182.3.4內(nèi)核的編譯 182.3.5燒制內(nèi)核映像和文件系統(tǒng) 202.4嵌入式圖形用戶界面的實現(xiàn) 212.4.1圖形用戶界面minigui的簡介 212.4.2MiniGUI在S3C2410開發(fā)板上的移植過程 21第三章Mplayer的移植 243.1Mplayer的簡介 243.2Mplayer的移植 243.2.1安裝交叉編譯工具及解壓源代碼 243.2.2編譯Mplayer 253.3調(diào)試 26第四章嵌入式播放器Mplayer的設(shè)計 304.1播放器的工作流程 304.2播放器的邏輯結(jié)構(gòu) 304.3Mplayer播放器的目錄文件組織結(jié)構(gòu) 314.4播放器對解碼器和輸出設(shè)備的管理方式 33第五章總結(jié)與展望 355.1本文主要完成的工作及結(jié)論 355.2完善與展望 35致謝 36參考文獻(xiàn): 37第一章緒論1.1系統(tǒng)研究背景 從上世紀(jì)末開始,隨著計算機(jī)和電子技術(shù)的發(fā)展走上快車道,便攜式電子設(shè)備,諸如智能手機(jī),個人電子助理(PDA)的運算存儲能力和通信能力都得到了長足的進(jìn)步,便攜式設(shè)備的用戶界面也變的越來越友好,從早期的只能顯示單色文字的LED,發(fā)展到現(xiàn)在大尺寸6萬色彩色液晶屏幕。因此,用戶已經(jīng)不再僅僅滿足于早期的便攜式電子設(shè)備提供的傳統(tǒng)的,簡單的語音通信或文檔處理功能。隨著多媒體技術(shù)發(fā)展,用戶希望能夠在輕巧的便攜式設(shè)備上同樣能夠享受到過去只能在笨重的臺式機(jī)或筆記本電腦上才能享受到語音甚至視頻等多媒體服務(wù)。1.1.1多媒體播放器與嵌入式系統(tǒng)隨著芯片技術(shù)的快速發(fā)展,嵌入式系統(tǒng)的性能逐步提高,功能也越來越豐富。嵌入式系統(tǒng)在眾多領(lǐng)域的應(yīng)用給我們的生活帶來了便利,并且對人們的生活方式的改變和生活質(zhì)量的提高具有重要的影響。在這些領(lǐng)域中,消費電子產(chǎn)品的應(yīng)用具有更為廣泛的潛力,尤其是便攜式消費電子產(chǎn)品。當(dāng)前,消費類電子產(chǎn)品更新?lián)Q代的速度進(jìn)一步加快,市場需求不斷增大。在MP3數(shù)碼隨身聽取得巨大的市場成功后,支持視頻的便攜式播放器逐漸進(jìn)入消費者的視線,成為繼MP3之后的新一代數(shù)碼影音娛樂平臺。受MP3的影響,人們習(xí)慣的將這一類嵌入式多媒體系統(tǒng)稱作MP4。在法國Archos公司推出第一款MP4掌上影院后,眾多企業(yè)均看好MP4的發(fā)展態(tài)勢。新一代MP4良好的發(fā)展前景和潛在的市場,成為移動數(shù)碼產(chǎn)業(yè)的新亮點,吸引著眾多廠商大力研發(fā),并將其推向市場。除播放視頻這一基本功能外,嵌入式多媒體系統(tǒng)還附帶了若干增值功能,如音樂播放、圖片瀏覽、游戲、調(diào)頻收音、錄音、電子書以及拍照、錄像功能。1.1.2嵌入式多媒體播放器國內(nèi)外發(fā)展現(xiàn)狀目前嵌入式多媒體的內(nèi)部結(jié)構(gòu),比較成熟的解決方案有三種:基于SigmaDesigns851x系列芯片的解決方案、基于TlDM32ODSP+ARM處理器的解決方案和基于工ntelPXA27x的解決方案,這三種解決方案是目前的主流方案。上述幾種方案各有特點:(1)SigmaDesigns851x方案SigmaDesignS851x處理器是目前性能最強(qiáng)、最全面的專業(yè)解碼芯片,采用雙核設(shè)計,將200MHz32位RISC處理器和MPEG解碼處理器集成于單芯片上,在無需其它外圍芯片支持的情況下,完成系統(tǒng)所需各種接口的提供、系統(tǒng)處理以及流暢的WMAV9、DivXV3.11、DivXV4.X和S.X、MPEG-4、MPEG-2、MPEG-1等音視頻解碼。其中對系統(tǒng)要求極高的MPEG-2解碼,SigmaDesigns851x能輕松達(dá)到3OfpsDI,流暢自如,難能可貴!優(yōu)點:單芯片,低成本,低功耗;硬核視頻解碼,視頻播放效果好缺點:無法播放網(wǎng)絡(luò)視頻格式RM,RMVB等(2)TIDM320DSP-I-ARM處理器的解決方案作為DSP巨頭,TI力推DM320DSP的PMP解決方案。TI方案是利用DM320DSP進(jìn)行音視頻編解碼處理,ARM處理器負(fù)責(zé)系統(tǒng)處理及提供外圍設(shè)備接口。與SigmaDesigns方案一樣,TI方案支持的媒體類型非常豐富,能支持WMV、DivXV3.11、DivXV4.X和5.X、MPEG-4、MPEG-2、MPEG-1等。但由于TlDM320為純DSP芯片,因此必須配合ARM處理器才能組成完整的解決方案,因此在成本上并不具備優(yōu)勢。優(yōu)點:支持的媒體類型豐富,編解碼能力強(qiáng)缺點:必須配合ARM處理器,成本不占優(yōu)勢,功耗較大;不支持網(wǎng)絡(luò)視頻格式RM,RMVB(3)IntelPXA27x的解決方案Intel公司于2003年底推出了性能最為強(qiáng)勁的PXA27x嵌入式處理器,最高頻率可達(dá)624MHz。作為一款性能及其強(qiáng)勁的嵌入式處理器,配合嵌入式Linux或wince操作系統(tǒng),PXA27x理論上可以支持任何媒體格式,并通過軟件升級,支持未來媒體格式。但由于MPEG-2對硬件的極高要求,因此單純依靠PXA27x處理器進(jìn)行MPEG-2編解碼是不現(xiàn)實的。Intel公司于2004年推出了2700G多媒體加速芯片,配合PXA270進(jìn)行視頻加速與3D加速。同時,PXA27x加入了wirelessMMX技術(shù)和SpeedStep動態(tài)電源管理技術(shù),不但大大增強(qiáng)了PXA270的媒體處理能力,而且極大降低了系統(tǒng)功耗,延長PMP產(chǎn)品的電池壽命。2700G的加入,更使PXA27x方案成為全能解決方案,不但完美解決了MPEG-2編解碼問題,更使基于PXA27x的PMP產(chǎn)品能向多功能化發(fā)展,可以加入游戲、攝像等功能,成為個人娛樂終端。優(yōu)點:支持目前所有的媒體類型,可通過軟件升級支持未來媒體類型;接口豐富,可支持SD、MS、CF等;支持最大400萬象素攝像頭;支持動態(tài)電源管理,功耗低缺點:成本可能較高目前市面上還有其它幾種非主流方案,如PxA255解決方案、SunplusSPCA536解決方案、Freescalei.MX21解決方案等?;赑XA255的方案特點是功耗較低,且能夠支持較多的媒體格式,但缺點是無法支持大尺寸圖像的編解碼,如MPEG-2等。SunplusSPCA536解決方案價格低廉,但僅支持MPEG-4編解碼與JPEG,支持媒體類型單純,功能單一;FreeSCalei.MX21芯片原為智能手機(jī)專門設(shè)計,接口類型比較豐富,但音視頻處理能力一般,無法進(jìn)行流暢的MPEG-4播放,無法處理MPEG-2視頻。由于PMP(便攜式多媒體播放器)產(chǎn)品的研發(fā)難度較大,目前市面上的大多數(shù)PMP產(chǎn)品均為國外或臺灣設(shè)計。中國大陸消費類娛樂產(chǎn)品的生產(chǎn)商因研發(fā)能力普遍較低而無法自己研發(fā)產(chǎn)品,因此未來中國大陸PMP設(shè)計制造將更多的按照生產(chǎn)商+DesignHouse的模式進(jìn)行,這樣生產(chǎn)商可以充分發(fā)揮自己的渠道和規(guī)模優(yōu)勢,而DesignHouse則發(fā)揮自己的強(qiáng)設(shè)計能力和低營運成本優(yōu)勢,雙方合作則能夠共同把PMP市場做大、做強(qiáng)。國內(nèi)目前也有進(jìn)行PMP方案設(shè)計的公司,如南京東集公司(),采用的是Intel嵌入式處理器PXA255方案。采用SigmaDesignS解決方案的公司主要集中在深圳,如深圳市深視通科技開發(fā)有限公司(),該公司目前己經(jīng)設(shè)計出了基于SiglnaDesigns85n處理器的成熟的PMP解決方案,并制作了DEMO。而TIDM320方案,目前主要依靠TI合作伙伴美國Ingenient公司推廣[1]。1.2嵌入式處理器嵌入式處理器是嵌入式硬件平臺的核心,負(fù)責(zé)系統(tǒng)事件的響應(yīng)、任務(wù)的調(diào)度、外圍器件的控制以及信號的處理。嵌入式處理器是由通用計算機(jī)中的CPU演變而來的。它的特征是32位以上,具有較高的性能。與通用計算機(jī)中的CPU不同的是,嵌入式處理器在實際嵌入式應(yīng)用中只保留和嵌入式應(yīng)用緊密相關(guān)的功能硬件,去除其他的冗余功能部分,這樣就以最低的功耗和資源實現(xiàn)嵌入式應(yīng)用的特殊要求。嵌入式處理器體積小、功耗低、成本低、可靠性高的優(yōu)點使其在互聯(lián)網(wǎng)、通信、消費類電子等多個領(lǐng)域得到了廣泛的應(yīng)用。目前主要的嵌入式處理器按體系結(jié)構(gòu)不同可分為五大類:ARM、MIPS、POWERPC、x86和SH系列。ARM內(nèi)核是由ARM公司開發(fā)的一系列32位RISC處理器內(nèi)核,當(dāng)前有6個系列的產(chǎn)品:ARM7,ARM9,ARM9E,ARM10E,SecurCore以及最新的ARM11系列。目前業(yè)界可以提供ARM內(nèi)核處理器的著名半導(dǎo)體公司有Intel,TI,F(xiàn)reescale,AnalogDevices,CirrusLogic和Samsung等。本課題設(shè)計采用的S3C2410處理器就是Samsung提供的一款采用32位ARM內(nèi)核的處理器。S3C2410內(nèi)部集成了微處理器和一些手持設(shè)備的常用外圍組件,特別適用于手持產(chǎn)品。S3C2410微處理器是一個多用途的通用芯片,它內(nèi)部集成了微處理器和常用外圍組件,可用于各種領(lǐng)域。它是應(yīng)用于手持設(shè)備的低成本實現(xiàn),提供了更高性價比。HHARM2410套件由核心板和底板(外設(shè)板或稱基本板)組成,核心板上集成SamsungS3C2410處理器,64MSDRAM以及16M的FLASH,為您的應(yīng)用研發(fā)提供了足夠的空間。底板上則提供以下外設(shè)接口:一個四線RS-232串口(COM1),一個USBHOST接口,一個10M/100M自適應(yīng)以太網(wǎng)接口,一個TFTLCD接口,一個觸摸屏接口。核心板和底板配合即構(gòu)成一個最小的完整應(yīng)用系統(tǒng)。系統(tǒng)具有體積小、耗電低、處理能力強(qiáng)、等特點,能夠裝載和運行嵌入式Linux操作系統(tǒng)。用戶可以在這個系統(tǒng)平臺上進(jìn)行自主軟件開發(fā)。HHARM2410套件中提供底板硬件電路圖及硬件設(shè)計文檔,極大的方便了用戶進(jìn)行硬件擴(kuò)展開發(fā)。HHARM2410套件提供完備的嵌入式Linux開發(fā)環(huán)境及豐富的開發(fā)調(diào)試工具軟件。S3C2410微處理器的精彩特性[2]:ARM920T嵌入式處理器內(nèi)核,主頻可達(dá)203MHz;擴(kuò)展總線最大頻率100MHz;32位數(shù)據(jù),27位外部地址線;完全靜態(tài)設(shè)計(0-203M);存儲控制器(八個存儲體):包含RAM(SDRAM)控制器,NAND控制器;復(fù)位時引導(dǎo)芯片選擇(8-,16-比特存儲或NAND可供選擇);四個帶有PWM的16位定時器多達(dá)55個中斷源的中斷控制器;RTC;三個UART,SupportsIrDA1.0;四個DMA通道;(支持外設(shè)DMA)8通道,500KSPS,10-bitADC;支持STN與TFTLCD控制器;看門狗;IIS音頻接口;兩個USB口;IIC-Bus接口;兩個串行外圍接口電路(SPI)SD卡接口;HHARM2410開發(fā)套件硬件主要結(jié)構(gòu):SumsungS3C2410處理器16Mbytes16位FLASH64Mbytes32位SDRAM一個四線RS-232接口一個10M/100M自適應(yīng)以太網(wǎng)接口一個TFTLCD接口,一個觸摸屏接口。JTAG接口9V直流電源H/W復(fù)位建運行狀態(tài)指示LED燈1.3嵌入式系統(tǒng)1.3.1嵌入式系統(tǒng)的概述嵌入式系統(tǒng)的定義如下:是一種以應(yīng)用為中心、以計算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng)。由嵌入式系統(tǒng)的定義可見,嵌入式系統(tǒng)具有以下幾大特點:(1)技術(shù)密集嵌入式系統(tǒng)是將先進(jìn)的計算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)以及各個行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物。這一點就決定了它必然是一個技術(shù)密集、不斷創(chuàng)新的知識集成系統(tǒng)。(2)專用性強(qiáng)嵌入式系統(tǒng)是與應(yīng)用緊密結(jié)合的,具有很強(qiáng)的專用性。嵌入式系統(tǒng)的個性化很強(qiáng),其中的軟件系統(tǒng)和硬件的結(jié)合非常緊密,一般要針對硬件進(jìn)行系統(tǒng)的移植,即使在同一品牌、同一系列的產(chǎn)品中也要根據(jù)系統(tǒng)硬件的變化不斷進(jìn)行修改。同時針對不同的任務(wù),往往需要對系統(tǒng)進(jìn)行較大的更改,程序的編譯下載要和系統(tǒng)相結(jié)合。(3)系統(tǒng)精簡嵌入式系統(tǒng)必須根據(jù)應(yīng)用需求可對軟硬件進(jìn)行裁剪,滿足應(yīng)用系統(tǒng)的功能、可靠性、成本、體積等要求。因此目前嵌入式系統(tǒng)的開發(fā)一般是先建立一個相對通用的軟硬件平臺,然后在其基礎(chǔ)上進(jìn)行裁剪和精簡,開發(fā)出適應(yīng)各種需要的系統(tǒng)。一般而言,嵌入式系統(tǒng)的結(jié)構(gòu)自底向上可分為3個部分,如圖1-1所示嵌入式應(yīng)用軟件嵌入式應(yīng)用軟件嵌入式操作系統(tǒng)嵌入式硬件平臺圖1-1嵌入式系統(tǒng)的結(jié)構(gòu)嵌入式硬件平臺是整個嵌入式操作系統(tǒng)和應(yīng)用軟件運行的基礎(chǔ)。不同的應(yīng)用通常有不同的硬件平臺,但是基本的結(jié)構(gòu)是相同的,通常包括嵌入式處理器、存儲器和輸入輸出(工/0)接口,如圖1-2所示[1]。嵌入式處理器嵌入式處理器存儲器輸入輸出圖1-2嵌入式硬件平臺結(jié)構(gòu)1.3.2嵌入式系統(tǒng)的選擇 現(xiàn)今,與嵌入式應(yīng)用相結(jié)合的嵌入式操作系統(tǒng)有VxWorks、Linux、WinCE、COS-II等,他們各有其特點,相比較而言,嵌入式Linux更具有優(yōu)勢。歸納起來,嵌入式Linux至少具有以下優(yōu)勢[3]:(1)開放的源碼,豐富的軟件資源Linux是自由的操作系統(tǒng),它的開放源碼使用戶獲得了最大的自由度。Linux上的軟件資源十分豐富,每一種通用程序在Linux上都可以找到。(2)功能強(qiáng)大的內(nèi)核,性能高效、穩(wěn)定,多任務(wù)Linux的內(nèi)核非常穩(wěn)定,它的高效和穩(wěn)定性已經(jīng)在各個領(lǐng)域,尤其在網(wǎng)絡(luò)服務(wù)器領(lǐng)域,得到了事實的驗證。Linux內(nèi)核小巧靈活,易于裁減,這使得它很適合嵌入式系統(tǒng)的應(yīng)用。(3)支持多種體系結(jié)構(gòu),如X86、ARM、MIPS、ALPHA、SPARC等目前,Linux已經(jīng)被移植到數(shù)十種硬件平臺上,幾乎支持所有流行的CPU。(4)完善的網(wǎng)絡(luò)通訊、圖形、文件管理機(jī)制Linux自產(chǎn)生之日起就與網(wǎng)絡(luò)密不可分,網(wǎng)絡(luò)是Linux的強(qiáng)項。另外,Linux還支持多種文件和圖形系統(tǒng)。(5)支持大量的周邊硬件設(shè)備Linux上的驅(qū)動已經(jīng)非常豐富了,它們支持各種主流硬件設(shè)備和最新硬件技術(shù)。(6)大小、功能都可定制Linux秉承Unix的優(yōu)秀設(shè)計思想,非常靈活,各部分的可定制性都很強(qiáng)。(7)良好的開發(fā)環(huán)境,不斷發(fā)展的開發(fā)工具集Linux有著非常優(yōu)秀的完整開發(fā)工具鏈,有十幾種集成開發(fā)環(huán)境,其中很多是免費的,大大降低了開發(fā)費用。(8)軟件開發(fā)者的廣泛支持Linux的自由精神吸引了成千上萬的程序員投入到Linux的開發(fā)和測試中來,這使得Linux在短時間內(nèi)就成為一個功能強(qiáng)大的操作系統(tǒng)。(9)價格低廉有效降低產(chǎn)品成本,對成本敏感的嵌入式系統(tǒng)來說至關(guān)重要,Linux恰好具有這一特性。正是這些優(yōu)勢,嵌入式Linux系統(tǒng)的研發(fā)熱潮正在蓬勃興起,并且占據(jù)了很大的市場份額,除了一些傳統(tǒng)的Linux公司(如RedHat、MontaVista等)正在從事嵌入式Linux的開發(fā)和應(yīng)用之外,IBM、Intel、Motorolar等著名企業(yè)也開始進(jìn)行嵌入式Linux的研究[4]。嵌入式圖形用戶界面(GraphicsUserInterface)系統(tǒng)是嵌入式實時操作系統(tǒng)的一個重要組成部分,隨著嵌入式系統(tǒng)硬件設(shè)備可獲得性的提高和價格的不斷降低及嵌入式系統(tǒng)應(yīng)用范圍的不斷擴(kuò)大,嵌入式GUI系統(tǒng)的重要性越來越突出,特別是對高性能嵌入式人機(jī)圖形交互界面的要求也越來越迫切,比如消費電子和工業(yè)實時控制系統(tǒng)[5][6][7]。這些系統(tǒng)對GUI的基本要求包括:輕型、占用資源少高性能高可靠性可配置此外,適合嵌入式Linux的GUI還要求是開放源碼的自由軟件[8]。時代的發(fā)展告訴我們,圖形用戶界面GUI的應(yīng)用加速了計算機(jī)的普及廣度,嵌入式技術(shù)的發(fā)展加速了計算機(jī)的普及深度,后PC時代呼喚著兩者日益緊密的結(jié)合[9]。所以對二者的研究有著深刻的意義。1.4本文的意義和主要工作 本文在研究嵌入式系統(tǒng)開發(fā)技術(shù)的基礎(chǔ)上,提出了一套滿足要求的低成本的嵌入式多媒體終端的解決方案。通過對系統(tǒng)的功能需求分析以及市場上主流處理器的功能和性能分析,選擇了華恒公司的HHARM9-EDU-R3實驗平臺和RedHat9.0Linux分別作為系統(tǒng)的硬件和軟件開發(fā)平臺。 本文的主要工作包括三方面的內(nèi)容,首先,基于ARM平臺開發(fā)相應(yīng)的引導(dǎo)加載程序、構(gòu)建嵌入式Linux操作系統(tǒng);第二,針對ARM處理器和Linux操作系統(tǒng)特點進(jìn)行音視頻解碼器的設(shè)計和研究;第三,對系統(tǒng)進(jìn)行驗證;論文的主要結(jié)構(gòu)如下: 第二章系統(tǒng)軟硬件平臺的搭建。包括ARM處理器及硬件核心部件介紹、bootloader實現(xiàn)、交叉開發(fā)環(huán)境建立、Linux移植、minigui移植等; 第三章Mplayer到開發(fā)板的移植。Mplayer為Linux下通用的媒體播放軟件,但非為嵌入式系統(tǒng)而設(shè)計,然而其強(qiáng)大的功能卻是嵌入式系統(tǒng)所需要的。為此本章完成其到開發(fā)板的移植,來完善嵌入式系統(tǒng)對音視頻文件的支持; 第四章嵌入式播放器Mplayer的設(shè)計,針對播放器Mplayer整體結(jié)構(gòu)設(shè)計及數(shù)據(jù)處理流程到諸如分流器,音、視頻解碼,音、視頻同步等各個關(guān)鍵功能模塊作描述。 最后,對論文進(jìn)行總結(jié)與展望。
第二章系統(tǒng)軟硬件平臺的搭建2.1硬件開發(fā)平臺的介紹本設(shè)計使用的硬件開發(fā)平臺是華恒科技的HHARM9-EDU-R3教學(xué)實驗系統(tǒng),此平臺由核心板和外設(shè)板組成,下面分別對這兩部分進(jìn)行介紹[10]。2.1.1核心板核心板的功能模塊結(jié)構(gòu)圖如圖2-1所示,板上集成SamsungS3C2410處理器,16M的FLASH和64MSDRAM,它能為我們的研發(fā)、應(yīng)用提供足夠的空間。圖2-1核心板功能模塊結(jié)構(gòu)圖S3C2410是一款16/32-bitRISC(精簡指令集)高性價比,低功耗,體積小,高性能,高集成度的微處理器,采用203MHZ的ARM920T內(nèi)核。集成了16KB指令緩存和16KB數(shù)據(jù)緩存,利用MMU實現(xiàn)對虛擬內(nèi)存的管理,支持TFTLCD屏,支持NANDFLASH。正是由于S3C2410的這些特點,才使核心板的模塊組成成為可能,也為Linux系統(tǒng)的移植提供必要的硬件資源。2.1.2外設(shè)板外設(shè)板為核心板的應(yīng)用提供了其它的接口和設(shè)備,它提供以下外設(shè)接口:(1)10M/100M自適應(yīng)以太網(wǎng)接口一個;(2)四線RS-232串口(COM1)一個;(3)四線RS232/RS485串口各一個(COM2、COM3);(4)IDE/CF卡接口;(5)SD/MMC卡接口;(6)USBHOST接口一個;(7)USBDevice接口一個;(8)TFTLCD接口;(9)觸摸屏接口;(10)音頻輸入輸出接口,麥克風(fēng)接口;(11)A/D,D/A接口;(12)PS/2接口;核心板和底板是通過一個144針的插槽相接,它們配合后即構(gòu)成一個完整的應(yīng)用系統(tǒng)。2.1.3設(shè)計所用硬件介紹首先,核心板是必不可少的部分,它是一個最小系統(tǒng)。其次,本設(shè)計是一個人機(jī)交互界面設(shè)計的應(yīng)用,故需要一個LCD顯示屏和觸摸屏,通過以上的TFTLCD接口和觸摸屏接口與外設(shè)板相接.最后,設(shè)計的調(diào)試需要通過在PCLinux上運行minicom與開發(fā)板通信,所以需要使用到一個串口,并且,內(nèi)核文件等鏡像的下載需要網(wǎng)絡(luò)接口,故開發(fā)板上的網(wǎng)絡(luò)接口就必不可少了。以上的設(shè)備即構(gòu)成本設(shè)計中必需的硬件開發(fā)平臺,缺一不可。2.2硬件平臺的設(shè)計方案參考華恒HHARM9-EDU-R3教學(xué)實驗平臺的硬件電路設(shè)計,為了減小難度,增加通用性,我們可以選用跟實驗平臺相似的設(shè)計,把整個硬件電路設(shè)計成兩個主要部分:核心板和外設(shè)板,兩者通過插槽接口相接,功能的擴(kuò)展只需通過對外設(shè)板的修改來達(dá)到。2.2.1核心板設(shè)計核心板的正面俯視圖如圖2-2所示:根據(jù)功能模塊分別介紹各個主要組成部分:(1)存儲部分構(gòu)成核心板內(nèi)存由圖2-2中兩塊HY57V561620CT為16M*16位數(shù)據(jù)寬度的SDRAM構(gòu)成,兩片拼成32位模式,公用nGCS6片選空間,共64MRAM。通過參考s3c2410技術(shù)手冊的內(nèi)存映像地址,如圖2-3,可以知道內(nèi)存的起始地址為0x30000000[12]。核心板還集成有一片8M*16位數(shù)據(jù)寬度的INTEL28F128J3CFLASH,通過nGCS0作為片選,從圖2-3可知,起始地址為0x00000000。根據(jù)地址的分配與片選設(shè)置,我們設(shè)計的核心板存儲部分電路圖如圖2-4和圖2-5所示,從圖2-4中可以看到,F(xiàn)LASH使用的地址線為MA1到MA24,而使最高位A0接地,這圖2-2核心板正面俯視圖圖2-3s3c2410內(nèi)存映射樣使得FLASH的0地址為0x01000000,以后內(nèi)核等的燒寫地址也是以此為準(zhǔn)。數(shù)據(jù)地址線為MD0到MD15,正好為16位的數(shù)據(jù)寬度。從圖2-5可見,兩片內(nèi)存使用的地址線為MA2到MA25,而數(shù)據(jù)線分別為MD0-MD15和MD16-MD31,由于共用地址線和片選nGCS6,而分別使用32位數(shù)據(jù)線,所以這兩片16位寬度的內(nèi)存共同組成了32位寬度的內(nèi)存存儲空間。圖2-4FLASH電路接線圖2-5內(nèi)存電路接線(2)供電部分構(gòu)成核心板的供電部分由LV14A六角施密特觸發(fā)倒相器(HEXSCHMITT-TRIGGERINVERTERS)和AMS1117800mA低門限穩(wěn)壓器(800mALowDropoutVoltageRegulator)構(gòu)成,具體電路如圖2-6和圖2-7所示:圖2-6LV14A電路圖2-7AMS1117電路從圖中還可以看到,核心板還有相應(yīng)的電源指示燈D5LED,當(dāng)核心板接收到reset信號時,指示燈滅,而正常工作狀態(tài),指示燈亮。(3)振蕩電路部分構(gòu)成核心板的振蕩電路由兩個晶振電路組成,如圖2-8。12MHz的晶振與s3c2410的XTIpll、XTOpll兩個管腳相接,為內(nèi)部振蕩電路提供振蕩源(forinternalOSCcircuit)。32.768KHz晶振與XTIrtc、XTOrtc兩個管腳相接,作為實時時鐘(RealTimeClock,RTC)振蕩源[11]。
圖2-8振蕩電路圖2-9DIMM144引腳說明(4)與外設(shè)板接口部分核心板與外設(shè)板是通過144針的插槽相接的,主要把核心板電路中的16根存儲數(shù)據(jù)線DM0-DM16、24根存儲地址線MA0-MA23、8根外部中斷引線EINT0-EINT7、兩路UART數(shù)據(jù)線與控制線、通用接口GPIO、IIC、SPI以及其它的讀寫信號、控制線等引出供外設(shè)板調(diào)用。詳細(xì)請參見圖2-9。這里只使用到了144針的插槽接口,而沒有使用168線的內(nèi)存條接口插槽或者PCI插槽,是由于168線需要用到金手指,走線很密,而且工藝要求高,兩層板布線很難實現(xiàn),可能需要4層板才能完成,對于學(xué)校項目設(shè)計來說難度很大,而這樣增加難度是沒有必要的,因為144針的接線已經(jīng)基本能夠滿足實際需要,通過以上的接口可以連接通常使用的器件,如本項目需要使用到的LCD和觸摸屏等。2.2.2外設(shè)電路設(shè)計本設(shè)計中需要使用到的外設(shè)有LCD顯示屏和觸摸屏,并且作為一個應(yīng)用平臺,外設(shè)電路不再包括有調(diào)試用的COM接口和網(wǎng)絡(luò)接口。因為軟件的調(diào)試可以先在HHARM9-EDU-R3平臺上測試好后,再把核心板放到外設(shè)電路板上進(jìn)行實測。(1)LCD顯示屏模塊接口基于電路設(shè)計的模塊化,我們把LCD顯示屏與外設(shè)板分開,使用40針的數(shù)據(jù)線進(jìn)行聯(lián)接,因為LCD屏及其外圍電路通??梢哉麎K地進(jìn)行購買,這樣設(shè)計也即省下了不必要的電路設(shè)計的麻煩。LCD屏我們選用HHARM9-LCD-R4模塊,屏幕的大小為240x320象素,LCD屏模塊接口電路如圖2-10所示。圖2-10LCD屏模塊接口電路(2)觸摸屏電路觸摸屏控制器選用ADS7846,由于觸摸屏與LCD顯示屏是貼在一起的,所以ADS7846的采集信號輸入也是通過LCD顯示屏模塊接口引線接出來的,如圖2-10中的RIGHT、LEFT、UPPER、DOWN引腳。通過對這四路輸入信息的轉(zhuǎn)換,即可把觸摸屏上響應(yīng)的電壓信息轉(zhuǎn)換成相應(yīng)的坐標(biāo)信息。ADS7846電路如圖2-11所示。圖2-11觸摸屏控制器ADS7846電路2.3嵌入式軟件開發(fā)環(huán)境 本文設(shè)計的播放器是基于嵌入式Linux操作系統(tǒng)進(jìn)行設(shè)計。嵌入式Linux是按照嵌入式操作系統(tǒng)的要求而設(shè)計的一種小型操作系統(tǒng)。相對于WinCE、pSOS、palm05等商用實時操作系統(tǒng)(RTOS)它具有源碼開放、易移植、模塊化、資源豐富等優(yōu)勢。支持多線程、多進(jìn)程;支持多種平臺,如x86、PowerPC、ARM、MIPS等等。如圖2-11所示,它是由一個內(nèi)核和一些可以定制系統(tǒng)模塊組成,如文件模塊,網(wǎng)絡(luò)模塊,各種驅(qū)動模塊等。針對本應(yīng)用,對其進(jìn)行了裁剪和配置,只包含了系統(tǒng)所需的模塊支持ext2\jffs2等文件系統(tǒng);內(nèi)存驅(qū)動模塊提供內(nèi)存管理功能;網(wǎng)絡(luò)接口模塊支持以太網(wǎng)接口;GPIO驅(qū)動模塊主要是提供給鍵盤和觸摸屏使用;圖形驅(qū)動模塊是圖形用戶界面(GUI)和圖像顯示的底層支撐模塊;音頻設(shè)備輸出驅(qū)動模塊支持音頻數(shù)據(jù)的數(shù)模轉(zhuǎn)換。應(yīng)用程序應(yīng)用程序文件系統(tǒng)驅(qū)動模塊內(nèi)存驅(qū)動模塊網(wǎng)絡(luò)驅(qū)動模塊GPIO驅(qū)動模塊圖形驅(qū)動模塊音頻輸出驅(qū)動模塊嵌入式Linux內(nèi)核硬件平臺圖2-12嵌入式Linux體系結(jié)構(gòu)2.3.1引導(dǎo)裝載程序 BootLoader就是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。最終,bootloader把操作系統(tǒng)內(nèi)核映像加載到RAM中,并將系統(tǒng)控制權(quán)傳遞給它。 Bootloader程序與硬件平臺有很強(qiáng)相關(guān)性,不同開發(fā)板需要不同的bootloader。與Linux一樣,網(wǎng)上有很多開放源代碼的bootloader,在為自己的開發(fā)板寫bootloader程序時,可以先找到與硬件平臺相類似的bootloader,然后只要做一些改動就可以在開發(fā)板上運行了。 Bootloader的功能相當(dāng)于一個通信控制器,有了它之后,才可以通過串口或網(wǎng)口完成內(nèi)核的加載和應(yīng)用程序的燒寫。當(dāng)然,利用JTAG技術(shù)也可以完成上述任務(wù),但是,JTAG燒寫速度很慢[12]。本系統(tǒng)采用的是ppcboot,ppcboot在嵌入式系統(tǒng)中相當(dāng)于PC機(jī)的BI0S加上操作系統(tǒng)引導(dǎo)頭部的內(nèi)容,并且引導(dǎo)操作系統(tǒng)進(jìn)行裝載和運行,ppcboot啟動后有一系列的命令,使得我們能夠方便地對FLASH、RAM進(jìn)行操作,同時ppcboot己經(jīng)對系統(tǒng)的頻率、定時器進(jìn)行了設(shè)置,初始化了一個調(diào)試串口,這樣可以通過串口或以太網(wǎng)進(jìn)行數(shù)據(jù)的下載。PPCBoot的主要特點如下表所示[13]:功能描述系統(tǒng)加載支持NFS、以太網(wǎng)掛載操作系統(tǒng)和根文件系統(tǒng)內(nèi)存操作支持內(nèi)存查看、修改和比較設(shè)備驅(qū)動支持串口、FLASH、外部SDRAM、EEP、ROM、LCD、USB、PCI等驅(qū)動上電自檢自動檢測FLASH、SDRAM選型及使用情況,CPU類型交互命令通過設(shè)定和訪問環(huán)境變量靈活配置系統(tǒng)各項參數(shù),靈活升級其他特點支持在線讀寫Flash,支持SCC/FCC以太網(wǎng)、TFTP引導(dǎo)、IP和MAC的預(yù)置功能表2-1PPCBoot的主要特點2.3.2宿主機(jī)開發(fā)環(huán)境配置(1)安裝Linux系統(tǒng)宿主開發(fā)環(huán)境,我們選用在windows下安裝VMwareWorkStation虛擬機(jī)+RedHatLinux9.0的組合來組建[2]。 在虛擬機(jī)中安裝Linux系統(tǒng),我們選擇自定義安裝(Custom),安裝過程中先不用指定PC機(jī)上網(wǎng)卡的IP地址,在配置防火墻(Firewall)時,選擇不安裝防火墻(NoFirewall),在選擇軟件Package時選擇完全安裝,即最后一項:Everything,這一項非常重要,這樣安裝會裝上一些無用的東西而浪費一點磁盤空間,但是卻可以避免以后使用中找不到某個程序的煩惱。(2)NFS和TFTP服務(wù)器的配置 這里設(shè)置開發(fā)環(huán)境的網(wǎng)絡(luò)環(huán)境,首先設(shè)置PC機(jī)的IP地址為11,因為HHARM9開發(fā)平臺在燒寫時默認(rèn)的IP為22,所以建議PC機(jī)也在此網(wǎng)段(192.168.2.X),故我們選擇了此IP地址。 然后配置NFS服務(wù)器,它是用于網(wǎng)絡(luò)文檔的共享之用的,可以把網(wǎng)絡(luò)上的某個服務(wù)器的內(nèi)容mount到本PC上,達(dá)到在本機(jī)訪問網(wǎng)絡(luò)服務(wù)器的目的。 最后配置TFTP服務(wù)器,它是用于在網(wǎng)絡(luò)中傳送大型文件時用的,通過它可以方便進(jìn)行文件的傳輸。以上的詳細(xì)配置可以參見參考文獻(xiàn)[2]中“NFS和TFTP服務(wù)器的配置”一節(jié)。開發(fā)板上程序的調(diào)試與這兩個服務(wù)器分不開,需要使用NFS的mount命令來共享宿主機(jī)目錄的,而把宿主機(jī)上的鏡像文件下載到開發(fā)板的內(nèi)存中去則需要使用TFTP服務(wù)器,所以這兩個配置非常重要。(3)minicom的配置 minicom是一個RedHatLinux9.0自帶的通信終端程序,通過minicom可以設(shè)置、監(jiān)視串口工作狀態(tài),接收、顯示串口收到的信息,并且在主機(jī)和開發(fā)板之間傳遞數(shù)據(jù)和控制指令,從而實現(xiàn)通過主機(jī)上調(diào)試開發(fā)板的目的。首先在shell下運行l(wèi)n-sf/dev/ttyS0/dev/modem來設(shè)置使用第一個串口,然后設(shè)置minicom的配置文件/etc/minirc.dfl為prport/dev/ttyS0pubaudrate115200puminitpumresetpurtsctsNo它表示端口為/dev/ttyS0、波特率為115200、數(shù)據(jù)位8位、停止位1位、無奇偶校驗位、無數(shù)據(jù)流控制。2.3.3交叉開發(fā)環(huán)境的建立PCLinux上的編譯器安裝于/usr/bin目錄下,這是在完全安裝RedHatLinux時已經(jīng)安裝好的,但是對于交叉編譯,需要交叉編譯器來生成可以在ARM開發(fā)板上執(zhí)行的二進(jìn)制應(yīng)用程序。 我們安裝的是ARM板的交叉編譯器,可以上網(wǎng)去下載編譯器,也可以使用華恒實驗箱自帶的編譯工具。這里我們使用后者,安裝華恒的光盤后,即可在/opt/host/armv4l/bin目錄下安裝了交叉編譯器[2]。 為了以后使用的方便,我們還可以在可執(zhí)行程序的路徑加入到PATH中去: #vim~/.bashrc 在.bashrc最后面加上一句exportPATH=”$PATH:/opt/host/armv4l/bin”再執(zhí)行#source.bashrc重啟環(huán)境變量。當(dāng)需要使用時就可指出編譯器的位置。2.3.4內(nèi)核的編譯 安裝華恒提供的光盤時,嵌入式Linux內(nèi)核及設(shè)備驅(qū)動源代碼(光盤安裝后建立完備的開發(fā)環(huán)境)被安裝到/HHARM2410/kernel目錄下,交叉編譯的工具如下表2-2所示被放置到/opt/host/armv4l目錄下。表2-2交叉編譯的工具GNU工具集armv4l-unknown-linux-gccarmv4l-unknown-linux-cc1plusarmv4l-unknown-linux-ranlibarmv4l-unknown-linux-asarmv4l-unknown-linux-objcopyarmv4l-unknown-linux-stringsarmv4l-unknown-linux-ldarmv4l-unknown-linux-objdumpmv4l-unknown-linux-gdbarmv4l-unknown-linux-g++armv4l-unknown-linux-stripArmv4l-unknown-linux-gasparmv4l-unknown-linux-cc1armv4l-unknown-linux-nmArmv4l-unknown-linux-sizearmv4l-unknown-linux-cpparmv4l-unknown-linux-arArmv4l-unknown-linux-addr2linecd/HHARM2410-R3/kernelmakezImage編譯完成后,就會自動把zImage復(fù)制到/tftpboot/目錄下以供TFTP下載。如果需要對內(nèi)核進(jìn)行配置和裁剪,可以在/HHARM2410/kernel目錄下鍵入makemenuconfig則出現(xiàn)如下界面,可逐項對內(nèi)核和驅(qū)動模塊進(jìn)行選擇和配置:可見內(nèi)核版本為:LinuxKernelv2.4.18-rmk7-pxa1圖2-13配置內(nèi)核一些關(guān)鍵的設(shè)置:SystemType>(S3C2410-based)ARMsystemtypeS3C2410Implementation[*]SMDK(MERITECHBOARD)[*]changeAIJI<>S3C2410USBfunctionsupportProcessorType[*]ARM920TCPUidle[*]ARM920TI-Cacheon[*]ARM920TD-Cacheon[]ForcewritethroughcachesonARM920T[]SupportThumbinstructions(experimental)完成自己的設(shè)置后,退出,保存配置,然后執(zhí)行makezImage即可編譯生成自己定制的內(nèi)核映像文件,并自動被復(fù)制到/tftpboot/目錄下以供燒寫。2.3.5燒制內(nèi)核映像和文件系統(tǒng) 內(nèi)核映像和文件系統(tǒng)燒寫的大致過程如下:(1)在PC機(jī)啟動minicom,按復(fù)位鍵重啟開發(fā)板,在minicom中應(yīng)該有啟動信息,立即按空格鍵或回車鍵,讓開發(fā)板停留在ppcboot的提示符“SMDK2410#”,進(jìn)行以下燒寫;(2)下載、燒寫內(nèi)核zImage,tftp0x30008000zImage//通過TFTP下載內(nèi)核fl0x400000x300080000xe0000//燒寫剛下載的文件到指定的位置。(3)下載、燒寫文件系統(tǒng)ramdisk.image.gz;tftp0x30800000ramdisk.image.gz//通過TFTP下載ramdisk文件系統(tǒng)fl0x1400000x308000000x240000(4)下載、燒寫cramfs文件系統(tǒng)和JFFS2文件系統(tǒng),tftp0x30008000cramfs.img//通過TFTP下載cramfs文件系統(tǒng)fl0x5400000x300080000x200000tftp0x30008000jffs2.img//通過TFTP下載jffs2文件系統(tǒng)fl0x7000000x300080000x200000 燒完后重新啟動開發(fā)板,便可以從flash里面讀出配置的內(nèi)核以及根文件系統(tǒng)并運行Linux。2.4嵌入式圖形用戶界面的實現(xiàn)2.4.1圖形用戶界面minigui的簡介 自MiniGUI從1998年底推出以來,越來越多的人開始選擇MiniGUI在Linux上開發(fā)實時嵌入式系統(tǒng)。MiniGUI系統(tǒng)也逐漸成熟,應(yīng)用到各種嵌入式系統(tǒng)中,包括PDA、機(jī)頂盒、DVD、MP4播放器等。本文講解基于Linux和MiniGUI的嵌入式系統(tǒng)軟件開發(fā),,其內(nèi)容不僅僅限于MiniGUI的編程,還會涉及到一些Linux下嵌入式系統(tǒng)軟件開發(fā)的技巧,包括交叉編譯環(huán)境的建立,根文件系統(tǒng)的生成等。 MiniGUI是由北京飛漫軟件技術(shù)有限公司擁有版權(quán)并主持和維護(hù)的自由軟件,遵循GPL條款發(fā)布(1.2.6及之前的版本以LGPL條款發(fā)布),其目標(biāo)是為實時嵌入式Linux/Clinux、eCos、C/OS-II、VxWorks等操作系統(tǒng)建立一個快速、穩(wěn)定和輕量級的圖形用戶界面支持系統(tǒng)。與QT/Embeddoed、MicoroWindows等其他GUI相比,MiniGUI最大的特點是占用資源少,在主頻為66M的ARM7內(nèi)核也能夠穩(wěn)定的運行。經(jīng)過幾年的發(fā)展已經(jīng)發(fā)布了很多的版本,現(xiàn)在比較穩(wěn)定的是1.3.x版本,而且源碼是開放的,方便我們大家學(xué)習(xí)的研究。本文就是采用的此版本[14]。2.4.2MiniGUI在S3C2410開發(fā)板上的移植過程(1)交叉編譯MiniGUI首先,從網(wǎng)上下載三個源碼包(/訪問網(wǎng)址超出本站范圍,不能確定是否安全繼續(xù)訪問取消訪問/),同時可以下載到相應(yīng)的用戶手冊[15]。libminigui-1.3.x.tar.gz:MiniGUI函數(shù)庫源代碼,其中包括libminigui、libmgext和libvcongui。minigui-res-1.3.x.tar.gz:MiniGUI所使用的資源,包括基本字體、圖標(biāo)、位圖和鼠標(biāo)光標(biāo)。mde-1.3.x.tar.gz:MiniGUI的綜合演示程序。先安裝MiniGUI的函數(shù)庫,我們先在PC的根目錄下建立一個名為minigui的目錄,將下載的三個源碼包全部復(fù)制到minigui目錄下,再在minigui目錄下建立一個名為miniguitmp的目錄,用來存放生成的文件和minigui庫函數(shù)。解壓libminigui-1.3.x.tar.gz(tarzxflibminigui-1.3.x.tar.gz)生成libminigui-1.3.x.目錄,編寫腳本文件配置lib內(nèi)容如下:./configure—host=arm-unknown-linux—enable=jpgsupport=no--enable-pngsupport=no—enable-gifsupport=no–disable-lite--prefix=/minigui/miniguitmp–enable-smdk2410ial=yes保存為setup.shhost用于指明宿主機(jī)的類型disable-lite用來指定生成基于線程的minigui版本而不是生成基于進(jìn)程的minigui版本prefix用于指定MiniGUI函數(shù)庫的安裝路徑/minigui/miniguitmp,進(jìn)入該目錄運行./configure腳本文件,我們?yōu)榱诉m合我們的開發(fā)板做了適當(dāng)?shù)男薷?,其他的開發(fā)板類似。根據(jù)PC機(jī)的交叉編譯環(huán)境安裝的路徑修改libminigui-1.6.x.目錄下的configure文件,在文件的開頭處加入編譯器的安裝路徑,然后保存,筆者主機(jī)上交叉編譯器安裝路徑是/usr/local/arm/,所以修改如下:CC=/usr/local/arm/3.3.2/bin/arm-linux-gccCPP=/usr/local/arm/3.3.2/bin/cppLD=/usr/local/arm/3.3.2/bin/arm-linux-ldAR=/usr/local/arm/3.3.2/bin/arm-linux-arRANLIB=/usr/local/arm/3.3.2/bin/arm-linux-ranlibSTRIP=/usr/local/arm/3.3.2/bin/arm-linux-strip然后運行腳本文件./setup.shmakemakeinstall如果運行成功,就會生成定制的MakeFile文件,執(zhí)行make和makeinstall后相應(yīng)的函數(shù)庫就安裝到/minigui/miniguitmp/lib下,在執(zhí)行makeinstall命令是用戶一定要具有root權(quán)限。下面安裝MiniGUI資源,這些資源包括基本字體、圖標(biāo)、位圖和鼠標(biāo)光標(biāo)等等。解壓minigui-res-1.3.xtar.gz(arzxfminigui-res-1.3.xtar.gz),進(jìn)入生成目錄,修改configure.linux文件,指明TOPDIR=/minigui1.3.3/miniguitmp執(zhí)行makeinstall就可以把相關(guān)文件拷貝到/minigui/miniguitmp/目錄下的相關(guān)目錄中去。執(zhí)行后會在/minigui/miniguitmp/下生成usr/local/lib/minigui/res相關(guān)目錄,以下為res目錄下的子目錄,用戶有興趣可以進(jìn)入以下目錄查看其中的內(nèi)容。bmpcursorfonticonimetab(2)制作帶有MiniGUI的文件系統(tǒng)映象(root_minigui.cramfs)CRAMFS是LinusTorvalds撰寫的只具備基本特性的文件系統(tǒng)。CRAMFS是一個簡單的,經(jīng)壓縮以及只讀的文件系統(tǒng),通常要為文件系統(tǒng)建立映象,首先要建立并安裝CRAMFS工具,在這里我們使用mkcramfs工具建立自己的文件系統(tǒng)映象。開發(fā)板上的linux,自帶有VESAFrameBuffer設(shè)備驅(qū)動程序,并且初始狀態(tài)已經(jīng)激活,這樣MiniGUI就可以使用FrameBuffer作為圖象引擎來顯示圖象。將/minigui/miniguitmp/lib中所有的庫文件復(fù)制到root_minigui的/usr/lib中,將/minigui/miniguitmp/usr/local/lib/minigui目錄復(fù)制到root_minigui的/usr/lib目錄中,在/root_dir/root_minigui/usr/local下執(zhí)行l(wèi)n–s/usr/liblib,生成一個鏈接文件。修改/minigui/miniguitmp/etc/MiniGUI.cfg文件,找到ial_engine=consolemdev=/dev/mouse改為ial_engine=SMDK2410mdev=/dev/ts然后保存退出。ghjghj[root@localhostroot_dir]#mkcramfsroot_miniguiroot_minigui.cramfs就可以生成root_minigui.cramfs文件系統(tǒng)映象,把root_minigui.cramfs復(fù)制到PC機(jī)的/tftproot下,通過tftp命令把文件系統(tǒng)下載到2410開發(fā)板上。
重啟開發(fā)板后執(zhí)行:#cp/usr/local/bin/*/tmp
//將可執(zhí)行hhgjghgfjfgjdfhghdgfhdgfhdfghgfhtr文件復(fù)制到/tmp臨時目錄下#cd/tmp
//用cd命令去到/tmp目錄下經(jīng)過以上工作,用戶就可以在/tmp目錄下執(zhí)行自己的應(yīng)用程序了。例如:執(zhí)行#chmod777helloworld
//改變權(quán)限,使其為可執(zhí)行#./helloworld
//執(zhí)行helloworld這樣就成功的將帶有minigui界面的文件系統(tǒng)成功的移植到了我們的開發(fā)板上了。
第三章Mplayer的移植3.1Mplayer的簡介 MPlayer是Linux上的電影播放器(也能跑在許多其它平臺上,甚至非x86CPU上)。它能使用眾多的本地的,XAnim,RealPlayer,和Win32DLL編解碼器,播放大多數(shù)MPEG,VOB,AVI,OGG,VIVO,ASF/WMV,QT/MOV,F(xiàn)LI,RM,Nuppe1Video,yuv4mpeg,F(xiàn)ILM,RoQ文件。你還能觀看VideoCD,SVCD,DVD,3ivx,Rea1Media,和DivX格式的電影。Mplayer的另一個大的特色是廣泛的輸出設(shè)備支持。它可以在X11,Xv,DGA,OpenGL,SVGAlib,fbdev,AAlib,DirectFB上工作,而且也能使用GGI和SDL(由此可以使用他們支持的各種驅(qū)動模式)和一些低級的硬件相關(guān)的驅(qū)動模式(比如Matrox,3Dfx和Radeon,Mach64,Permedia3)!他們大多數(shù)支持軟件或者硬件縮放,因此你能在全屏下觀賞電影。MPlayer還支持通過硬件MPEG解碼卡顯示。可以使用European/IS08859-1,2(匈牙利語,英語,捷克語等等),西里爾語,韓語的字體的清晰放大并且反鋸齒的字幕(支持10種格式)。該播放器能夠穩(wěn)如泰山的播放被破壞的MPEG文件(對一些VCD有用),而它能播放著名的windowsmediaplayer都打不開的壞AVI文件。甚至,沒有索引部分的AVI文件可播放,你能暫時由重建他們的索引-idx選擇,或者用MEncoder永久重建,使你能夠在影片中搜索!如你所見,穩(wěn)定和質(zhì)量是最重要的事情,而且他的速度是也驚人的。由此,能夠?qū)p1ayer移植到嵌入式系統(tǒng)中將極大豐富嵌入式設(shè)備的多媒體性能。[1]3.2Mplayer的移植3.2.1安裝交叉編譯工具及解壓源代碼 首先下載交叉編譯工具及Mplayer源代碼(其實華恒提供的實驗資料的application里面就有Mplayer-0.91的源代碼),其實可以選擇到Mplayer的官方網(wǎng)站去下載最新的Mplayer的開源代碼,另一種就是選用華恒提供的Mplayer-0.91的源代碼。我選擇后一種方案。交叉編譯工具選擇arm-linux-gcc-3.3.2.tar.bz2,這個有70多M,將arm-linux-gcc安裝到/usr/local/arm/3.3.2/bin下,確保有root權(quán)限,假設(shè)arm-linux-gcc工具包放在~/src目錄下,執(zhí)行以下的操作。當(dāng)然也可以將arm-linux-gcc安裝到其它地方。cd/tarjxvf~/src/arm-linux-gcc-3.3.2.tar.bz2修改$PATH變量包含arm-linux-gcc,木文是修改當(dāng)前用戶home目錄下的.bash_profile文件。在.bash_profile文件中增加一行:$PATH=/usr/loeal/arm/3.3.2/bin:$PATH這樣交叉編譯工具便可以使用了。3.2.2編譯Mplayer 首先是對Mplayer進(jìn)行配置,Mplayer提供了很多配置選項,執(zhí)行以下命令可以查看: ./configure–help 本文在編譯時的配置命令如下: ./configure--cc=/usr/local/arm/3.3.2/bin/arm-linux-gcc --target=arm-linux--enable-static--disable-win32--disable-dvdread--enable-fbdev--disable-mencoder--disable-live--enable-mad--enable-libavcodec--disable-tv
--with-extralibdir=/usr/local/arm/3.3.2/lib/lib--with-extraincdir=/usr/local/arm/3.3.2/lib/include--disable-sdl
--disable-gui--disable-mpdvdkit--enable-linux-devfs--cc=/usr/local/arm/3.3.2/bin/arm-linux-gcc這個是用來指定交叉編譯器。--target=arm-linux這個參數(shù)要注意的是一個分兩部分,第一部分的arm是指arch,這里設(shè)定為arm;第二部分的linux是指系統(tǒng)平臺。--enable-static是用來設(shè)定靜態(tài)鏈接,不需要動態(tài)。--enable-fbdev是支持Framebuffer顯示,因嵌入式系統(tǒng)中不具備PC機(jī)那樣的顯卡系統(tǒng),本開發(fā)系統(tǒng)采用的是Framebuffer驅(qū)動來實現(xiàn)圖像的播放,如果不加此項,編譯生成的可執(zhí)行文件在開發(fā)板上不能夠顯示圖像。其他選項可以根據(jù)個人喜好選用。 接下來開始跨平臺編譯,執(zhí)行: make 在編譯過程中會出現(xiàn)幾個錯誤,缺少頭文件和解碼庫的問題,首先第一個是在libmpcodecs和libavcodec這兩個目錄下,有一個疏漏,就是這兩個目錄的源文件都以#ineude“config.h”的方式引用頭文件“config.h”,但是在這兩個目錄下并不存在該頭文件“config.h”,這些源文件實際是期望引用mplayer安裝包根目錄下的“config.h”頭文件,因此我們需要在libmpcodecs、libavcodec這兩個目錄下手動建立一個名為config.h的鏈接并指向mplayer安裝包根目錄下的“config.h”頭文件,建立方法如下:$>cd1ibmpeodees$>ln–s../config.hconfig.h$>cd../$>cd1ibaveodec$)ln–s../config.hconfig.h 第二個比較重大的錯誤是找不到mad.h的錯誤,后來上網(wǎng)查找資料,解決問題,下面就是針對這個問題的解決方案: (1)交叉編譯libmad 下載libmad包(libmad-0.15.1b.tar.gz); 打開一個終端,進(jìn)入libmad的目錄,輸入配置命令: ./configure--enable-fpm=arm--host=arm-linux--disable-shared(這個選項就是說明要靜態(tài)編譯)--disable-debugging--prefix=/usr/local/arm/3.3.2/libCC=/usr/local/arm/3.3.2/bin/arm-linux-gcc
make
makeinstall這樣/usr/local/arm/3.3.2/lib目錄下多了include和lib目錄,這些就是libmad相關(guān)的庫。 (2)在configuremplayer的時候,要加上以下幾個選項:--enable-mad--with-extraincdir=/usr/local/arm/3.3.2/lib/include(這個指明mad.h這個文件所在的路徑)--with-extralibdir=/usr/local/arm/3.3.2/lib/lib(這個指明libmad相關(guān)鏈接庫所在的路徑)通過以上兩個步驟,就可以把libmad交叉編譯到mplayer中去了。 解決了這兩個問題之后,幾乎就沒有什么大問題了,編譯順利通過,得到mplayer的可執(zhí)行文件,有3M左右大小。3.3調(diào)試 利用配置好的NFS對編譯通過的可執(zhí)行文件進(jìn)行調(diào)試,將整個PC機(jī)mount到開發(fā)板,利用可執(zhí)行文件mplayer播放影音文件,如下: ./mplayer1.avi屏幕沒反應(yīng),液晶屏也沒有顯示,后來上網(wǎng)查找原因,了解到是聲音驅(qū)動的問題,后來執(zhí)行: ./mplayer-nosound1.avi液晶屏幕出現(xiàn)畫面,播放很流暢,只是沒有聲音。 通過網(wǎng)上查找資料,以上那個問題產(chǎn)生的根源追溯到音頻的驅(qū)動部分。華恒的這塊HHARM-EDU-R3板子使用的是飛利浦音頻解碼芯片UDA1380,這個驅(qū)動基本符合了OSS的規(guī)范,但是當(dāng)使用到多段DMA音頻數(shù)據(jù)傳輸時,出現(xiàn)了一個問題,即DMA緩沖的建立發(fā)生在第一次調(diào)用write()函數(shù)將音頻數(shù)據(jù)傳送到設(shè)備描述符的時候,然而OSS驅(qū)動的調(diào)用者通常要在打開音頻設(shè)備描述時候,就期望獲取DMA緩沖的信息,然而因為緩沖尚未建立,因而返回緩沖大小為0這個結(jié)果。 解決的辦法是在音頻驅(qū)動源碼smdk2410_audio_open()函數(shù)體,加上如下一段代碼: if
(!output_stream
.buffers
&&
audio_setup_buf(&output_stream))
return
-ENOMEM; 具體位置如下:
if
(cold)
{
audio_rate
=
AUDIO_RATE_DEFAULT;
audio_channels
=
AUDIO_CHANNELS_DEFAULT;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)學(xué)-福建省龍巖市2025年高中畢業(yè)班三月教學(xué)質(zhì)量檢測(龍巖一檢)試題和答案
- 閥門拆除施工方案
- 石方靜態(tài)爆破施工方案
- 《千米的認(rèn)識》(教學(xué)設(shè)計)-2024-2025學(xué)年三年級上冊數(shù)學(xué)人教版
- 2025年中考物理模擬試卷猜題卷1(含答案)
- 醫(yī)院科室安裝監(jiān)控合同范例
- 合作租房合同范例
- 質(zhì)量控制標(biāo)準(zhǔn)提升計劃
- 人事部如何構(gòu)建企業(yè)形象計劃
- 幼兒園作業(yè)與學(xué)習(xí)反饋計劃
- 2021中國靜脈血栓栓塞癥防治抗凝藥物的選用與藥學(xué)監(jiān)護(hù)指南(2021版)解讀
- 人教數(shù)學(xué)二年級下冊-萬以內(nèi)數(shù)的認(rèn)識練習(xí)題
- 拇指骨折護(hù)理查房
- 職業(yè)院校技能大賽(健身指導(dǎo)賽項)備考試題庫(含答案)
- 牙周檢查記錄表
- GB/T 10060-2023電梯安裝驗收規(guī)范
- 高一生物實驗室教學(xué)計劃安排表
- 初中信息技術(shù)-初識Python教學(xué)課件設(shè)計
- 第三單元名著導(dǎo)讀《駱駝祥子》課件部編版語文七年級下冊
- 電路分析基礎(chǔ)(第5版)PPT完整全套教學(xué)課件
- Unit 1 My day B Lets talk(說課稿)人教PEP版英語五年級下冊
評論
0/150
提交評論