基于ARM平臺與嵌入式Linux的圖像采集應(yīng)用_第1頁
基于ARM平臺與嵌入式Linux的圖像采集應(yīng)用_第2頁
基于ARM平臺與嵌入式Linux的圖像采集應(yīng)用_第3頁
基于ARM平臺與嵌入式Linux的圖像采集應(yīng)用_第4頁
基于ARM平臺與嵌入式Linux的圖像采集應(yīng)用_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、學(xué)號2014-2015學(xué)年 第二學(xué)期1536360803嵌入式系統(tǒng)課程設(shè)計報告題目:基于ARM平臺與嵌入式Linux 的圖像采集應(yīng)用專業(yè):網(wǎng)絡(luò)技術(shù)班級:13(1)班姓名:李紅指導(dǎo)教師:張文哲成績:計算機(jī)學(xué)院2015年5月7日目錄 摘要31 緒論311課題研究背景3111課題研究意義312國內(nèi)外研究現(xiàn)狀42嵌入式系統(tǒng)理論基礎(chǔ)421嵌入式系統(tǒng)簡介4211嵌入式系統(tǒng)的組成與特點(diǎn)4212嵌入式系統(tǒng)的應(yīng)用與發(fā)展趨勢422嵌入式處理器4221嵌入式處理器發(fā)展簡史4222嵌入式處理器分類523嵌入式操作系統(tǒng)5231嵌入式操作系統(tǒng)分類5232嵌入式Linux操作系統(tǒng)53系統(tǒng)綜述631系統(tǒng)構(gòu)成及基本原理632嵌

2、入式處理器的選擇6321嵌入式處理器選擇原則6322 s3C2410X處理器介紹633 USB攝像頭的選擇74嵌入式操作系統(tǒng)的實(shí)現(xiàn)741嵌入式系統(tǒng)開發(fā)環(huán)境的建立7411主機(jī)開發(fā)環(huán)境的建立7412交叉編譯環(huán)境的建立742嵌入式linux操作系統(tǒng)移植842. 1 Linux內(nèi)核版本及結(jié)構(gòu)8422 Linux 2418內(nèi)核版本的移植843根文件系統(tǒng)制作9431文件系統(tǒng)介紹9432構(gòu)建嵌入式Linux文件系統(tǒng)9442 USB攝像頭驅(qū)動程序的移植1045圖像采集程序設(shè)計105圖形用戶界面的實(shí)現(xiàn)1251 MiniGL的特點(diǎn)125.2運(yùn)行例子程序1253 MiniGL程序開發(fā)13531 MiniGUI體系結(jié)

3、構(gòu)1354應(yīng)用程序的編寫136網(wǎng)絡(luò)傳輸功能的實(shí)現(xiàn)1461 socket簡介1462網(wǎng)絡(luò)傳輸功能的實(shí)現(xiàn)14621 socket通信過程14622 socket通信的實(shí)現(xiàn)15623運(yùn)行結(jié)果157總結(jié)與展望16參考文獻(xiàn)16前言隨著多媒體技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,嵌入式圖像采集系統(tǒng)的研究與實(shí)現(xiàn)越來越受到人們的重視。傳統(tǒng)的圖像采集系統(tǒng)一般采用基于Pc機(jī)平臺和視頻采集卡的形式,該方案系統(tǒng)體積大、成本高,在遠(yuǎn)距離、多點(diǎn)系統(tǒng)中實(shí)現(xiàn)困難。在這種背景下,設(shè)計一種輕便小巧的采集系統(tǒng)來采集、存儲并顯示所需的圖像成為市場所需。本論文研究設(shè)計了一種基于嵌入式的圖像采集與傳輸系統(tǒng),具有體積小、成本低、穩(wěn)定性高等優(yōu)點(diǎn)。該系統(tǒng)硬件

4、平臺采用基于ARM920T核的$3C2410X處理器,軟件采用嵌入式Linux操作系統(tǒng),利用USB攝像頭采集圖像并在目標(biāo)板的LCD上進(jìn)行顯示,通過網(wǎng)絡(luò)還可將采集到的圖像傳輸?shù)絇C機(jī)上顯示。該方案大大降低了系統(tǒng)的復(fù)雜性,同時提高了系統(tǒng)的穩(wěn)定性和圖像質(zhì)量,可以擴(kuò)展應(yīng)用在遠(yuǎn)程監(jiān)控系統(tǒng)等諸多領(lǐng)域,具有廣闊的市場和應(yīng)用前景。本論文首先介紹了課題研究的時代背景、實(shí)踐意義和研究現(xiàn)狀,并對嵌入式系統(tǒng)開發(fā)的基礎(chǔ)理論知識作了介紹,在此基礎(chǔ)上給出了嵌入式圖像采集與傳輸系統(tǒng)的總體結(jié)構(gòu)設(shè)計;接著詳細(xì)分析了嵌入式Linux操作系統(tǒng)的開發(fā)技術(shù),包括嵌入式發(fā)環(huán)境的建立、Bootloader移植、Linux內(nèi)核移植和根文件系統(tǒng)

5、的制作,并介紹了嵌入式Linux下的設(shè)備驅(qū)動程序,實(shí)現(xiàn)了USB攝像頭驅(qū)動的移植,完成了利用攝像頭采集圖像的功能;然后完成了MiniGUI圖形用戶界面的移植和圖像在LCD上的顯示;最后實(shí)現(xiàn)了基于socket的網(wǎng)絡(luò)通信,完成了視頻采集和傳輸系統(tǒng)的整體功能,并給出了最終的實(shí)驗(yàn)結(jié)果。1 緒論11課題研究背景圖象、畫面所包含的信息量巨大,是人類獲取和交換信息的主要來源;而且視頻信息具有直觀性、可靠性等一系列的優(yōu)點(diǎn),因而視頻采集與處理歷來就是重要的研究內(nèi)容。圖像信息的采集和傳輸經(jīng)過幾十年的發(fā)展,已廣泛應(yīng)用于各行各業(yè)。人類步入網(wǎng)絡(luò)時代以來,特別是隨著通信和計算機(jī)技術(shù)的發(fā)展,以“信息采集、處理、監(jiān)控”為核心的

6、視頻監(jiān)控系統(tǒng)越來越廣泛地應(yīng)用于電視會議、可視電話、遠(yuǎn)程監(jiān)控、智能交通、智能小區(qū)等遠(yuǎn)程圖像傳輸系統(tǒng)中。為了實(shí)現(xiàn)這些應(yīng)用,實(shí)時獲得視頻數(shù)據(jù)是一個重要環(huán)節(jié)。傳統(tǒng)視頻采集系統(tǒng)一般采用基于個人計算機(jī)和視頻采集卡的形式,該方案存在圖像品質(zhì)不高、抗干擾能力差、系統(tǒng)體積大、成本高、不便于攜帶等缺點(diǎn),在遠(yuǎn)距離、多點(diǎn)系統(tǒng)中實(shí)現(xiàn)困難。對于高端領(lǐng)域,大多采用基于DSP結(jié)合FPGA或CPLD的方式,這種方式并不能輕易滿足高比特、高清晰的要求,高比特DSP開發(fā)過程耗時冗長,需要投入大量的人力和資金。111課題研究意義基于嵌入式設(shè)備的圖像采集系統(tǒng)的優(yōu)點(diǎn)表現(xiàn)在:由于這種系統(tǒng)的硬件是一個同處理器和軟件捆綁較為緊密、功能專一、設(shè)

7、計專門的設(shè)備,不像插卡系統(tǒng)那樣受通用計算機(jī)系統(tǒng)中其他軟件硬件的影響,因此性能上更穩(wěn)定,且便于安裝、維護(hù),易于實(shí)現(xiàn)系統(tǒng)的模塊化設(shè)計,便于管理、維護(hù)、降低費(fèi)用;另一方面,由于功能的單一,只要算法選擇正確,系統(tǒng)的實(shí)時性就可以得到保證,而且控制功能較PC系統(tǒng)容易實(shí)現(xiàn)且更為強(qiáng)大。12國內(nèi)外研究現(xiàn)狀在國內(nèi)外市場上,主要存在兩類視頻監(jiān)控產(chǎn)品:數(shù)字控制的模擬視頻監(jiān)控和數(shù)字視頻監(jiān)控。數(shù)控模擬監(jiān)控系統(tǒng)技術(shù)經(jīng)過較長時間的發(fā)展并在實(shí)際工程中得到了非常廣泛的應(yīng)用,發(fā)展己經(jīng)非常成熟,性能也十分穩(wěn)定,但由于視頻監(jiān)控系統(tǒng)中信息流的形態(tài)沒有變,仍為模擬的視頻信號,系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)主要是一種單功能、單向、集總方式的信息采集網(wǎng)絡(luò),介

8、質(zhì)專用的特點(diǎn),因此系統(tǒng)盡管已發(fā)展到很高的水平,已無太多潛力可挖,其局限性依然存在;而數(shù)字監(jiān)控系統(tǒng)技術(shù)是新近崛起的,解決了模擬系統(tǒng)部分弊端而迅速發(fā)展起來,但發(fā)展并不是很成熟,需要更進(jìn)步的完善??v觀全局,數(shù)字監(jiān)控系統(tǒng)必然是大勢所趨并有著現(xiàn)實(shí)的研究價值。數(shù)字監(jiān)控系統(tǒng)通常分為兩類:一類是基于PC機(jī)組合的計算機(jī)多媒體工作方式:另一類是嵌入式數(shù)字視頻監(jiān)控系統(tǒng)。2嵌入式系統(tǒng)理論基礎(chǔ)21嵌入式系統(tǒng)簡介211嵌入式系統(tǒng)的組成與特點(diǎn)嵌入式系統(tǒng)(Embedded System,ES)定義為以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁減,適用于應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計算機(jī)系統(tǒng)。嵌入

9、式技術(shù)的核心思想,是最大限度地對硬件和軟件量身定做,以提高效率、性價比、實(shí)時性等。以生活中常見實(shí)例來講,手機(jī)、數(shù)字視頻設(shè)備等電子產(chǎn)品都可認(rèn)為是一個嵌入式系統(tǒng)或其中以嵌入式系統(tǒng)為重要核心,它們分別具有通信、視頻處理方面的針對性功能。現(xiàn)代生活中嵌入式系統(tǒng)的影子無處不在。212嵌入式系統(tǒng)的應(yīng)用與發(fā)展趨勢嵌入式系統(tǒng)概念的提出已有相當(dāng)長的時間,但在以前,它主要用于軍事領(lǐng)域和工業(yè)控制領(lǐng)域,所以很少被人關(guān)注和了解。直到后PC時代的到來,隨著數(shù)字技術(shù)的發(fā)展和新的體積更小的控制芯片和功能更強(qiáng)的操作系統(tǒng)的出現(xiàn),它才被廣泛應(yīng)用于人們的日常生活中?,F(xiàn)在,嵌入式系統(tǒng)已經(jīng)滲透到人們生活的各個方面,它在國防、工業(yè)控制、遠(yuǎn)程

10、監(jiān)控、航空航天、通信、汽車電子、交通管理、電子商務(wù)、家庭智能管理、環(huán)境監(jiān)測、安防系統(tǒng)、醫(yī)療儀器、信息家電、辦公自動化以及消費(fèi)電子等領(lǐng)域的應(yīng)用范圍正不斷擴(kuò)大,如人們經(jīng)常使用的手機(jī)、數(shù)碼相機(jī)、可視電話、PDA、POS和GPS都是嵌入式系統(tǒng)應(yīng)用的典型例子。22嵌入式處理器221嵌入式處理器發(fā)展簡史嵌入式處理器歷史悠久,早在20世紀(jì)70年代,工業(yè)控制領(lǐng)域就開始使用嵌入式處理器,當(dāng)時主要是4位和8位的處理器。隨著嵌入式技術(shù)和應(yīng)用的不斷發(fā)安徽理丁大學(xué)碩十學(xué)位論文展與普及,嵌入式處理器也從最初的4位、8位,發(fā)展到現(xiàn)在的16位、32位,甚至64位。 222嵌入式處理器分類由于嵌入式系統(tǒng)應(yīng)用領(lǐng)域的多樣性,不可能

11、有一種通用的嵌入式處理器能滿足所有嵌入式系統(tǒng)的需求,這迫使人們設(shè)計了各種各樣的嵌入式處理器來滿足不同領(lǐng)域的要求。因此,嵌入式處理器種類繁多,數(shù)量龐大。據(jù)統(tǒng)計,目前全世界嵌入式處理器的品種總量以超過1000種,流行的體系結(jié)構(gòu)有三十幾個系列,如PowerPC、Motorola、ARM系列等。根據(jù)特點(diǎn)和應(yīng)用領(lǐng)域的不同,可以將嵌入式系統(tǒng)的處理器可以分為以下4大類:嵌入式微處理器(MicroProcessor Unit,MPU);嵌入式微控制器(Mierocontroller Unit,MCU);嵌入式數(shù)字信號處理器(Digital Signal Processor,DSP);嵌入式片上系統(tǒng)(Syste

12、m On Chip,SoC)。23嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)(Embedded Operation System,EOS)是一種支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)極為重要的組成部分,負(fù)責(zé)嵌入系統(tǒng)的全部軟、硬件資源的分配、任務(wù)調(diào)度,控制、協(xié)調(diào)并發(fā)活動。通常包括與硬件相關(guān)的底層驅(qū)動軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等browser。與通用操作系統(tǒng)相比較,嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時高效性、硬件的相關(guān)依賴性、軟件固態(tài)化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。231嵌入式操作系統(tǒng)分類目前嵌入式系統(tǒng)的軟件主要有兩大類:實(shí)時系統(tǒng)和分時系統(tǒng)。其中實(shí)時系統(tǒng)又分為兩類:

13、硬實(shí)時系統(tǒng)和軟實(shí)時系統(tǒng)。實(shí)時嵌入系統(tǒng)是為執(zhí)行特定功能而設(shè)計的,可以嚴(yán)格的按時序執(zhí)行功能。其最大的特征就是程序的執(zhí)行具有確定性。在實(shí)時系統(tǒng)中,如果系統(tǒng)在指定的時間內(nèi)未能實(shí)現(xiàn)某個確定的任務(wù),會導(dǎo)致系統(tǒng)的全面失敗,則系統(tǒng)被稱為硬實(shí)時系統(tǒng)。而在軟實(shí)時系統(tǒng)中,雖然響應(yīng)時間同樣重要,但是超時卻不會導(dǎo)致致命錯誤。一個硬實(shí)時系統(tǒng)往往在硬件上需要添加專門用于時問和優(yōu)先級管理的控制芯片,而軟實(shí)時系統(tǒng)則主要在軟件方面通過編程實(shí)現(xiàn)時限的管理。比如Windows CE就是一個多任務(wù)分時系統(tǒng),而gCOSII則是典型的實(shí)時操作系統(tǒng)。232嵌入式Linux操作系統(tǒng)1Linux操作系統(tǒng)在介紹嵌入式Linux之前,先介紹一下Li

14、nux操作系統(tǒng)。Linux遵守POSIX標(biāo)準(zhǔn),與UNIX操作系統(tǒng)兼容,是目前最為流行的一款開放源代碼的操作系統(tǒng)。它起源于芬蘭一個名為Linus Torvalds的業(yè)余愛好者。完整的Linux包括操作系統(tǒng)內(nèi)核、系統(tǒng)軟件和應(yīng)用軟件。內(nèi)核的發(fā)布由LinusTorvalds和Alan Cox等領(lǐng)導(dǎo)的內(nèi)核開發(fā)小組控制,可以通過訪問內(nèi)核網(wǎng)站下載內(nèi)核源代碼。系統(tǒng)軟件和大部分應(yīng)用軟件很多來自GNU組織,如GNU GCC和GDB等。其它一些商業(yè)公司如IBM、Sun和Oracle等也開始開發(fā)基于Linux平臺的應(yīng)用軟件。3系統(tǒng)綜述31系統(tǒng)構(gòu)成及基本原理圖像采集平臺的硬件系統(tǒng)結(jié)構(gòu)設(shè)計如圖2所示:圖1該系統(tǒng)基于32位

15、ARM微處理器芯片和嵌入式Linux操作系統(tǒng)。高性能的ARM處理器與其它外圍器件構(gòu)成了一個嵌入式多媒體開發(fā)平臺,可以滿足復(fù)雜計算和圖形顯示的需求。32嵌入式處理器的選擇321嵌入式處理器選擇原則與PC機(jī)主要采用Intel和AMD公司的處理器不同,嵌入式系統(tǒng)由于應(yīng)用多種多樣,目前還沒有一種嵌入式處理器能夠主導(dǎo)整個市場,因此嵌入式處理器的選擇是一個嵌入式系統(tǒng)能否成功的重要前提。嵌入式處理器的功能和性能,直接影響著整個系統(tǒng)的設(shè)計,嵌入式處理器的選擇,制約了其配套的外圍器件的選擇。選擇嵌入式處理器時,可以依據(jù)以下選擇原則:1) 選擇主流處理器供應(yīng)商的產(chǎn)品。2) 選擇最符合應(yīng)用需求的處理器。3) 選擇低

16、功耗的處理器。4) 選擇提供配套開發(fā)工具的處理器。322 s3C2410X處理器介紹1)1個LCD控制器(支持STN和TFT帶有觸摸屏的液晶顯示屏)。2)SDRAM控制器。3)3個通道的UART,4個通道的DMA,2個通道的SPI接VI,8個通道的10位ADC及DAC控制器。4)4個具有PWM功能的計時器和一個內(nèi)部時鐘,看門狗計數(shù)器。5)12C總線接13,觸摸屏接13,SD接VI和MMC卡接13。6)2個USB主機(jī)接VI,1個USB從設(shè)備接13。刀117位通用IO VI和24位外部中斷源。 33 USB攝像頭的選擇攝像頭分為數(shù)字?jǐn)z像頭和模擬攝像頭兩大類。對于模擬攝像頭,必須經(jīng)過特定的視頻捕捉卡

17、將模擬視頻信號轉(zhuǎn)換成數(shù)字模式,并加以壓縮后才可以傳到計算機(jī)上運(yùn)用。數(shù)字?jǐn)z像頭可以直接捕捉影像,然后通過串、并口或者USB接口傳到計算機(jī)里。由于模擬攝像頭的整體成本較高,而USB接口的傳輸速度遠(yuǎn)遠(yuǎn)高于串口、并口的速度,因此現(xiàn)在市場上熱點(diǎn)主要是USB接口的數(shù)字?jǐn)z像頭。數(shù)字?jǐn)z像頭的一般結(jié)構(gòu)如圖3所示:圖24嵌入式操作系統(tǒng)的實(shí)現(xiàn)41嵌入式系統(tǒng)開發(fā)環(huán)境的建立411主機(jī)開發(fā)環(huán)境的建立主機(jī)采用WindowsXP+VMware+Linux的開發(fā)環(huán)境。虛擬機(jī)(xrtmlal Machine,VM)是通過軟件模擬的具有完整硬件系統(tǒng)功能的、支持多個操作系統(tǒng)并運(yùn)行在單個物理計算機(jī)上的一種計算機(jī)系統(tǒng)。通過虛擬機(jī)軟件,可

18、以在一臺物理計算機(jī)上模擬出一臺或多臺虛擬的計算機(jī),對于用戶而言,它只是運(yùn)行在用戶物理計算機(jī)上的一個應(yīng)用程序,但是對于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言,它就像是在真J下的計算機(jī)中進(jìn)行工作。因此,當(dāng)用戶在虛擬機(jī)中進(jìn)行軟件評測時,可能系統(tǒng)一樣會崩潰,但是,崩潰的只是虛擬機(jī)上的操作系統(tǒng),而不是物理計算機(jī)上的操作系統(tǒng),并且,使用虛擬機(jī)的“Undo”(恢復(fù))功能,用戶可以馬上恢復(fù)虛擬機(jī)到安裝軟件之前的狀態(tài)。給開發(fā)帶來了很大的方便。412交叉編譯環(huán)境的建立在進(jìn)行嵌入式開發(fā)之前,首先要建立一個交叉編譯環(huán)境,這是一套編譯器、連接器和lilac庫等組成的丌發(fā)環(huán)境f27娜1。交叉編譯環(huán)境主要包括以下幾個部分:針對目標(biāo)系

19、統(tǒng)的編譯器gee針對目標(biāo)系統(tǒng)的二進(jìn)制工具binutils目標(biāo)系統(tǒng)的標(biāo)準(zhǔn)c庫glibe目標(biāo)系統(tǒng)的內(nèi)核頭文件42嵌入式linux操作系統(tǒng)移植42. 1 Linux內(nèi)核版本及結(jié)構(gòu)Linux內(nèi)核主要有5個子系統(tǒng)組成:進(jìn)程調(diào)度,內(nèi)存管理,虛擬文件系統(tǒng),網(wǎng)絡(luò)接口和進(jìn)程之間的通信。 下面簡單介紹 一下內(nèi)核源代碼下各主要目錄下的內(nèi)容:arch予目錄包含了所有硬件結(jié)構(gòu)特定的內(nèi)核代碼。drivers y-日錄包含了內(nèi)核葉I所有的設(shè)備驅(qū)動W弘。fs子目錄包含了所有文件系統(tǒng)的代碼。include子目錄包含了建立內(nèi)核代碼時所需要的大部分庫文件,這個模塊利用其他模塊重建內(nèi)核。init子目錄包含了內(nèi)核的初始化代碼。ipc子

20、目錄包含了進(jìn)程間通信代碼。kernel子目錄包含了主內(nèi)核的代碼。mm子目錄包含了所有內(nèi)存管理代碼。net子目錄包含了和網(wǎng)絡(luò)相關(guān)的代碼。一般在每個目錄下包含一個depend文件和一個Makefile文件。這兩個文件都是編譯時使用的輔助文件。422 Linux 2418內(nèi)核版本的移植所謂嵌入式Linux系統(tǒng)移植,就是把Linux內(nèi)核進(jìn)行裁減修改,構(gòu)造合適的文件系統(tǒng),并且設(shè)置好相應(yīng)的bootloader用于引導(dǎo)kernel,從而使整個系統(tǒng)可以在開發(fā)板上正常運(yùn)行。根目錄移植。修改根目錄Makefile文件。1)指定目標(biāo)平臺:移植前ARCH:=$(shell unam m|sed e si.86/i38

21、6)移植后 ARCH:=arm2)指定交叉編譯器:移植日訂CROSS COMPILE=移植后CROSS COMPILE=咖一linuxarch目錄移植。修改arch目錄下面的Makefile,指定交叉編譯器。手動添加S3C2410X處理器選項(xiàng):移植后ifeq($(CONFIG ARCH_ S3C241 0),y)TEXTADDR=0xC0008000MACHD咂=s3e2410Endif43根文件系統(tǒng)制作431文件系統(tǒng)介紹文件系統(tǒng)是指在一個物理設(shè)備上的任何文件組織和目錄,它構(gòu)成了操作系統(tǒng)上所有數(shù)據(jù)基礎(chǔ),是系統(tǒng)中龐大復(fù)雜且又是最為基本和重要的資源。嵌入式Linux下的文件系統(tǒng)結(jié)構(gòu)如圖11所示:圖

22、3432構(gòu)建嵌入式Linux文件系統(tǒng)1busybox簡介Busybox是用于制作可執(zhí)行命令工具集的工具,它被非常形象地稱為嵌入式Linux系統(tǒng)中的“瑞士軍刀”,因?yàn)樗鼘⒃S多常用的UNIX命令和工具結(jié)合到了一個單獨(dú)的可執(zhí)行程序中。雖然與相應(yīng)的GNU工具比較起,busybox所提供的功能和參數(shù)略少,但在嵌入式系統(tǒng)中已經(jīng)足夠了。2建立Linux文件系統(tǒng)在busybox的編譯過程中,可以非常方便地加減它的“插件”,最后的符號鏈接也可以由編譯系統(tǒng)自動生成。下面詳細(xì)介紹利用busybox建立一個全新的Linux文件系統(tǒng)的方法。44 USB攝像頭設(shè)備驅(qū)動移植4.4.1 Linux設(shè)備驅(qū)動程序概述系統(tǒng)調(diào)用是操

23、作系統(tǒng)內(nèi)核和應(yīng)用程序之問的接口,沒備驅(qū)動程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口。設(shè)備驅(qū)動程序?yàn)閼?yīng)川程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,硬件設(shè)備只是個設(shè)備文件應(yīng)用程序可以像操作普通文件樣對硬件設(shè)備進(jìn)行操作。設(shè)備驅(qū)動程序是內(nèi)核的部分它完成以下的功能:1對設(shè)備初始化和釋放。2把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)。3讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請求的數(shù)據(jù)。4檢測和處理設(shè)備出現(xiàn)的錯誤。442 USB攝像頭驅(qū)動程序的移植目前市場流行的攝像頭型號主要是中星微的ZC03010203,占據(jù)了約90的市場份額,而廣大嵌入式愛好者推崇的則是OmniVision公司的OV51 l,主要是因?yàn)?/p>

24、24內(nèi)核版本以后支持了OV511的驅(qū)動,以至各種研究學(xué)習(xí)資料較多,應(yīng)用也非常方便。45圖像采集程序設(shè)計1Vide04Linux簡介Vide04Linux是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動,他為針對視頻設(shè)備的應(yīng)用程序編程提供一系列接口函數(shù),配合適當(dāng)?shù)囊曨l采集設(shè)備和相應(yīng)的驅(qū)動程序,可以實(shí)現(xiàn)影像采集、AMFM廣播、頻道切換等功能i491,在遠(yuǎn)程會議、可視電話、視頻監(jiān)控系統(tǒng)中有著廣泛的應(yīng)用。2圖像采集程序設(shè)計在Linux下,視頻采集設(shè)備的正常使用依賴于對Vide04 Linux標(biāo)準(zhǔn)的支持。如果使用Vide04Linux,在編譯內(nèi)核時,一定要選中Multimedia Devices下的Videofor

25、 Linux選項(xiàng),本文針對的設(shè)備文件是devvideoO,使用的器件是基于ZC301的USB攝像頭。Vide04Linux定義的數(shù)據(jù)結(jié)構(gòu)及使用函數(shù)如下:struct_v41_structInt fd;structvideo_capability capability;struct video_buffer buffer;struct video_window window;struct video_channel channel8;struct video_picture picture;struct video_mmap mmap;struet video_mbuf mbuf;unsigne

26、d char *map;typedef struct_v41_struet v41_deviee;extem int v41_open(char*,v41_deviee*);extem int v41_elose(v41_deviee*);extem int v41_get_eapability(v41_device*);extem int v41_set_norm(v41_device*,int);extem int v41_get_picture(v41_deviee*);extem int v41_grab_init(v41_deviee*,int,int);extem int v41_

27、grab_frame(v41_device*,int);extem int v41_grab_sync(v41_device*);extem int v41_mmap_init(v41_deviee*);extem int v41_get_mbuf(v41_device*);extern int v41_get_picture(v41_deviee*);extern hat v41_grab_picture(v41_device*,unsigned int);extern int v41 set_buffer(v41_device*);extem int v41get_buffer(v41_d

28、evice*);extem int v41_switch_ehannel(v41_device*,int);Vide04Linux中截取圖象的方法有兩種:1 mmap(內(nèi)存映射)方式2 直接讀設(shè)備方法利用mmap方式截取視頻圖像的程序設(shè)計的主要過程如下:(1)打開視頻:intv41_pen(char *dev,v41一device *vd)if(!dev)dev=”devvideoO”;if(vd->fd=open(dev,O_RDWR)<O)pcrror(”v41_open:”);return-1; if(v41_getcapability(vd)return-1;if(v41_

29、get_picture(vd)retun-1;return 0;(2)讀videocapability中信息int v41_get_capability(v41_device *vd)if(ioctl(vd->fd,VIDIOCGCAP,&(vd->capability)<0)perror(”v41_get_capability:”);return -l;return 0;關(guān)閉設(shè)備:Int v41_close(v41_device *vd)closc(vd->fd);retun 0:5圖形用戶界面的實(shí)現(xiàn)51 MiniGL的特點(diǎn)MiniGUI原是由魏永明支持的遵循

30、GPL條款發(fā)布的一個自由軟件項(xiàng)目,其目標(biāo)是為實(shí)時嵌入式系統(tǒng)提供一個輕量級的圖形用戶界面支持系統(tǒng)。項(xiàng)目自1998年底開始到現(xiàn)在已經(jīng)非常成熟和穩(wěn)定,并且在許多實(shí)際產(chǎn)品和項(xiàng)目中得到應(yīng)用。MiniGUI是一種針對嵌入式設(shè)備的、跨操作系統(tǒng)的圖形用戶界面支持系統(tǒng),它是嵌入式圖形中間層軟件。它主要運(yùn)行于Linux控制臺,實(shí)際可以運(yùn)行在任何一種具有POSIX線程支持的POSIX兼容系統(tǒng)上。它為用戶定義了一組輕量級的窗口和通信設(shè)備接口,利用這些接口,每個應(yīng)用程序可以建立多個窗口,而且可以在這些窗口中繪制圖形,也可以利用MiniGUI建立菜單、按鈕、列表框等常見的GUI元素。與其他基于Linux的圖形界面支持系統(tǒng)

31、相比,MiniGUI系統(tǒng)在API完備性、系統(tǒng)規(guī)模、可移植性、資源消耗等各個方面都具有相對優(yōu)勢,符合嵌入式開發(fā)環(huán)境對GUI系統(tǒng)的輕型、占用資源少、高性能、高可靠性、可配置等方面的要求,因此在嵌入式領(lǐng)域中有廣闊的應(yīng)用前景。5.2運(yùn)行例子程序 圖453 MiniGL程序開發(fā)531 MiniGUI體系結(jié)構(gòu)從整體結(jié)構(gòu)上看,MiniGUl是分層設(shè)計的,體系結(jié)構(gòu)如下圖:圖5在最低層,GAL和IAL提供底層圖形接口以及輸入設(shè)備的驅(qū)動;中間層是MiniGUl的核心層,包括窗口系統(tǒng)必不可少的各個模塊;最頂層是API,為用戶提供編程接口。54應(yīng)用程序的編寫 包含頭文件static void my_notif_pro

32、c(HWND hwnd,int id,int nc,DWORDadd_data) /改變顏色子函數(shù)if(nc=BN_DBLCLK)SetWindowBkColor(hwnd,3333);/3333表示顏色值InvalidateRect(hwnd,NULL,TRUE);Static int StaticDemoWinProc(HWND hWnd,int message,WPARAM wParam,LPARAM 1Param)/窗口過程函數(shù) HWND hwnd;switch(message)case MSG_CREATE:hwnd=CreateWindow(CTRL_BUTTON,”Push me

33、”,WSVISIBLE|BP_PUSHBUTTON|BS NOTIFY,100,50,100,200,50,hWnd,0);SetNotificationCallback(hwnd,my_notif_proc);return 0;case MS_DESTROY:DestroyAllControls(hWnd);rturnO;easeMSG_CLOSE:DestroyMainW'mdow(hWnd);PostQuitMessage(hWnd);return 0;)return DefaultMainWinProc(hWnd,message,wPamm,IParam);int MiniGU

34、IMain(int argc,cxmst char* argvf)/主程序入口 . /定義變量 #ifdef LITE VERSIONSetDesktopRect(0,0,1024,768);#endifCreatelnfodwStyle= Ws_VISIBLE|WSBORDER l ws cAPTION;hMainWnd=CreateMainWindow(&Createlnfo);/創(chuàng)建主窗口if OaMainWnd=HWND_INVALID)return -1;ShowWindow(hMainWnd,SW_SHOWNORMAL);顯示主窗口 6網(wǎng)絡(luò)傳輸功能的實(shí)現(xiàn)61 socket簡

35、介在網(wǎng)絡(luò)歷史的早期,由國際標(biāo)準(zhǔn)化組織(ISO)和國際電報電話咨詢委員會(cCITT)共同出版了開發(fā)系統(tǒng)互聯(lián)(OSI)7層參考模型,把網(wǎng)絡(luò)過程包括從應(yīng)用請求到網(wǎng)絡(luò)介質(zhì)按功能分成7個分立的層次,如下圖所示: 圖662網(wǎng)絡(luò)傳輸功能的實(shí)現(xiàn)621 socket通信過程一般在設(shè)計網(wǎng)絡(luò)程序時,會分為服務(wù)器端與客戶端兩部分,而一個網(wǎng)絡(luò)程序本身就具有ClientServer結(jié)構(gòu),所以在說明TCP網(wǎng)絡(luò)程序的流程時,可以分為TCP Client端及TCP Server端。服務(wù)器首先啟動,通過調(diào)用socket0,建立一個socket,然后調(diào)用bind0將該socket和本地網(wǎng)絡(luò)地址綁定在一起,再調(diào)用listen0使socket做好偵聽的準(zhǔn)備,并規(guī)定它的請求隊(duì)列的長度,之后調(diào)用accept0來接收連接。客戶端在建立socket后,就可調(diào)用connect0和服務(wù)器建立連接。連接建立后,客戶機(jī)和服務(wù)器之間就可以通過調(diào)用send0和recv0來發(fā)送和接收數(shù)據(jù)。最后,數(shù)據(jù)傳送結(jié)束后,雙方調(diào)用close0關(guān)閉socket。622 socket通信的實(shí)現(xiàn)為實(shí)現(xiàn)PC機(jī)和硬件平臺的網(wǎng)絡(luò)通信,首先在編譯內(nèi)核時

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論