版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 畢 業(yè) 設(shè) 計</p><p> 題 目: Linux環(huán)境下編譯ARM上運行的Mplayer </p><p> 系: 電氣信息學院 </p><p> 專業(yè): 電子科學與技術(shù) 班級: 0801
2、 學號: </p><p> 學生姓名: </p><p> 導師姓名: </p><p> 完成日期:
3、2012年6月13日 </p><p> 畢業(yè)設(shè)計(論文)任務(wù)書</p><p> 題目: linux環(huán)境下編譯ARM上運行的Mplayer
4、 </p><p><b> 基本任務(wù)及要求:</b></p><p> a顯示歌詞信息 </p><p> b.顯示歌曲列表,當前播放歌曲需反顯
5、 </p><p> c顯示同步歌詞 </p><p> d顯示當前播放進度
6、 </p><p> e實現(xiàn)mp3文件的播放/暫停、上一首、下一首、快進、快退(觸摸屏、物理按鍵都要實現(xiàn))等控件 </p><p> 進度安排及完成時間:
7、 </p><p> ?。?1)2月16日 至 2月30 日:查閱資料;撰寫文獻綜述和開題報告;確定總體方案。 </p><p> ?。?2)3月01日 至 3月14日:畢業(yè)實習、撰寫實習報告。
8、 (03)3月15日 至 5月15日:畢業(yè)設(shè)計 </p><p> ?。?4)4月05日 至 4月12日: 設(shè)備使用,軟件學習,
9、 </p><p> (05)4月12日 至 5月12日 總體方案設(shè)計 </p><p> ?。?6)5月13日 至 5月20日 各部分邏輯設(shè)計,系統(tǒng)集成,系統(tǒng)仿真,調(diào)試。 </p><p> ?。?
10、7)5月21日 至 5月29日 設(shè)計移植,程序運行。 </p><p> (08)5月15日 至 6 月01日:撰寫畢業(yè)設(shè)計論文 </p><p> ?。?9)6月01日 至 6
11、 月04日:指導老師評閱、電子文檔上傳FTP。 </p><p> (10)6月05日 至 6 月 14日:畢業(yè)設(shè)計答辯。 </p><p> ?。?1)6月21日 至 6 月 30日:畢業(yè)設(shè)計資料歸檔日至
12、 </p><p> ?。?2)6月21日:畢業(yè)設(shè)計成績評定 </p><p> Linux環(huán)境下編譯ARM上運行的Mplayer</p><p><b> 摘 要</b></p
13、><p> 在當今社會,人們的生活水平逐漸提高,伴隨著對享受娛樂的要求也越來越高。各式各樣電子產(chǎn)品突飛猛進的發(fā)展,基于Linux的嵌入式產(chǎn)品也逐漸豐富起來,原來的模擬產(chǎn)品逐步向數(shù)字化、綜合化轉(zhuǎn)化,并且不斷走向人性化。</p><p> 本次設(shè)計的主題就是設(shè)計一款強大的多媒體播放器,他不同與市面上流行MP3,MP4局限于文件格式。</p><p> 本設(shè)計使用的是l
14、inux系統(tǒng)內(nèi)核,屬于嵌入式設(shè)備,其核心播放程序為mplayer可執(zhí)行程序,解碼庫為libmad。整個系統(tǒng)的硬件部分:以S3C2440開發(fā)板作為測試儀主體,TFT-LCD觸屏和2x3鍵盤做為控制器,外掛揚聲器作為音頻播放器。軟件部分比較復雜,在為開發(fā)板搭建好環(huán)境后,按照特定選項配置編譯MPLAYER,生成mplayer可執(zhí)行程序,編寫主程序,編寫觸屏驅(qū)動,編寫播放器各種功能的觸發(fā)函數(shù),制作操作界面等等。最后達到了觸屏操作這個多媒體播放器
15、,并實現(xiàn)各種功能。經(jīng)過測試,本系統(tǒng)達到了設(shè)計要求。</p><p> 關(guān)鍵字:嵌入式,S3C2440 ,Mplayer ,Linux</p><p> Compile the Mplayer running on the ARM in the linux environment</p><p><b> Abstract</b></
16、p><p> In today's society, people's living standards gradually increase along with higher and higher demands on the enjoyment of entertainment. The rapid development of a wide range of electronic produ
17、cts, Linux-based embedded products is gradually enriched the original analog products gradually to digital, integrated into, and move towards a humane.</p><p> The theme of this design is to design a powerf
18、ul multimedia player, his different market popular MP3, MP4 and limited file format.</p><p> This design uses the linux kernel belongs to the embedded device, the core player for the mplayer executable deco
19、ding library libmad. The hardware part of the whole system: S3C2440 development board as the main body of the tester of TFT-LCD touch screen and 2x3 keyboard as a controller, plug-in speaker as an audio player. Some of t
20、he more complex software to build a good environment for the development board, in accordance with the specific options to configure the compiler MPLAYER generate mpla</p><p> Keywords: Embedded, the S3C244
21、0, Mplayer, Linux</p><p><b> 目錄</b></p><p><b> 摘 要I</b></p><p> AbstractII</p><p><b> 目錄1</b></p><p><b>
22、 第一章 緒論1</b></p><p><b> 1.1選題背景1</b></p><p> 1.2 研究意義2</p><p><b> 1.3總體思路3</b></p><p> 1.4主要解決的問題4</p><p> 第二章硬件介紹
23、5</p><p> 2.1 ARM處理器5</p><p> 2.1.1、ARM微處理器特點5</p><p> 2.1.2、ARM體系結(jié)構(gòu)特點5</p><p> 2.1.3、Thumb的技術(shù)概述6</p><p> 2.2 TFT-LCD觸摸屏6</p><p>
24、 2.2.1、TFT-LCD模塊介紹6</p><p> 2.2.2、TFT-LCD模塊原理7</p><p> 2.3 2×3鍵盤簡介11</p><p> 第三章 軟件介紹12</p><p> 3.1 開發(fā)板的環(huán)境搭建12</p><p> 3.2 Linux環(huán)境搭建12&
25、lt;/p><p> 3.2.1、虛擬機的安裝12</p><p> 3.2.2、VMware Tools安裝及設(shè)置12</p><p> 3.2.3、Smb與nfs服務(wù)器的配置12</p><p> 3.2.4安裝交叉編譯器13</p><p> 第四章 程序設(shè)計14</p><
26、p> 4.1 設(shè)計要求14</p><p> 4.2 設(shè)計總體結(jié)構(gòu)15</p><p> 4.2.1、對各層的簡單描述15</p><p> 4.2.2、項目子模塊設(shè)計思路分述16</p><p> 4.3 設(shè)計步驟17</p><p> 第五章 軟硬件測試20</p>
27、<p> 5.1 開發(fā)板性能測試20</p><p> 5.2 虛擬機可靠性測試20</p><p> 第六章 程序編寫及測試21</p><p> 6.1 模塊程序簡介21</p><p> 6.1.1、窗口創(chuàng)建21</p><p> 6.1.2、歌曲列表獲取22<
28、/p><p> 6.1.3、歌曲信息的獲取23</p><p> 6.1.4、2×3鍵盤的控制24</p><p> 6.1.5、觸摸屏控制26</p><p> 6.1.6、創(chuàng)建管道26</p><p> 6.2總體模塊設(shè)計27</p><p> 6.3 程序調(diào)
29、試步驟及問題28</p><p> 6.4 實體軟件效果30</p><p><b> 參考文獻31</b></p><p><b> 致 謝32</b></p><p><b> 附 錄33</b></p><p> 主函數(shù)《
30、main.c》33</p><p> 歌曲信息《song_message.c》42</p><p> 歌詞解析及顯示《lrc_display.c》46</p><p><b> 第一章 緒論</b></p><p><b> 1.1選題背景</b></p><p&
31、gt; 多媒體是計算機和視頻技術(shù)的結(jié)合,實際上它是兩個媒體;聲音和圖像,或者用現(xiàn)在的術(shù)語:音響和電視。多媒體本身有兩個方面,和所有現(xiàn)代技術(shù)一樣它是由硬件和軟件,或機器和思想混合組成??梢詫⒍嗝襟w技術(shù)和功能在概念上區(qū)分為控制系統(tǒng)和信息。多媒體之所以能夠?qū)崿F(xiàn)是依靠數(shù)字技術(shù)。多媒體代表數(shù)字控制和數(shù)字媒體的匯合,電腦是數(shù)字控制系統(tǒng),而數(shù)字媒體是當今音頻和視頻最先進的存儲和傳播形式。事實上有人就簡單地認為多媒體是電腦和電視的結(jié)合。電腦的能力達到
32、實時處理電視和聲音數(shù)據(jù)流的水平,這時多媒體就誕生了。多媒體電腦需要具有比主流電腦更強的能力,多媒體電腦決定了主流電腦的發(fā)展。</p><p> 一個嵌入式系統(tǒng)裝置一般都由嵌入式計算機系統(tǒng)和執(zhí)行裝置組成,嵌入式計算機系統(tǒng)是整個嵌入式系統(tǒng)的核心,由硬件層、中間層、系統(tǒng)軟件層和應(yīng)用軟件層組成。執(zhí)行裝置也稱為被控對象,它可以接受嵌入式計算機系統(tǒng)發(fā)出的控制命令,執(zhí)行所規(guī)定的操作或任務(wù)。執(zhí)行裝置可以很簡單,如手機上的一個微
33、小型的電機,當手機處于震動接收狀態(tài)時打開;也可以很復雜,如SONY 智能機器狗,上面集成了多個微小型控制電機和多種傳感器,從而可以執(zhí)行各種復雜的動作和感受各種狀態(tài)信息。 </p><p> 今采用Linux已經(jīng)基本可以做到辦公、娛樂、生活等一系列活動了,雖然很多地方還不完善,但是基本的Office軟件、播放器、游戲等等都應(yīng)有盡有,在Linux OA辦公軟件專題測試中,就呈現(xiàn)出了很多不錯的產(chǎn)品。圖形化桌面的意義就
34、在于能夠利用豐富多彩的窗口,帶給用戶親近的感覺,讓人們不再感到陌生,人性化的設(shè)計會觸發(fā)人們嘗試Linux的熱情,從而讓更多的人了解Linux。Xwindows就是Linux中開放的窗口,無論其設(shè)計如何,畢竟這個“窗口”界面給人帶來不少實用、易用。隨著WindowsXP的發(fā)布,Linux廠商們也不甘示弱,紛紛推出了自己的“桌面”產(chǎn)品。這些版本具有較強的所媒體核心,對于音頻、視頻支持都有了不小的提高,更捆綁豐富的應(yīng)用程序。</p>
35、;<p> 件移植這個概念在我國還不怎么流行,這是因為Windows系統(tǒng)壟斷了中國個人操作系統(tǒng)市場,絕大部分軟件都是建立在windows的基礎(chǔ)上。跳出這個桎梏,放眼全球,優(yōu)秀的操作系統(tǒng)有很多,可能一款操作系統(tǒng)在特定領(lǐng)域比windows更適合我們,但是,那些優(yōu)秀的軟件卻因為操作系統(tǒng)的不同而與我們失之交臂,這就凸顯出移植的必要性。由此可以看出,軟件移植的領(lǐng)域是絕對廣闊的。</p><p> 日常生活
36、中,多媒體已經(jīng)成為必不可少的一部分了,但一款優(yōu)秀的播放器卻經(jīng)常因為操作環(huán)境,源碼不開放等問題而不能被人們廣泛認識,使用,這是我們的損失。所以,多媒體播放器的跨平臺移植擁有非常好的市場前景。</p><p><b> 1.2 研究意義</b></p><p> Linux下的音頻、視頻播放軟件隨著Linux的性能提升,出現(xiàn)的越來越多了,現(xiàn)在在Linux里想要聽點音樂
37、、Mp3或者看上幾部大片,無論是VCD、DVD,都已經(jīng)是易如反掌的事了,一款款五花八門的播放器軟件隨你挑選,有的作風精簡、有的功能強大,多數(shù)都支持所有的常見的媒體格式,與Windows下的播放器幾乎無異。</p><p> Linux屬于開源系列,其軟件都是免費,在現(xiàn)今一切向錢看的環(huán)境下,真正的免費軟件必定會吸引大量的人群。開源的特性也決定了它使用的人越多,程序進步越快的特點。我們可以預見在不久的將來,linu
38、x一定會大行其道,linux的強大的兼容性,可移植性也將發(fā)揮的淋漓盡致。</p><p> 含有嵌入式操作系統(tǒng)的設(shè)備稱為嵌入系統(tǒng),這在生活中隨處可見,手機,電子表,多媒體播放器等,涵蓋了生產(chǎn),工業(yè)控制,通信,網(wǎng)絡(luò),消費電子,汽車電子,軍工電子等領(lǐng)域。隨著技術(shù)的進步,嵌入設(shè)備的性能越來越高,用途越來越廣。操作系統(tǒng)的意義在于實現(xiàn)軟件的運行,從而驅(qū)動硬件工作。但大部分的軟件都有對操作系統(tǒng)的要求。</p>
39、<p> 這就要實行軟件的移植,使其在需要的操作系統(tǒng)下也能正常工作。這樣的話,能讓一款優(yōu)秀的軟件不止局限在一個狹小的領(lǐng)域,從而改善我們的生活,推動科技的發(fā)展、進步。</p><p><b> 1.3總體思路</b></p><p> 本系統(tǒng)分為兩大部分,軟件部分,硬件部分。其中軟件部分包含經(jīng)過ARM編譯的Mplayer可執(zhí)行程序,觸屏操作的源代碼,以
40、及l(fā)inux操作系統(tǒng),Bootloader,內(nèi)核,根文件,arm-linux-gcc交叉編譯工具鏈,libmad解碼庫,Windows自帶的超級終端Qt Creater圖形界面設(shè)計軟件以及在Windows下的連接工具,燒錄工具軟件等。</p><p> 件部分包括S3C2440開發(fā)板,LCD觸摸屏,2x3鍵盤,串口線,并口線,5V變壓器,帶串并口的PC機。</p><p> 中boot
41、loader,內(nèi)核,根文件系統(tǒng)燒錄到開發(fā)板上S3C2440為載體,用LCD觸屏控制,整個過程在PC機上完成,需要在Linux環(huán)境下修改環(huán)境變量,添加交叉編譯工具鏈將生成的程序放到開發(fā)板上試驗,運行。</p><p> 圖1-1 設(shè)計整體方框圖</p><p> 1.4主要解決的問題</p><p> 歌曲的自動循環(huán)播放,手動播放</p><
42、;p> 歌曲信息的無亂碼處理</p><p><b> 歌詞的高亮顯示</b></p><p> 歌曲歌詞不同步同步的處理</p><p> 觸屏快進快退不穩(wěn)定的處理</p><p> 編寫代碼時對內(nèi)存的處理</p><p> ARM板的搭建、掛載及驅(qū)動安裝處理</p>
43、;<p><b> 程序移植后的健壯性</b></p><p><b> 硬件介紹</b></p><p> 2.1 ARM處理器</p><p> 2.1.1、ARM微處理器特點</p><p> a.小體積、低功耗、低成本、高性能</p><p>
44、; b.支持Thumb(16 位)/ARM(32 位)雙指令集,能很好的兼容8 位/16 位器件</p><p> c.大量使用寄存器,指令執(zhí)行速度更快</p><p> d.大多數(shù)數(shù)據(jù)操作都在寄存器中完成</p><p> e.尋址方式靈活簡單,執(zhí)行效率高</p><p><b> f.指令長度固定</b>&
45、lt;/p><p> ARM9采用哈佛(Harvard)結(jié)構(gòu),程序存儲器與數(shù)據(jù)存儲器分開,提供了較大的存儲器帶寬。同時,大多數(shù)DSP都采用此結(jié)構(gòu)</p><p> 圖2-1 哈佛體系結(jié)構(gòu)模型</p><p> 2.1.2、ARM體系結(jié)構(gòu)特點</p><p> ARM采用RISC結(jié)構(gòu),在簡化處理器結(jié)構(gòu),減少復雜功能指令的同時,提高了處理器的
46、速度</p><p> 考慮到處理器與存儲器打交道的指令執(zhí)行時間遠遠大于在寄存器內(nèi)操作的指令執(zhí)行時間,RISC型處理器采用了Load/Store(加載/存儲)結(jié)構(gòu),即只有Load/Store指令可與存儲器打交道,其余指令都不允許進行存儲器操作</p><p> 2.1.3、Thumb的技術(shù)概述</p><p> 雖然ARM處理器本身是32位設(shè)計,但考慮到RIS
47、C型處理器的指令功能相對較弱,新型的ARM體系結(jié)構(gòu)中定義了16位的Thumb指令集,它有從標準32位ARM指令集抽出來的36條指令格式。</p><p> Thumb指令集比通常的8/16位CISC/RISC處理器有更好的代碼密度,而芯片面積只增加6%,卻可以使程序存儲器更小。</p><p> ARM7TDMI是第一個支持Thumb的核,支持Thumb的核僅僅是ARM體系結(jié)構(gòu)的一種發(fā)
48、展的擴展,所以編譯器既可以編譯Thumb代碼,又可以編譯ARM代碼。</p><p> 支持Thumb的ARM體系結(jié)構(gòu)的處理器狀態(tài)可以方便的切換、運行到Thumb狀態(tài),在該狀態(tài)下指令集是16位的Thumb指令集 。</p><p> 與ARM指令集相比.Thumb指令集具有以下局限。</p><p> 完成相同的操作,Thumb指令通常需要更多的指令,因此在對
49、系統(tǒng)運行時間要求苛刻的應(yīng)用場合ARM指令集更為適合</p><p> Thumb指令集沒有包含進行異常處理時需要的一些指令,因此在異常中斷時,還是需要使用ARM指令,這種限制決定了Thumb指令需要和ARM指令配合使用。</p><p> 2.2 TFT-LCD觸摸屏</p><p> 2.2.1、TFT-LCD模塊介紹</p><p&g
50、t; 電阻式觸摸屏基本上是薄膜加上玻璃的結(jié)構(gòu),薄膜和玻璃相鄰的一面上均涂有ITO(Indium Tin Oxides,納米銦錫金屬氧化物)涂層,ITO具有很好的導電性和透明性。當觸摸操作時,薄膜下層的ITO會接觸到玻璃上層的ITO,經(jīng)由感應(yīng)器傳出相應(yīng)的電信號,經(jīng)過轉(zhuǎn)換電路送到處理器,通過運算轉(zhuǎn)化為屏幕上的X、Y值,而完成點選的動作,并呈現(xiàn)在屏幕上。此次設(shè)計用的是四線觸摸屏。四線觸摸屏包含兩個阻性層。其中一層在屏幕的左右邊緣各有一條垂直
51、總線,另一層在屏幕的底部和頂部各有一條水平總線,見圖三。為了在X軸方向進行測量,將左側(cè)總線偏置為0V,右側(cè)總線偏置為VREF。將頂部或底部總線連接到ADC,當頂層和底層相接觸時即可作一次測量。 </p><p> 觸摸屏結(jié)構(gòu)主要由6部分構(gòu)成:</p><p><b> 信號輸入通道</b></p><p><b> 8轉(zhuǎn)1切換開
52、關(guān)</b></p><p><b> A/D轉(zhuǎn)換器</b></p><p><b> 控制邏輯</b></p><p><b> 中斷信號發(fā)生器</b></p><p><b> 觸摸屏接口</b></p><p&g
53、t; 圖2-2-1 四線電容式觸屏原理圖</p><p> 2.2.2、TFT-LCD模塊原理</p><p> A/D轉(zhuǎn)換器是模擬信號和CPU之間聯(lián)系的接口,它將連續(xù)變化的模擬信號轉(zhuǎn)換為數(shù)字信號,以供計算機或數(shù)字系統(tǒng)進行分析、處理、存儲、控制和顯示。在工業(yè)控制和數(shù)據(jù)采集及許多其他領(lǐng)域中,A/D轉(zhuǎn)換都是不可缺少的。</p><p> 按照轉(zhuǎn)換速度、精度、
54、功能等因素,常用的A/D轉(zhuǎn)換器分為兩種:</p><p> 雙積分型、逐次逼進型</p><p> S3C2440的A/D轉(zhuǎn)換器包含一個8通道的模擬輸入轉(zhuǎn)換器,可以將模擬輸入信號轉(zhuǎn)換成10位數(shù)字編碼:</p><p> 在A/D轉(zhuǎn)換時鐘頻率2.5MHz時,其最大轉(zhuǎn)換率為500KSPS。</p><p> 輸入電壓范圍為0~3.3V。&
55、lt;/p><p> AD轉(zhuǎn)換接口中的AIN[7]通道和AIN[5]通道為觸摸屏的模擬信號輸入口。</p><p> 圖2-2-2 A/D轉(zhuǎn)換器結(jié)構(gòu)圖</p><p> 啟動AD的兩種方式:</p><p><b> 讀取即轉(zhuǎn)換:</b></p><p> 將ADCCON中的READ_S
56、TART設(shè)置為1, 即每次讀取ADCDAT0中的數(shù)都會觸發(fā)下一次AD轉(zhuǎn)換。</p><p><b> 置位啟動:</b></p><p> 將ADCCON中的ENABLE_STAERT設(shè)置為1,即啟動AD轉(zhuǎn)換;AD轉(zhuǎn)換開始后改位自動清零。</p><p> 兩者在使用上基本沒什么太大區(qū)別,任意選中一種即可</p><
57、p> X,Y軸的AD值算法</p><p> 在觸摸點X、Y坐標的測量過程中,測量電壓與測量點的等效電路圖。</p><p> 采用多次采樣取平均值算法,即首先從觸摸屏的四個頂角得到兩個最大值和兩個最小值,分別標識為Xmax、Ymax和Xmin、Ymin。</p><p> 圖2-2-3 X,Y的AD值線性變化圖</p><p&g
58、t; 確定X、Y方向后坐標值的計算可通過以下方式求得:</p><p> Xa、Ya:為多次測量的平均電壓值</p><p><b> X、Y為坐標值</b></p><p> 由X/320=(Xmax-Xa)/(Xmax-Xmin)</p><p> 得(X = ((Xmax-Xa)×320)/(X
59、max-Xmin)) </p><p> Xa = [X1+ X2+ ...+ Xn]/n</p><p> 由Y/240=(Ya-Ymin)/(Ymax-Ymin)</p><p> 得(Y = ((Ya-Ymin)×240)/(Ymax-Ymin)) </p><p> Ya = [Y1+ Y2+ …
60、+ Yn]/n</p><p><b> 測量X坐標:</b></p><p> 從XP輸出電壓給X+端,從XM輸出地電位給X-端,從YP腳輸入按壓點電壓??刂菩盘枺?YMON=0; nYPON=1;XMON=1;nXPON=0;</p><p><b> 觸摸屏接口信號:</b></p><p
61、> XP=上拉 XM=接地 YP=AIN[5] YM=高阻</p><p><b> 測量Y坐標:</b></p><p> 從YP輸出電壓給Y+端,從YM輸出地電位給Y-端,從XP腳輸入按壓點電壓??刂菩盘枺?YMON=1; nYPON=0;XMON=0;nXPON=1;</p><p><b>
62、 觸摸屏接口信號:</b></p><p> YP=上拉YM=接地XP=AIN[7]XM=高阻</p><p> 從YP做為輸入,從YM輸出地電位給Y-端,從XP腳輸入采樣按壓中斷??刂菩盘枺?YMON=1; nYPON=1;XMON=0;nXPON=1;</p><p><b> 觸摸屏接口信號:</b>&
63、lt;/p><p> YP=AIN[5]YM=接地XP=AIN[7](上拉)XM=高阻</p><p> 2.3 2×3鍵盤簡介</p><p> 圖1-3-1 2×3鍵盤原理圖</p><p> 2×3鍵盤,采用查詢行列掃描,鍵值通過串口輸出,行列獨立掃描</p><p&g
64、t;<b> 輸出低 讀取輸入</b></p><p> 行輸入列輸出:第一行10,第二行01保存到row</p><p> 行輸出列輸入:第一列110,第二列101.第三列011保存到col</p><p><b> 組合鍵值:</b></p><p> KEY1 110 10
65、= 1A</p><p> KEY2 101 10 = 16</p><p> KEY3 011 10 = 0E</p><p> KEY4 110 01 = 19</p><p> KEY5 101 01 = 15</p><p> KEY6 011 01 = 0D</p><p>
66、<b> 第三章 軟件介紹</b></p><p> 3.1 開發(fā)板的環(huán)境搭建</p><p> 嵌入式linux軟件系統(tǒng)由bootloader、kernel、root filesystem構(gòu)成,</p><p> bootloader: vivi u-boot.bin</p><p> ke
67、rnel: zImage uImage</p><p> rootfs: rootfs.cramfs rootfs.yaffs</p><p> 3.2 Linux環(huán)境搭建</p><p> 3.2.1、虛擬機的安裝</p><p> VMwareWorkstation是一個“虛擬機”軟件,它使用戶可以在
68、一臺機器上同時運行多個操作系統(tǒng)</p><p> VMware Player是VMware Workstation的精簡版,最初只是虛擬機的“播放器”,但最新版本已經(jīng)具有創(chuàng)建虛擬機的功能,具有小體積,使用靈活,免費等特點。</p><p> 多個操作系統(tǒng)在主系統(tǒng)的平臺上,可像windows應(yīng)用程序那樣切換,而且每個操作系統(tǒng)都可以進行虛擬的分區(qū)、配置而不影響真實硬盤的數(shù)據(jù)</p&g
69、t;<p> 3.2.2、VMware Tools安裝及設(shè)置</p><p> 注銷重新登錄VMwaretools生效,鼠標可以自由在windows和虛擬機之間切換,可以直接拖動windows文件在虛擬機或從虛擬機文件到windows,利用VMwareTools的shared forders功能實現(xiàn)虛擬機與windows主機之間的文件共享</p><p> 3.2.3、
70、Smb與nfs服務(wù)器的配置</p><p> Linux與windows之間以及l(fā)inux與linux之間互相共享資源,除了前面講過的VMPlayer自帶提供的VMwareTools工具以外,linux還提供了兩種非常重要的網(wǎng)絡(luò)通信服務(wù):samba與nfs</p><p> Samba(SMB):</p><p> 是一個網(wǎng)絡(luò)服務(wù)器,用于Linux和windo
71、ws共享文件</p><p> NFS(Network File System):</p><p> 即網(wǎng)絡(luò)文件系統(tǒng),通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統(tǒng)上的文件,多用于linux與linux之間互相訪問共享文件</p><p> 配置smb與nfs服務(wù)器,必須在前面安裝linux時保證以下服務(wù)及工具的安裝</p><
72、;p> 如果沒有安裝以上工具,可采用以下方法安裝文件</p><p> 按照前面介紹的方法,插入光盤:</p><p> #mount -o nolock /dev/cdrom /media</p><p> #cd /media/Server</p><p> #rpm -ivh system-config-samba-1.
73、2.41-5.e15.noarch.rpm</p><p> #rpm -ivh system-config-nfs-1.3.23-1.e15.noarch.rpm</p><p> A、開啟samba服務(wù)</p><p> 系統(tǒng)-----管理-----服務(wù)器設(shè)置-----服務(wù)-----samba</p><p> 首選項-----s
74、amba用戶</p><p> 在終端中運行:service smb restart</p><p> 在windows中運行開始——運行:192.168.220.xxx測試一下</p><p> B、開啟nfs服務(wù):</p><p> 系統(tǒng)——管理——服務(wù)器設(shè)置——服務(wù)——nfs</p><p><b&
75、gt; 測試nfs服務(wù):</b></p><p><b> 在終端中運行:</b></p><p> #service nfs restart</p><p> #mount -o nolock 192.168.220.xx:/home /mnt</p><p> 3.2.4安裝交叉編譯器</
76、p><p> 安裝以下交叉編譯工具:4.3.2,用于交叉編譯可執(zhí)行程序到開發(fā)板運行。</p><p> #mkdir –p /usr/local/arm</p><p> #tar zxvf arm-linux-gcc-4.3.2.tar.gz –C /usr/local/arm</p><p> 其中4.3.2需要假加入環(huán)境
77、變量,這樣每次啟動時交叉編譯器都會起作用</p><p> #vi /etc/profile</p><p> export PATH=/usr/local/arm/4.3.2/bin:$PATH</p><p><b> 第四章 程序設(shè)計</b></p><p><b> 4.1 設(shè)計要求&l
78、t;/b></p><p> 實現(xiàn)mp3文件的播放</p><p><b> a顯示歌詞信息</b></p><p> b.顯示歌曲列表,當前播放歌曲需反顯</p><p><b> c顯示同步歌詞</b></p><p><b> d顯示當前播放進
79、度</b></p><p> e實現(xiàn)mp3文件的播放/暫停、上一首、下一首、快進、快退(觸摸屏、物理按鍵都要實現(xiàn))等控件</p><p> 圖4-1 人機交互界面</p><p> 4.2 設(shè)計總體結(jié)構(gòu)</p><p> 圖4-2-1 程序設(shè)計總體結(jié)構(gòu)圖</p><p> 4.2.1、對各層的
80、簡單描述</p><p> 1. 終端控制層 :其中包括</p><p> 按鍵解析單元 :接收并且解析用戶的按鍵,向中間層的Mplayer控制器發(fā)送控制指令;</p><p> 觸屏解析單元 : 接收并解析用戶的觸屏動作,向中間層的Mplayer控制器發(fā)送控制指令;</p><p> 觸屏顯示控制單元 : 接收來自中間層的Mplay
81、er控制器的指令,控制觸屏的顯示內(nèi)容。</p><p> 2. Mplayer控制層 :其中包括</p><p> Mplayer命令發(fā)送單元 : 解析來自終端控制層的控制指令,經(jīng)過分析與處理后向Mplayer播放器發(fā)送指令;</p><p> Mplayer狀態(tài)解析單元 : 解析當前Mplayer的狀態(tài),并根據(jù)當前的狀態(tài),控制觸屏顯示控制單元,完成觸屏顯示內(nèi)
82、容的控制</p><p> 3. Mplayer播放器層 :</p><p> 其為進程組中的子進程,完成Mplayer的運行。</p><p> 4.2.2、項目子模塊設(shè)計思路分述</p><p><b> 終端控制層:</b></p><p> 按鍵、觸屏解析單元 :</p&g
83、t;<p> 對于這兩個模塊,我們的總體設(shè)計理念是,兩者應(yīng)在接收到用戶的輸入操作后完成有效的解析,最終應(yīng)能夠生成相應(yīng)的字符串型參數(shù),傳遞給Mplayer控制層,以完成相應(yīng)的Mplayer控制;</p><p> B. 觸屏顯示控制單元 : </p><p> 為了簡化多個顯示子單元的同步問題,我們選擇了通過如下的方式實現(xiàn)這一模塊。不同的顯示單元都以當前歌曲時間,和總歌曲
84、時間作為唯一的一組輸入變量,最終每個模塊都應(yīng)能根據(jù)這一組控制變量的值,完成自己相應(yīng)的顯示任務(wù)。</p><p> Mplayer控制層 : </p><p> Mplayer命令發(fā)送單元 :</p><p> 為了有效解決Mplayer的有效暫停,以及有效快進快退的問題,我們決定,該命令發(fā)送單元能接受來自終端控制層的字符串型參數(shù),之后該模塊應(yīng)對待發(fā)送命令的有效
85、性進行智能解析,并對命令進行必要的修正,之后再通過管道發(fā)送給Mplayer播放器;</p><p> B. Mplayer狀態(tài)解析單元 : </p><p> 為了減小解析Mplayer狀態(tài)信息的難度,我們選擇了通過如下方式實現(xiàn)該子單元:</p><p> 每次執(zhí)行該子單元時,都會順序執(zhí)行“發(fā)送讀取狀態(tài)指令”、“延時,等待Mplayer播放器相應(yīng)”、“解析Mp
86、layer狀態(tài)信息”三個子操作。最終,該模塊應(yīng)能夠?qū)⒏枨畔⒋嫒胫付ǖ淖址麛?shù)組中,并且,將歌曲總時間,歌曲當前播放時間轉(zhuǎn)化為相應(yīng)的整型數(shù)值,存入相應(yīng)的控制變量中。</p><p> 3. Mplayer播放器層 : </p><p> 該邏輯層與之上的兩個邏輯層應(yīng)存在于同一個進程組內(nèi),其中終端控制層、Mplayer控制層存在于父進程中,Mplayer播放器層存在于子進程中。Mplaye
87、r播放器層通過兩條有名管道與上層的Mplayer控制層完成通信</p><p><b> 4.3 設(shè)計步驟</b></p><p> Mplayer項目步驟</p><p><b> 第1步</b></p><p> 功能:初始化圖形庫和觸摸屏、實現(xiàn)背景窗口的初始化。</p>
88、<p> 要求:創(chuàng)建一個tft.c ,在此文件中寫一個函數(shù)back_init()初始化窗口</p><p> 提示:用到的接口函數(shù)</p><p> 1:TFT_Init(); 圖形庫的初始化函數(shù)</p><p> 2:ts_cal_init(); 觸摸屏的初始化函數(shù)</p><p><b> 3:創(chuàng)建窗口&l
89、t;/b></p><p> WindowBack = TFT_CreateWindowEx(0,0,320,240,COLOR_WHITE); //創(chuàng)建背景窗口</p><p> Window_rate = TFT_CreateWindowEx(5,102,180,5,COLOR_GREEN); //創(chuàng)建歌曲進度窗口</p><p> Window_v
90、ol = TFT_CreateWindowEx(110,118,45,5,COLOR_GREEN); //創(chuàng)建音量調(diào)節(jié)窗口</p><p> Window_lrc = TFT_CreateWindowEx(4,151,180,86,COLOR_BLUE); //創(chuàng)建歌詞窗口</p><p> WindowList = TFT_CreateWindowEx(194,30,123,200,
91、COLOR_BLACK); //創(chuàng)建歌曲列表窗口</p><p> Window_msg = TFT_CreateWindowEx(5,47,177,54, COLOR_BLACK); //創(chuàng)建歌曲信息窗口</p><p> Window_time = TFT_CreateWindowEx(5,17,177,28,COLOR_BLACK); //創(chuàng)建時間顯示窗口</p>
92、<p><b> 第2步</b></p><p> 功能:從文件夾中讀取歌曲名字,保存在全局的指針數(shù)組中;在屏幕上顯示歌詞列表。</p><p><b> 要求:</b></p><p> 1:把某個目錄下的歌曲文件名字,全部賦值給指針數(shù)組。(寫一個函數(shù)get_song_list()實現(xiàn))。</p&
93、gt;<p> 2:把所有的歌曲名字顯示在歌詞列表窗口中,當前播放歌曲的名字在列表中應(yīng)該用個矩形框反顯。</p><p> 提示:獲取某個目錄下文件的名稱所用函數(shù)</p><p> DIR* opendir(char* pathname);</p><p> struct dirent * readdir(DIR* dir);</p>
94、;<p> int closedir(DIR *dir);</p><p> opendir 返回一個DIR類型的指針;</p><p> readdir參數(shù)是opendir返回的指針;返回值是struct dirent類型的指針;</p><p> 比如:readdir函數(shù)返回值為dp,dp->d_name 即文件的名字;</p&
95、gt;<p> 循環(huán)把dp->d_name 賦值給全局指針數(shù)組指向的空間(利用malloc申請);</p><p> 賦值之前要判斷一下dp->d_name[0] = = '.' 如果相等則continue,否則循環(huán)給指針數(shù)組指向的空間賦值。</p><p> 注意每次賦值之前要malloc空間;</p><p>
96、可以參考“l(fā)inux C函數(shù).chm”文檔中的readdir函數(shù);</p><p> 循環(huán)賦值的時候給一個變量++ 測出有多少首歌;</p><p><b> 第3步</b></p><p> 功能:播放\暫停、上一首、下一首,快進、快退(觸摸屏、物理按鍵都要實現(xiàn)),點播放列表中歌曲的名字實現(xiàn)切換歌曲。</p><p&
97、gt; 要求:切換歌曲的時候,播放列表中的相應(yīng)歌曲名字要反顯。</p><p><b> 提示:</b></p><p> 1:歌曲的切換通過改變指針數(shù)組中的參數(shù)實現(xiàn),即按下相應(yīng)切換鍵的時候改變指針數(shù)組的參數(shù),再發(fā)送指令切換歌曲。</p><p> 2:在歌詞列表實現(xiàn)之后,創(chuàng)建子進程,在子進程中啟動Mplayer</p>
98、<p> 啟動Mplayer的語句:</p><p> execlp("./mplayer","mplayer","-ac","mad","-slave","-quiet","-input","file=/tmp/my_fifo",buf,N
99、ULL);</p><p> 在execlp中規(guī)定mplayer從命名管道中獲取消息,主進程中就必須通過向命名管道寫"命令字符串"來控制mplayer,所以必須在創(chuàng)建子進程之前創(chuàng)建fifo,父子進程通過fifo通信。</p><p> 3:主進程中創(chuàng)建touch_pthread線程(觸點檢測模塊)、key23_contrl線程(物理按鍵控制模塊);檢測觸摸屏、物理按
100、鍵,以及相應(yīng)的控制操作。</p><p><b> 第4步、</b></p><p> 功能:在屏幕上顯示歌曲長度、當前播放到多少秒、當前歌曲的“專輯、歌手、標題、發(fā)行年份”、進度條</p><p><b> 要求:</b></p><p> 1:在屏幕歌曲信息窗口中顯示歌曲的總長度,當前播
101、放時間.(切換歌曲活快進快退的時候刷新信息)</p><p> 2:在歌曲信息窗口中顯示歌曲的“專輯、歌手、標題、發(fā)行年份”.(切換歌曲的時候刷新信息).</p><p> 3:播放進度條隨著時間推移。(切換歌曲、或快進快退的時候可以刷新)</p><p> 1: 父子進程通過管道通信;即子進程通過管道把消息傳給父進程</p><p>
102、 子進程把Mplayer輸出的信息重定向到管道中。</p><p> 主進程從管道中讀,讀出來后解析再做相應(yīng)的處理。</p><p> 2: 主進程創(chuàng)建子線程</p><p> 1:pipe_read 循環(huán)讀管道把讀到的消息保存在字符數(shù)組中。</p><p> 2:pipe_read_dispose 循環(huán)解析讀到的消息,把有用的消息
103、解析出來,做相應(yīng)的處理</p><p> 3:get_percent_pos 每隔一段時間發(fā)一條檢測時間的命令,獲取當前播放時間。</p><p><b> 第5步</b></p><p> 功能:在歌詞窗口顯示歌詞。</p><p> 要求:歌詞循環(huán)打印,歌詞與歌曲同步,切換歌曲的時候切換新的歌詞。</p
104、><p><b> 提示:</b></p><p> 1:可以用Mplayer返回來的當前播放時間去查找歌詞解析里的時間,這樣快進歌詞也可以跟著同步。</p><p> 2:如果用以前的虛擬時間,歌曲快進,歌詞不能同步。</p><p> 3:歌詞解析功能也是創(chuàng)建一個新的線程(lrc_displayer)去完成<
105、;/p><p> 第五章 軟硬件測試</p><p> 5.1 開發(fā)板性能測試</p><p> A、無法燒錄bootloader,kernel,root。</p><p> B、燒錄bootloader,kernel,root后,由于操作不正確,使開發(fā)板無法正常啟動。</p><p> C、系統(tǒng)能成功啟動,
106、但啟動后命令正確卻無法執(zhí)行。</p><p> 前面三點都可以采用TEST—S3C2440軟件進行測試。</p><p> D、觀測TFT-LCD是否有裂痕,用觸屏測試程序測試屏幕是否由壞點。</p><p> F、TFT-LCD觸屏點不正確,運行系統(tǒng)自帶的觸屏校正程序進行校正或下載觸屏矯正測序。</p><p> G、用鍵盤測試程序
107、測試2×3鍵盤,在屏幕上打印相應(yīng)的鍵值是否符合理論值</p><p> 5.2 虛擬機可靠性測試</p><p> A、Smb是否開啟成功,用ping IP 命令來檢測,</p><p> B、NFS是否開啟成功,將虛擬機的目錄掛載到開發(fā)板對應(yīng)的文件下,掛載后,進入掛載目錄下觀察</p><p> C、交叉編譯器是否安裝成
108、功,用arm-linux-gcc命令編譯程序,看該命令是否得到執(zhí)行</p><p> 第六章 程序編寫及測試</p><p> 6.1 模塊程序簡介</p><p> 6.1.1、窗口創(chuàng)建</p><p> 圖6-1-1窗口創(chuàng)建方框圖</p><p> 對緩存區(qū)、屏幕、觸摸屏進行初始化,再在320
109、5;240的屏幕上按設(shè)計要求劃分相應(yīng)的窗口,歌曲顯示窗口,歌曲信息窗口,歌詞窗口,觸屏按鍵區(qū)域,進度條區(qū)域,設(shè)置背景顏射以及圖片</p><p><b> 代碼實現(xiàn):</b></p><p> getFBP(fbname); //初始化緩沖區(qū)</p><p> TFT_Init();//初始化屏幕</p>&
110、lt;p> ts_cal_init();//初始化觸摸屏</p><p> Window_vol = TFT_CreateWindowEx(110,118,45,5,COLOR_GREEN);</p><p> Window_rate =TFT_CreateWindowEx(5,102,180,5,COLOR_GREEN);</p><p>
111、Window_lrc = TFT_CreateWindowEx(4,151,180,86,COLOR_YELLOW);</p><p> Window_List = TFT_CreateWindowEx(194,30,123,200,COLOR_BLACK); </p><p> Window_Msg = TFT_CreateWindowEx(5,47,177,54,COLO
112、R_MAGENTA);</p><p> Window_time_total =TFT_CreateWindowEx(5,17,177,17,COLOR_BLUE);</p><p> Window_time_now = TFT_CreateWindowEx(5,29,177,14,COLOR_BLUE);</p><p> 6.1.2、歌曲列表獲取</
113、p><p> 圖6-1-2 歌曲列表方框圖</p><p> 用opendir ()函數(shù)打開文件夾,readdir()函數(shù)讀取里面的文件,判斷文件是否可讀,從而知道文件是否符合要求,將后綴名為mp3的加入到指針數(shù)組里,同時歌曲總數(shù)加一,循環(huán)查找知道該文件夾里面沒有符合要求的文件為止!</p><p> 6.1.3、歌曲信息的獲取</p><p
114、> 圖6-1-3 歌曲列表獲取方框圖</p><p> 打開創(chuàng)建好的管道,線程一將獲取歌曲信息的命令一一寫進管道,線程二將命令執(zhí)行得到的信息放在一個數(shù)組里,線程三解析從管道里讀出來的數(shù)據(jù)并顯示到歌曲信息窗口,</p><p><b> 實現(xiàn)函數(shù)</b></p><p> pthread_create(&tid_song_m
115、essage,NULL,song_message,NULL);</p><p> pthread_create(&tid_read_message,NULL,read_message,(void*)pipe_fd[0]);</p><p> pthread_create(&tid_pipe_dispose,NULL,pipe_dispose,NULL);</p&g
116、t;<p> 6.1.4、2×3鍵盤的控制</p><p> 圖6-1-4 2×3鍵盤控制方框圖</p><p> 用 open()函數(shù)打開鍵盤驅(qū)動文件,ioctl()函數(shù)控制輸入,將輸入的鍵值與0x1f相與,保證高三位為0,防止鍵值出錯影響Mplayer的錯誤執(zhí)行,循環(huán)讀取鍵值,打開命名管道,讀取不同的鍵值,按需要write()函數(shù);將對應(yīng)的命令
117、輸入管道!</p><p> 6.1.5、歌詞解析及同步顯示</p><p> 圖6-1-5 歌詞解析及同步顯示方框圖</p><p> 遍歷指定文件夾,將lrc文件名放入存放歌詞文件名的指針數(shù)組,獲取當前的播放的文件名,遍歷指針數(shù)組匹配文件名相同的歌詞文件,如果文件不存在,則在歌詞顯示區(qū)域顯示"Can't find right lrc\n&
118、quot;;如果文件存在,則將歌詞文件中的數(shù)據(jù)分成一行一行放入指針數(shù)組,然后去掉歌詞文件中得到的歌曲信息,將每一行的時間和歌詞解析出來,按時間的先后順序放入鏈表!</p><p> 6.1.5、觸摸屏控制</p><p> 觸摸屏完成歌曲的點播、暫停/播放,上一首/下一首,進度條拖拽,快進快退。</p><p> 實現(xiàn)方法,點擊相應(yīng)的區(qū)域,將相應(yīng)的命令輸入到管
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- linux環(huán)境下編譯arm上運行的mplaye畢業(yè)設(shè)計
- linux環(huán)境下c語言編譯、運行的底層工作原理(3)
- linux下編寫c源程序并用編譯運行
- 基于arm平臺的linux2622內(nèi)核編譯
- 基于arm平臺的linux2622內(nèi)核編譯
- linux環(huán)境下五子棋游戲設(shè)計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計(論文)linux環(huán)境下五子棋游戲設(shè)計
- 畢業(yè)設(shè)計--linux下http服務(wù)器設(shè)計
- linux下郵件服務(wù)器的搭建畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--linux下的防火墻程序研發(fā)
- 基于arm和linux的嵌入式數(shù)碼相框系統(tǒng)設(shè)計-畢業(yè)設(shè)計論文
- 淺談arm-linux環(huán)境下udp協(xié)議的通信應(yīng)用研究
- linux網(wǎng)絡(luò)聊天畢業(yè)設(shè)計
- 數(shù)碼相框畢業(yè)設(shè)計論文--基于arm和linux的嵌入式數(shù)碼相框系統(tǒng)設(shè)計
- linux shell的設(shè)計與實現(xiàn)【畢業(yè)設(shè)計】
- 交叉編譯環(huán)境的建立及l(fā)inux9內(nèi)核的安裝
- Linux下基于ARM的GPRS通信研究.pdf
- 測控技術(shù)與儀器 畢業(yè)論文范文——linux下arm系統(tǒng)顯示驅(qū)動設(shè)計
- linux課程設(shè)計---linux環(huán)境下c語言程序設(shè)計
- ARM自動編譯工具的設(shè)計與開發(fā).pdf
評論
0/150
提交評論