基于ARM的圖像采集系統(tǒng)_第1頁
基于ARM的圖像采集系統(tǒng)_第2頁
基于ARM的圖像采集系統(tǒng)_第3頁
基于ARM的圖像采集系統(tǒng)_第4頁
基于ARM的圖像采集系統(tǒng)_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于ARM地圖像采集系統(tǒng)摘要近年來,隨著科學(xué)技術(shù)地不斷發(fā)展,人們對于生活地安全、方便、快捷地要求越來越高,圖像采集已經(jīng)越來越多地用于智能家居、圖像識別、環(huán)境監(jiān)控等領(lǐng)域.本文通過研究當(dāng)前數(shù)字圖像采集系統(tǒng)地研究成果和發(fā)展趨勢,設(shè)計(jì)了一種基于ARM地?cái)?shù)字圖像采集系統(tǒng),論文重點(diǎn)研究了系統(tǒng)地軟件實(shí)現(xiàn)為了克服傳統(tǒng)圖像采集系統(tǒng)地不足,本文采用常見地USB攝像頭作為圖像采集設(shè)備,利用FS_s5pcl00開發(fā)板進(jìn)行操作系統(tǒng)移植,采用s5pcl00芯片直接控制USB攝像頭進(jìn)行圖像數(shù)據(jù)采集,經(jīng)格式轉(zhuǎn)化后,通過LCD控制器在液晶顯示屏上顯示.該系統(tǒng)使用主控芯片完成了圖像采集和傳送,實(shí)現(xiàn)地系統(tǒng)貼近于生活,具有一定地實(shí)用

2、價(jià)值.關(guān)鍵詞:嵌入式;圖像采集;s5pcl00;USBImageCaptureSystemBasedonARMAbstract:Inrecentyears,withthecontinuousdevelopmentofscienceandtechnology,peoplehaveincreasinglhyigherdemandsforsecurityc,onvenience,speedyoflifeI.mageacquisitiohnasbeenincreasingluysedinsmarthome,imagerecognition,environmentalmonitoringandother

3、fields.Inthispaper,IwilldesignadigitalimageacquisitionsystembasedonARMbystudyingthecurrentresearchresultsanddevelopingtrendofdigitalimageacquisitisystem,andIfocusonthesoftwareimplementationofthesystem.Inordertoovercomethedeficiencyofthetraditioniamlageacquisitiosnystem,IchooseUSBcameraastheimageacqu

4、isitiondevice,andtransplantOSintotheFS_s5pc100boardinthispaper.Themaincontrolchip,s5pc100,controlstheUSBcameratocaptureimagefir,standthenitchangestheimageformatandcontrolstheLCDdisplayertoshowthepicture.Withtheonlymaincontrolchip,thesystemcancaptureanddisplaimages,thismakesthesystemhavepracticalimpl

5、icationsandmoreclosertoourtrulife.Keyword:ARM。ImageAcquisitiois5pclO0USB目錄TOC o 1-5 h z第1章前言1.第2章相關(guān)器件2.2.1攝像頭3.2.2顯示器4.第3章總體設(shè)計(jì)9.3.1功能需求9.3.2工作原理9.3.3軟硬件規(guī)劃硬件規(guī)劃.2軟件規(guī)劃1.0.第4章硬件設(shè)計(jì)開發(fā)板&主控芯片s5pcl004.1.1s5pcl0芯片介紹4.1.2開發(fā)板簡介.1.54.2圖像數(shù)據(jù)采集設(shè)備4.3顯示設(shè)備第5章軟件設(shè)計(jì)1.5Linux&開發(fā)環(huán)境搭建1.6Linu系統(tǒng)及Lin

6、ux內(nèi)核簡介1.6Linu環(huán)境搭建步驟概述16Lint交叉編譯環(huán)境搭建17Bootloacder植19.Linu內(nèi)核移植與配置20Linu文件系統(tǒng)21linu設(shè)備驅(qū)動移植235.2.1基礎(chǔ)知識5.2.2設(shè)備介紹.5.2.3系統(tǒng)驅(qū)動5.3圖像采集.5.3.1軟件流程5.3.2程序設(shè)計(jì)結(jié)論3.2致謝3.3參考文獻(xiàn)3.4第1章前言圖像采集起源于20世紀(jì)80年代中期.在發(fā)展初期,現(xiàn)實(shí)世界畫面地存儲通過膠片式高速攝像機(jī)記錄下來.隨著技術(shù)地不斷進(jìn)步,圖像采集經(jīng)過了幾個(gè)發(fā)展階段.早期地采集系統(tǒng)龐大而難以擴(kuò)展;在上個(gè)世紀(jì)末期,單片機(jī)地問世使數(shù)據(jù)采集系統(tǒng)發(fā)生了翻天覆地地變化,但此時(shí)處

7、理數(shù)據(jù)地速度很慢.后來高速單片機(jī),以及更高速地處理芯片DSP,FPGA以及ARM紛紛問世,這讓數(shù)據(jù)采集速度得到了飛速地發(fā)展,同時(shí)基于PC地高速數(shù)據(jù)采集也日趨成熟.現(xiàn)在,圖像采集系統(tǒng)廣泛應(yīng)用于可視電話、遠(yuǎn)程監(jiān)控以及網(wǎng)絡(luò)會議等領(lǐng)域,而在各種圖像處理,視頻壓縮與傳輸系統(tǒng)中,它更是必不可少地組件.對圖像進(jìn)行采集、處理歷來都是一個(gè)熱點(diǎn),也是一個(gè)難點(diǎn).在眾多地圖像采集系統(tǒng)中,大多數(shù)都針對特定地用途選擇專用地?cái)z像頭和視頻處理芯片,這種傳統(tǒng)地方式存在不易購買、可擴(kuò)展性不強(qiáng)、價(jià)格昂貴等問題.近年來,對圖像采集系統(tǒng)地設(shè)計(jì)要求日益提高,在日常生活、科學(xué)研究、工業(yè)生產(chǎn)中,都迫切需要廉價(jià)、易擴(kuò)展、功能強(qiáng)勁地圖像采集系統(tǒng)

8、.隨著計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)地飛速發(fā)展,普通PC所使用地USB攝像頭由于價(jià)格低廉、容易安裝使用等優(yōu)點(diǎn)得到迅速普及.然而這種利用通用PC機(jī)來進(jìn)行圖像采集地方式會隨之帶來體積大、成本高、無法嵌入對象內(nèi)部等顯著問題.如何將USB攝像頭應(yīng)用于基于單片機(jī)地嵌入式系統(tǒng)中,構(gòu)建出低成本、高性能地圖像采集系統(tǒng)越來越引起人們地廣泛關(guān)注.然而在PC上使用USB攝像頭時(shí)通常都需要安裝由其生產(chǎn)廠商提供地Windows操作系統(tǒng)下地專用驅(qū)動程序,想在單片機(jī)系統(tǒng)中直接應(yīng)用非常困難.近年來由于網(wǎng)絡(luò)、通信、多媒體技術(shù)地飛速發(fā)展,對高性能嵌入式CPU地需求十分迫切,為順應(yīng)這種潮流,各種高速地32位嵌入式微處理器應(yīng)運(yùn)而生,使得嵌入式系統(tǒng)

9、又進(jìn)入了一個(gè)新地歷史發(fā)展階段.在嵌入式系統(tǒng)地高端應(yīng)用中,進(jìn)行多年技術(shù)準(zhǔn)備地ARM公司適時(shí)推出了32位地ARM系列微處理器,以明顯地性能優(yōu)勢迅速奠定了其主流地位.在無線通信、網(wǎng)絡(luò)及消費(fèi)類電子產(chǎn)品中ARM都獲得了廣泛地應(yīng)用.在流行地?cái)?shù)字音頻播放器、數(shù)字機(jī)頂盒和游戲機(jī)中,都已經(jīng)從采用DSP,轉(zhuǎn)而大量利用ARM技術(shù)來實(shí)現(xiàn).一直以來普通PC所使用地USB攝像頭要想在嵌入式系統(tǒng)中應(yīng)用十分困難.但隨著嵌入式操作系統(tǒng)地廣泛應(yīng)用,嵌入式系統(tǒng)與PC機(jī)上地開發(fā)技術(shù)漸漸融合,加上近年來中星微等免驅(qū)攝像頭芯片地推出,使得這個(gè)難題逐漸有了解決之道.由于ARM在嵌入式微處理器市場上地主導(dǎo)地位,所以本課題將研究如何把USB攝

10、像頭應(yīng)用到基于ARM地嵌入式系統(tǒng)中基于ARM和Linux操作系統(tǒng)地應(yīng)用開發(fā)是近年來最為流行地一門新技術(shù),被公認(rèn)為是嵌入式系統(tǒng)地重要發(fā)展方向.本文基于ARMCortexA8架構(gòu)地s5pcl00芯片強(qiáng)大而穩(wěn)定地性能,linuX操作系統(tǒng)對USB地強(qiáng)大支持,結(jié)合LCD顯示屏構(gòu)建圖像采集系統(tǒng),通過USB攝像頭對圖像采集,經(jīng)由ARM處理器傳輸控制顯示在顯示器上.第2章相關(guān)器件2.1攝像頭攝像頭(CAMERA)又稱為電腦相機(jī),電腦眼等,是一種視頻輸入設(shè)備,被廣泛地運(yùn)用于視頻會議,遠(yuǎn)程醫(yī)療及實(shí)時(shí)監(jiān)控等方面.攝像頭地工作原理大致為:景物通過鏡頭(LENS)生成地光學(xué)圖像投射到圖像傳感器表面上,然后轉(zhuǎn)為電信號,經(jīng)

11、過A/D2(模數(shù)轉(zhuǎn)換)轉(zhuǎn)換后變?yōu)閿?shù)字圖像信號,再送到數(shù)字信號處理芯片(DSP)中加工處理,再通過USB接傳輸?shù)诫娔X中處理,通過顯示器就可以看到圖像了.如圖1-1所示:執(zhí)慷頭工件流怪圖:斃AVD冋崔口顯示器景物團(tuán)像傳爾一數(shù)字信號拠?yán)砣鬽圖1-1攝像頭工作流程攝像頭可分為數(shù)字?jǐn)z像頭和模擬攝像頭兩大類.數(shù)字?jǐn)z像頭可以將視頻采集設(shè)備產(chǎn)生地模擬視頻信號轉(zhuǎn)換成數(shù)字信號,進(jìn)而將其儲存在計(jì)算機(jī)里.模擬攝像頭捕捉到地視頻信號必須經(jīng)過特定地視頻捕捉卡將模擬信號轉(zhuǎn)換成數(shù)字模式,并加以壓縮后才可以轉(zhuǎn)換到計(jì)算機(jī)上運(yùn)用.數(shù)字?jǐn)z像頭可以直接捕捉影像,然后通過串、并或者USB接傳到計(jì)算機(jī)里.雖然攝像頭看起來很簡單,但攝像頭從

12、誕生以后不斷在進(jìn)行著巨大變化,在此期間,PC攝像頭共經(jīng)歷了三次行業(yè)革命性技術(shù)發(fā)展.1)、USB1.1接攝像頭到USB2.0接攝像頭地技術(shù)化變革從圖1-1看,同一臺PC上攝像頭地成像效果主要受到圖像傳感器、數(shù)字信號處理芯片和USB接三個(gè)方面地影響.其中,USB接地帶寬可以說是圖像傳感器和數(shù)字信號處理芯片無法逾越地瓶頸,如果不改進(jìn)USB接,其他內(nèi)部芯片地?cái)?shù)據(jù)傳輸量就必然受到限制,所以,最先發(fā)起地?cái)z像頭技術(shù)變革就是USB接地全面升級.相比USB1.1接快40倍傳輸速率地USB2.0接,推動了高清數(shù)碼攝像頭地普及應(yīng)用,加上同期寬帶地飛速發(fā)展,電腦攝像頭地本地和遠(yuǎn)程視頻效果都有了大幅度提升電腦攝像頭從U

13、SB1.1接升級成USB.20接,也成為了一次里程碑式地行業(yè)技術(shù)提升.2)、需要驅(qū)動地?cái)z像頭到免驅(qū)攝像頭地人性化變革自USB2.0接攝像頭面世以來,電腦攝像頭從10萬硬件像素飚升到200萬硬件像素.此時(shí),電腦攝像頭地芯片方案已經(jīng)超過了100多種!電腦攝像頭地芯片方案多達(dá)百種,導(dǎo)致驅(qū)動地重裝或者升級頻率給人們帶來極大地不便.2007年1月,WindowsVISTA系統(tǒng)面世,除了炫麗地界面之外,它還包含了USBVideoClass(簡稱UVC)功能,其內(nèi)容為:電腦硬件不需要安裝驅(qū)動程序地情況下即插即用.正是在這種背景下,免驅(qū)攝像頭蓬勃發(fā)展.免驅(qū)攝像頭成為電腦攝像頭行業(yè)地第二次技術(shù)性革命,這次變革堪

14、稱人性化變革.3)、免驅(qū)攝像頭到HDCAM攝像頭地應(yīng)用變革視頻捕獲能力是用戶最為關(guān)心地功能之一,很多廠家都聲稱能達(dá)到30幀/秒地視頻捕獲能力,但實(shí)際使用時(shí)并不能盡如人意.視頻捕獲對電腦地要求比較高,如CPU地處理能力要足夠地快等.其次對畫面要求大小和清晰度地不同,捕獲能力也不盡相同.對于很多廠商宣傳地視頻捕獲速度,只是一種理論指標(biāo).用戶應(yīng)根據(jù)自己地切實(shí)需要,選擇合適地產(chǎn)品以達(dá)到預(yù)期地效果.如今地電腦攝像頭已經(jīng)具備了免驅(qū)、高清等功能,但在實(shí)際應(yīng)用中,消費(fèi)者還是發(fā)現(xiàn)了許多技術(shù)問題:電腦攝像頭在室外只能看到白茫茫地一片,電腦攝像頭幀數(shù)過慢而產(chǎn)生模糊地現(xiàn)象,俗稱鬼影.為了滿足人們不斷提升地應(yīng)用需求,2

15、008年12月,藍(lán)色妖姬率先在電腦攝像頭行業(yè)發(fā)布擁有速影技術(shù)SpeedKing地高清攝像頭HDCAM.在應(yīng)用層面,速影攝像頭HDCAM與普通攝像頭相比:1.成像速度提升4倍,由30幀升級到120幀;2提供雙通道成像模式(室內(nèi)/戶外效果平衡,解決普通攝像頭戶外見光死問題)2.2顯示器顯示器(display)通常也被稱為監(jiān)視器.顯示器是屬于電腦地I/O設(shè)備,即輸入輸出設(shè)備.它可以分為CRT、LCD等多種.它是一種將一定地電子文件通過特定地傳輸設(shè)備顯示到屏幕上再反射到人眼地顯示工具.最初地顯示器為機(jī)械式指示裝置.例如,老式電壓、電流測試器,它們使用指針指示電壓電流大?。话l(fā)展到后來地電子顯示器件(如發(fā)

16、光二極管、數(shù)碼管、熒光屏、液晶顯示器等).機(jī)械式指示裝置類顯示器已經(jīng)逐漸退出了歷史,取而代之地是電子類顯示器,它們能夠直觀地反映給用戶所需求地信息(如發(fā)光二極管能夠用來指示一個(gè)電子產(chǎn)品是否正常工作等).電子類顯示器件可分為:陰極射線管(CRT)、發(fā)光二級管(LEDLightEmittingDiode)、液晶顯示器(LCDLiquidCrystalDisplay)、等離子顯示板(PDPPlasmaDisplayPanel、有機(jī)發(fā)光二極管(OLEDOrganicLight-EmittingDiode).發(fā)光二極管(LED)屬于半導(dǎo)體器件,是主動發(fā)光器件.因?yàn)榘雽?dǎo)體易于在很小地晶片上集成大規(guī)模電路,

17、所以一個(gè)LED可以制造得很小,以至于LED可以制成顯示屏,也可以作為燈使用;LED使用地是冷光源技術(shù),發(fā)熱量比普通地照明燈低很多;LED耗電量相當(dāng)?shù)?,一般LED地工作電壓是2.0-3.6V工作電流0.02-0.03A即其耗能不超過0.1W;同時(shí)LED地光源可以利用紅、綠、藍(lán)三基色原理,在計(jì)算機(jī)技術(shù)控制下使這三種顏色具有256級地灰度并且任意混合,即可以產(chǎn)生256乂56乂56=16777216種顏色,形成不同地光色組合,可以實(shí)現(xiàn)豐富多彩地動態(tài)變化效果及各種色彩豐富地圖像.液晶顯示器(LCD)主要是由一種叫做液晶(液晶通常是固態(tài),溫度上升到清亮點(diǎn)而成為透明液態(tài).其在某個(gè)溫度范圍內(nèi)既有液體地流動性又

18、有晶體地雙折射性.液晶是不同于通常地氣態(tài)、固態(tài)和液態(tài).顯示原理:沒有加電時(shí)其內(nèi)部排列無規(guī)則,一旦上電,其將會按照一定地規(guī)則排列,隨著加電不同而排列規(guī)律改變地物質(zhì)組成目前市面上地LCD液晶顯示器主要有兩類:DSTN(duascantwistechematiq雙掃描交錯液晶顯示)和TFT(thinfilmtransistor薄膜晶體管顯示),也就是被動矩陣(無源矩陣)和主動矩陣(有源矩陣)兩種.其中DSTN包括了扭曲向列型(TN-TwistedNematic);超扭曲向列型(STN-SuperTN);雙層超扭曲向列型(DSTN-DualScanTortuosityNomographTN-LCD、S

19、TN-LCD和DSYN-LCD地基本顯示原理都相同,只是液晶分子地扭曲角度不同而已.STN-LCD地液晶分子扭曲角度為180度甚至270度.而TFT地液晶顯示器較為復(fù)雜,主要是由:螢光管、導(dǎo)光板、偏光板、濾光板、玻璃基板、配向膜、液晶材料、薄模式晶體管等等構(gòu)成.首先,液晶顯示器必須先利用背光源,也就是螢光燈管投射出光源,這些光源會先經(jīng)過一個(gè)偏光板然后再經(jīng)過液晶.這時(shí)液晶分子地排列方式就會改變穿透液晶地光線角度,然后這些光線還必須經(jīng)過前方彩色地濾光膜與另一塊偏光板.因此只要改變刺激液晶地電壓值就可以控制最后出現(xiàn)地光線強(qiáng)度與色彩,這樣就能在液晶面板上顯示出不同色調(diào)地顏色組合了.等離子顯示板(PDP

20、PlasmaDisplayPanel)采用等離子管作為發(fā)光元件,屏幕上地每一個(gè)等離子管對應(yīng)了一個(gè)像素點(diǎn),屏幕是以玻璃作為基板,基板間隔一定距離,四周經(jīng)過氣密性地封接形成了一個(gè)個(gè)地放電空間.放電空間內(nèi)充入氖、氙等混合惰性氣體作為工作媒質(zhì).在兩塊玻璃基板內(nèi)側(cè)表面上涂有金屬氧化物導(dǎo)電薄膜用以作為激勵電極.當(dāng)向電極加電壓時(shí),放電空間內(nèi)地混合氣體會發(fā)生等離子體放電現(xiàn)象.氣體等離子體放電會產(chǎn)生紫外線,紫外線又會激發(fā)熒光屏,然后熒光屏發(fā)射出可見光,顯現(xiàn)出圖像.PDP地優(yōu)點(diǎn):超寬地視角、純平面無失真、不受電磁干擾、亮度均勻、圖像清晰、全數(shù)碼顯示,但它地致命缺點(diǎn)耗電量相當(dāng)大,因此發(fā)熱量也相當(dāng)大.所以在很多場合不

21、宜用PDP.有機(jī)發(fā)光二極管(OLED)是指有機(jī)半導(dǎo)體材料和發(fā)光材料在電場驅(qū)動下,通過載流子注入和復(fù)合導(dǎo)致發(fā)光地現(xiàn)象其原理是用ITO透明電極和金屬電極分別作為器件地陽極和陰極,在一定電壓驅(qū)動下,電子和空穴分別從陰極和陽極注入到電子和空穴傳輸層,電子和空穴分別經(jīng)過電子和空穴傳輸層遷移到發(fā)光層,并在發(fā)光層中相遇,形成激子并使發(fā)光分子激發(fā),后者經(jīng)過輻射弛豫而發(fā)出可見光.輻射光可從ITO一側(cè)觀察到,金屬電極膜也起了反射層作用.OLED優(yōu)點(diǎn):OLED可以自身發(fā)光、OLED沒有視角范圍地限制,可視角度般可達(dá)到160度、OLED比LED更亮、OLED制造起來更加容易,但是其壽命有限,而且制造難度大成本高,OL

22、ED遇水會永久性地?fù)p壞.2.3ARM架構(gòu)ARM是AdvancedRISCMachines地縮寫,是嵌入式微處理器地一種.同時(shí)它還是一個(gè)公司地名字,成立于英國劍橋,主要出售ARM芯片設(shè)計(jì)技術(shù)授權(quán)采用ARM知識產(chǎn)權(quán)0P)核地微處理器都被稱為ARM處理器,如三星公司生產(chǎn)地S3C44B0X、$3C2410A,NXP地LPC系列,以及ATMEL、ST、Freescale等公司推出地各種ARM處理器,適用于多種領(lǐng)域,比如嵌入控制、消費(fèi)/教育類多媒體、DSP和移動式應(yīng)用等.ARM芯片地特點(diǎn)是:1)、體積小、低功耗、低成本、高性能;2)支持Thumb(16位)/ARM(32位)雙指令集,很好地兼容8位/16位

23、器件;3)、大量使用寄存器,指令執(zhí)行速度更快;4)、大多數(shù)數(shù)據(jù)操作都在寄存器中完成;5)、尋址方式靈活簡單,執(zhí)行效率高;6)、指令長度固定.ARM微處理器地在較新地體系結(jié)構(gòu)中支持兩種指令集:ARM指令集和Thumb指令集.其中,ARM指令為32位地長度,Thumb指令為16位長度.Thumb指令集為ARM指令集地功能子集,但與等價(jià)地ARM代碼相比較,可節(jié)省30%一40%以上地存儲空間,同時(shí)具備32位代碼地所有優(yōu)點(diǎn).ARM架構(gòu)包含了下述RISC特性:讀取/儲存架構(gòu)不支援地址不對齊內(nèi)存存?。ˋRMv6內(nèi)核現(xiàn)已支援)正交指令集(任意存取指令可以任意地尋址方式存取數(shù)據(jù)Orthogonalinstruc

24、tionset)大量地16x32-bit寄存器陣列(registefi固定地32bits操作碼(opcode)長度,降低編碼數(shù)量所產(chǎn)生地耗費(fèi),減輕解碼和流水線化地負(fù)擔(dān)大多均為一個(gè)CPU周期執(zhí)行.為了補(bǔ)強(qiáng)這種簡單地設(shè)計(jì)方式,相較于同時(shí)期地處理器如Intel8028和Motorola68020還多加了一些特殊設(shè)計(jì):大部分指令可以條件式地執(zhí)行,降低在分支時(shí)產(chǎn)生地負(fù)重,彌補(bǔ)分支預(yù)測器(branchpredictc)地不足.算數(shù)指令只會在要求時(shí)更改條件編碼(conditioncode)32-bit筒型位移器(barrelshift)可用來執(zhí)行大部分地算數(shù)指令和尋址計(jì)算而不會損失效能強(qiáng)大地索引尋址模式(a

25、ddressingmode)精簡但快速地雙優(yōu)先級中斷子系統(tǒng),具有可切換地暫存器組有個(gè)附加在ARM設(shè)計(jì)中好玩地東西,就是使用一個(gè)4-bit條件編碼在每個(gè)指令前頭,表示每條指令地執(zhí)行是否為有條件式地,這大大地減低了在內(nèi)存存取指令時(shí)用到地編碼位.目前,有關(guān)ARM處理器應(yīng)用較多地有ARM7、ARM9、ARM9E、ARM10及StrongARM等系列本文中選用地是ARMv7-A架構(gòu)地Cortex-A8內(nèi)核地芯片.ARMCortex-A8處理器是第一款基于ARMv7架構(gòu)地應(yīng)用處理器,并且是有史以來ARM開發(fā)地性能最高、最具功率效率地處理器.ARMCortex-A8處理器復(fù)雜地流水線架構(gòu)基于雙對稱地,順序發(fā)

26、射地,13級流水線,帶有先進(jìn)地動態(tài)分支預(yù)測,可實(shí)現(xiàn)2.0DMIPS/MHz.Cortex-A8處理器地速率可以在600MHz到超過1GHz地范圍內(nèi)調(diào)節(jié),能夠滿足那些需要工作在300mW以下地功耗優(yōu)化地移動設(shè)備地要求;以及滿足那些需要2000DhrystoneMIPS地性能優(yōu)化地消費(fèi)類應(yīng)用地要求.第3章總體設(shè)計(jì)3.1功能需求根據(jù)工程需求,要實(shí)現(xiàn)地圖像采集系統(tǒng)應(yīng)該具有如下地功能:1.高性能:設(shè)計(jì)是應(yīng)盡量減少不必要地模塊以及算法,使系統(tǒng)在對硬件地依賴性上做到盡力最低.高2.可靠性:由于圖像采集系統(tǒng)會運(yùn)用在各種環(huán)境下,又餓環(huán)境很惡劣,因此需要系統(tǒng)具有高可靠性高穩(wěn)定性以及長期連續(xù)工作地能力.實(shí)3.現(xiàn)對采

27、集現(xiàn)場地圖像實(shí)時(shí)采集.實(shí)4.現(xiàn)將實(shí)時(shí)采集地圖像顯示在液晶顯示屏上.5.采集地圖像應(yīng)該滿足后期圖像處理地需求.3.2工作原理如圖2-1所示,在采集圖像時(shí),首先光線會照射到被拍攝物體上,物體將光線反射到USB攝像頭中地CMOS傳感器,傳感器中地感光二極管接收到光照,產(chǎn)生模擬地電信號,經(jīng)過預(yù)中放電路放大、AGC自動增益控制,于由圖像處理芯片處理地是數(shù)字信號,所以經(jīng)模數(shù)轉(zhuǎn)換到圖像數(shù)字信號處理IC(DSP).同步信號發(fā)生器主要產(chǎn)生同步時(shí)鐘信號(由晶體振蕩電路來完成),即產(chǎn)生垂直和水平地掃描驅(qū)動信號,到圖像處理IC然后,經(jīng)數(shù)模轉(zhuǎn)換電路通過輸出端子輸出一個(gè)標(biāo)準(zhǔn)地復(fù)合視頻信號,按照寄存器中地配置處理以后地圖像

28、數(shù)據(jù)通過ARM芯片將圖像格式轉(zhuǎn)換后控制存入內(nèi)存中緩沖,當(dāng)采集完一幀數(shù)據(jù)后,處理器從緩沖數(shù)據(jù)中讀取數(shù)據(jù)然后通過顯示接顯示到液晶顯示屏上.被攝物體USB攝像頭ARM處理器LCD液晶顯示屏圖3-1系統(tǒng)框圖3.3軟硬件規(guī)劃3.3.1硬件規(guī)劃硬件部分包括嵌入式處理器、圖像采集模塊、圖像顯示模塊.嵌入式處理器是整個(gè)嵌入式系統(tǒng)地核心部分.目前世界上地嵌入式處理器早已超過1000種,不同地處理器有各自不同地功能以及優(yōu)勢.低成本、低功耗、高性能是嵌入式應(yīng)用地首要要求.ARMCortex-A8控制器是第一款基于ARMv7架構(gòu)地應(yīng)用處理器,并且是有史以來ARM開發(fā)地性能最高、最具功率效率地處理器本文選擇三星公司生產(chǎn)

29、地s5pcl00芯片作為本工程地主控芯片.并且使用華清遠(yuǎn)見所生產(chǎn)地FS_s5pcl00開發(fā)板作為硬件平臺,本文忽略無用地模塊,模擬實(shí)現(xiàn)嵌入式最小系統(tǒng).圖像采集方面,本文選擇地是CMOSUSB攝像頭,選擇這類攝像頭地原因是USB攝像頭成本低,極其易于購買,使用方便.CMOS攝像頭可以直接輸出數(shù)字信號,方便對于圖像地采集以及處理,在短時(shí)間內(nèi)完成系統(tǒng)地功能設(shè)計(jì).圖像顯示方面,選擇LCD液晶顯示屏,滿足顯示成本并且達(dá)到顯示要求.3.3.2軟件規(guī)劃軟件是針對需求而編寫地適合用于本系統(tǒng)地專用程序,本設(shè)計(jì)初步將其大體分為底層驅(qū)動程序以及頂層業(yè)務(wù)程序本文中頂層軟件是基于Linux操作系統(tǒng)之來設(shè)計(jì),用Linux

30、C語言實(shí)現(xiàn).首先,基于操作系地軟件開發(fā)更易于程序地研發(fā)設(shè)計(jì).本文中,基于開發(fā)板地工程設(shè)計(jì)需要搭建嵌入式開發(fā)平臺,首先需要燒寫與開發(fā)板適合地Bootloader對開發(fā)板硬件進(jìn)行初始化,然后就是嵌入式開發(fā)地核心:進(jìn)行文件系統(tǒng)、LCD以及USB&攝像頭驅(qū)動地移植.對于PC機(jī)開發(fā)環(huán)境,需要安裝嵌入式交叉編譯工具鏈.在此基礎(chǔ)之上設(shè)計(jì)頂層軟件.首先需要移植關(guān)于圖像操作地函數(shù)庫一jli,然后通過攝像頭驅(qū)動v4l2提供地函數(shù)以及命令對攝像頭操作,包括圖像采集,對圖像地格式轉(zhuǎn)換,然后通過操作幀緩存進(jìn)行圖像實(shí)時(shí)顯示控制.這樣設(shè)計(jì),將硬件地初始化全部固定在底層驅(qū)動操作,在程序編寫時(shí)就無需設(shè)計(jì)硬件,不僅易于程序設(shè)計(jì),

31、而且很好地實(shí)現(xiàn)了層次隔離劃分,分工明確.第4章硬件設(shè)計(jì)4.1開發(fā)板&主控芯片s5pcl004.1.1s5pc10芯片介纟召隨著ARM公司在ARM11內(nèi)核架構(gòu)基礎(chǔ)上,升級推出了第一代基于ARMv7指令集地Cortex-A8內(nèi)核架構(gòu)之后,三星也及時(shí)跟進(jìn)推出了基于Cortex-A8內(nèi)核架構(gòu)地S5PC100型處理器除了內(nèi)核架構(gòu)更為先進(jìn)之外,三星S5PC100也采用了更為先進(jìn)地65nm工藝制程技術(shù),核心主頻可達(dá)667MHz(最高可達(dá)833MHz).如圖4-1是s5pc100架構(gòu)圖解.S5PC1OO處理器采用64位內(nèi)部總線構(gòu)架,包括強(qiáng)大地硬件加速器,如:動態(tài)視頻處理,顯示控制和縮放.支持多種格式地硬件編解

32、碼MPEF1/2/4、H263/H264、CV-1、D1vX.其硬件加速功能支持實(shí)時(shí)地視頻會議和模擬電視輸出,支持NTSCDPAL模式地HDMI.提供了24bitLCD接口、TVout接口、Camera輸入接口、4路串口、SD卡接口、SPI、1OOM網(wǎng)口、USB2.00TG接口,USBHost接、音頻輸入輸出接、按鍵接口、12C接等硬件資源,具有更高地主頻和更豐富外設(shè),能適用于對性能和處理能力有更高要求地嵌入式系統(tǒng)應(yīng)用場合.UTS5PC100專為消費(fèi)類電子、工業(yè)控制、車載導(dǎo)航、行業(yè)PDA等電子產(chǎn)品地開發(fā)而設(shè)計(jì),主要供廣大企業(yè)用戶進(jìn)行產(chǎn)品前期軟硬件性能評估驗(yàn)證、設(shè)計(jì)參考用.SystemPerip

33、heralHTCPLLjc#TimerwkthPWM(4-ch)WatchdogTimeiDMA(24-chIILrXV_r_rItrootOM-1iuelitservicenfsrestarthuttingdounMFSdaemon:OKhuttingdounNFSmountd:OKShuttingdounMFSquotas:OKhuttingdounMFSservices:OKStartingNFSservices:OKStartingMFSquotas:OKStartingMFSmountd:OKtoppingRPCidmapd:OKStartingRPCidmapd:OKStartin

34、gMFSdaemon:OK|root(?M-1iuelit圖5-3NFS服務(wù)啟動成功效果圖TFTP是一個(gè)傳輸文件地簡單協(xié)議,它基于UDP協(xié)議而實(shí)現(xiàn),但是我們也能確定有些TFTP協(xié)議是基于其它傳輸協(xié)議完成地.此協(xié)議設(shè)計(jì)地時(shí)候是進(jìn)行小文件傳輸?shù)匾虼怂痪邆渫ǔ5谾TP地許多功能,它只能從文件服務(wù)器上獲得或?qū)懭胛募?,不能列出目錄,不進(jìn)行認(rèn)證,它傳輸8位數(shù)據(jù).傳輸中有三種模式:netasci,i這是8位地ASCII碼形式,另一種是octet這是8位源數(shù)據(jù)類型;最后一種mail已經(jīng)不再支持,它將返回地?cái)?shù)據(jù)直接返回給用戶而不是保存為文件.為系統(tǒng)移植時(shí)傳輸文件搭建服務(wù)器.TFTP服務(wù)器搭建步驟:(1)在線安

35、裝命令:yuminstallxinetdtftptftp-server(2)修改配(3)重啟服務(wù)(4)測試:Bootload移植在嵌入式系統(tǒng)中,Bootloader地作用與PC機(jī)上地BIOS類似,通過Bootloade可以完成對系統(tǒng)板上地主要部件如CPU、SDRAM、Flash串行門等進(jìn)行初始化,也可以下載文件到系統(tǒng)板上,對Flash進(jìn)行擦除與編程.當(dāng)運(yùn)行操作系統(tǒng)時(shí),它會在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行,通過它,可以分配內(nèi)存空間地映射,從而將系統(tǒng)地軟硬件環(huán)境帶到一個(gè)合適地狀態(tài),以便為最終調(diào)用操作系統(tǒng)準(zhǔn)備好正確地環(huán)境通常,Bootloader是依賴于硬件而實(shí)現(xiàn)地,特別是在嵌入式系統(tǒng)中因此,在嵌入式系統(tǒng)

36、里建立一個(gè)通用地Bootloader幾乎是不可能地,但是,仍然可以對Bootloader歸納出一些通用地概念來以指導(dǎo)用戶特定地Bootloade設(shè)計(jì)與實(shí)現(xiàn)正確建立Linux移植地前提條件是具備一個(gè)與Linux內(nèi)核配套地、易于使用地Bootloader它能夠正確完成硬件系統(tǒng)地初始化和Linux系統(tǒng)引導(dǎo).ARM處理器體系中,嵌入式Linux下常使用地Bootloader包括:Blob、vivi、UBOOt、ARMbOOt、RedBoot等.本系統(tǒng)采用uboot.然后,編譯Bootloader在uboot目錄下配置系統(tǒng)相關(guān)地設(shè)置,執(zhí)行:makemenuconfig再執(zhí)行make,就可以在當(dāng)前目錄下生

37、成u-boot.bi在初次燒寫u-boot時(shí),系統(tǒng)利用usb線來燒錄,整個(gè)過程需要5分鐘左右.在以后地?zé)龑懼校话憷胾boot本身來燒錄設(shè)置好tftp|服務(wù)器ip開發(fā)板ip利用tft傳輸u-boot.bi文件到開發(fā)板通過nanderase擦除,用nandwrite寫入便可更新uboot可以提高燒寫地效率.LinU內(nèi)核移植與配置Linux2.6.3內(nèi)核配置Linux內(nèi)核地重要地特點(diǎn)是可移植性(Portabili,y支持大多數(shù)地硬件平臺,在大多數(shù)體系結(jié)構(gòu)上都可以運(yùn)行.Linux26地內(nèi)核吸收了一些新技術(shù),在性能、可量測性、支持和可用性方面不斷提高.本系統(tǒng)移植地內(nèi)核為其中地一個(gè)版本Linux2.6

38、.35從網(wǎng)站上可以下載內(nèi)核linux2.6.35.tar.地Z源碼包,使用命令tar-zvflinux2.6.35.ta將b內(nèi)2亥解壓縮到指定地目錄下.Linux內(nèi)核源代碼是通過Makefile組織編譯地,進(jìn)入該目錄,用vi編輯器打開Makefile文件,修改其中內(nèi)容:ARCH二arm和CROSSCOMPILE二解壓目錄/arm-none-linux-gnuea,ARCH是指定此內(nèi)核地體系結(jié)構(gòu)是arm類型,CROSSCOMPILE指定交叉編譯器地類型為arm-none-linux-gnueabi-這樣生成地映像文件就能在ARM上運(yùn)行.在真正移植內(nèi)核到ARM平臺之前,還需要對內(nèi)核進(jìn)行配置和移植相

39、應(yīng)地設(shè)備驅(qū)動程序.Linux2.6.3內(nèi)核配置編譯在眾多配置界面中makexconfig地界面最為友好,如果機(jī)器可以使用Xwindow,推薦使用這個(gè)命令,如果不能使用Xwin-dow,那么就可以使用makemenueonfig.界面雖然比上面一個(gè)差點(diǎn),總比makeconfig地要好多了.所有內(nèi)核配置菜單都是通過config.經(jīng)由不同腳本解釋器產(chǎn)生.config在內(nèi)核配置完成后就就會在當(dāng)前目錄下產(chǎn)生一個(gè).config*配置文件,當(dāng)然也可以直接修改此文件來配置內(nèi)核.選擇相應(yīng)地配置時(shí),有三種選擇,它們分別代表地含義如下:Y為將該功能編譯進(jìn)內(nèi)核;N為不將該功能編譯進(jìn)內(nèi)核;M為將該功能編譯成可以在需要時(shí)

40、動態(tài)插入到內(nèi)核中地模塊.在配置時(shí),大部分選項(xiàng)可以使用其缺省值,只有小部分需要根據(jù)用戶不同需要選擇.選擇地原則是將與內(nèi)核其它部分關(guān)系較遠(yuǎn)且不經(jīng)常使用地功能代碼編譯成為可加載模塊,以減小內(nèi)核地長度,減小內(nèi)核消耗地內(nèi)存,簡化該功能相應(yīng)地環(huán)境改變時(shí)對內(nèi)核地影響;不需要地功能就不要選,與內(nèi)核點(diǎn)緊密且經(jīng)常使用地部分功能代碼直接編譯到內(nèi)核中.配置完畢后用make命令編譯內(nèi)核,內(nèi)核地編譯就是一個(gè)非常簡單地過程.執(zhí)行:1)#makeclean這條命令是在正式編譯你地內(nèi)核之前先把環(huán)境給清理干凈,保證沒有不正確地依賴文件存在.#makedep:由于內(nèi)核源碼樹中地大多數(shù)文件都與一些頭文件有依賴關(guān)系,因此要將內(nèi)核源碼樹

41、中每個(gè)子目錄產(chǎn)生地“depend件建立起依賴關(guān)系.#makezlmage:建立壓縮地linu內(nèi)核映像編譯完畢,在arch/arm/boot目錄下將會生成ARMLinux內(nèi)核映像文件zlmage,這就是將要移植到目標(biāo)機(jī)地內(nèi)核映像文件#makemodules:這條命令是編譯在配置時(shí)選擇為模塊地,即選項(xiàng)前為M地.如果內(nèi)核配置選項(xiàng)中有選擇編譯為模塊地,就需要此命令.如果將來還要對內(nèi)核重新進(jìn)行編譯,則需執(zhí)行命令“makedistclean去除依賴關(guān)系并清除以前編譯產(chǎn)生地文件,然后重復(fù)上述步驟即可.內(nèi)核映像分為壓縮地內(nèi)核映像和未壓縮地內(nèi)核映像,壓縮地內(nèi)核映像通常名為zlmage,位于arch/arm/bo

42、ot目錄中.而未壓縮地內(nèi)核映像通常名為vmlinux位于源碼樹地根目錄中把這個(gè)映像文件下載到開發(fā)板中,開發(fā)板提供了一套比較完整地通用系統(tǒng)地外圍設(shè)備,配置bootloadete啟動參數(shù)就能運(yùn)行起來linux2.6地內(nèi)核.LinUX件系統(tǒng)(1)文件系統(tǒng)簡述文件系統(tǒng)是操作系統(tǒng)用于明確磁盤或分區(qū)上地文件地方法和數(shù)據(jù)結(jié)構(gòu);即在磁盤上組織文件地方法.也指用于存儲文件地磁盤或分區(qū),或文件系統(tǒng)種類.操作系統(tǒng)中負(fù)責(zé)管理和存儲文件信息地軟件機(jī)構(gòu)稱為文件管理系統(tǒng),簡稱文件系統(tǒng).文件系統(tǒng)由三部分組成:與文件管理有關(guān)軟件、被管理文件以及實(shí)施文件管理所需數(shù)據(jù)結(jié)構(gòu).從系統(tǒng)角度來看,文件系統(tǒng)是對文件存儲器空間進(jìn)行組織和分配,

43、負(fù)責(zé)文件存儲并對存入地文件進(jìn)行保護(hù)和檢索地系統(tǒng).具體地說,它負(fù)責(zé)為用戶建立文件,存入、讀出、修改、轉(zhuǎn)儲文件,控制文件地存取,當(dāng)用戶不再使用時(shí)撤銷文件等.Linux地文件結(jié)構(gòu)是單個(gè)地樹狀結(jié)構(gòu).可以用tre進(jìn)行展示.在Ubuntu下安裝tree(sudoapt-getinstall,并可通過命令來查看.圖5-4目錄分區(qū)示例(2)文件系統(tǒng)制作1)創(chuàng)建根文件目錄進(jìn)入到/opt/studyari目錄,新建建立根文件系統(tǒng)目錄地腳本文件create_rootfs_ba,sh使用命令chmod+xcreate_rootfs_b改!sS文件地可執(zhí)行權(quán)限,./create_rootfs_b運(yùn)行腳本,就完成了根文件

44、系統(tǒng)目錄地創(chuàng)建.i建立動態(tài)鏈接庫動態(tài)鏈接庫直接用友善之臂地,先解壓友善之臂地根文件包,拷貝lib地內(nèi)容到新建地根文件目錄lib內(nèi).ii交叉編譯BosyboxBosybox是一個(gè)遵循GPLv2協(xié)議地開源工程,它在編寫過程總對文件大小進(jìn)行優(yōu)化,并考慮了系統(tǒng)資源有限(比如內(nèi)存等)地情況,使用Busybox可以自動生成根文件系統(tǒng)所需地bin,sbin、usig錄和linuxr文件.2)安裝mkfs.jff地工具.i安裝MTD工具:本文使用地是mtd-snapshot-20050519.tar.:bz2ii安裝zli庫ii制作JFFS2文件鏡像mkfs.jffs2-r/source/rootfs-oro

45、otfs.jffs2-e0 x4000-ad=0 x800000這樣就會生成一個(gè)8M大小地rootfs.jf地鏡像,它也正是JFFS2文件系統(tǒng)地鏡像,關(guān)于這個(gè)命令行里地選項(xiàng)地內(nèi)容,可以用manamkfs.jff命令來查看內(nèi)容.將rootf文件拷貝到NFS工作目錄中.開發(fā)板上設(shè)置啟動參數(shù)掛載文件系統(tǒng).將rootfs.jf文件下載到開發(fā)板,固化之后修改啟動參數(shù)便可.5.2lint設(shè)備驅(qū)動移植5.2.1基礎(chǔ)知識驅(qū)動硬件是操作系統(tǒng)最基本地功能,它為應(yīng)用程序提供了統(tǒng)一地方式來訪問各種硬件設(shè)備.設(shè)備驅(qū)動程序?yàn)橛脩羝帘瘟烁鞣N各樣地硬件設(shè)備,是內(nèi)核地一部分,是操作系統(tǒng)最基本地組成部分,比如在Linux地內(nèi)核源

46、程序中設(shè)備驅(qū)動程序就占60%以上因此熟悉驅(qū)動地編寫是很重要地.Linux有兩種使用設(shè)備驅(qū)動程序地方式,分別是直接編譯到內(nèi)核中或在運(yùn)行時(shí)加載(也就是內(nèi)核模塊.操作系統(tǒng)是通過各種驅(qū)動程序來駕馭硬件設(shè)備地.本文中系統(tǒng)功能并不繁瑣,采用將驅(qū)動直接編譯進(jìn)內(nèi)核地方式,直接將硬件驅(qū)動程序?qū)懭雰?nèi)核地優(yōu)點(diǎn)是用戶可隨時(shí)對它進(jìn)行調(diào)用而無須安裝,大大簡化了操作.眾所周知,Linux把內(nèi)存分為內(nèi)核空間”和用戶空間操作系統(tǒng)內(nèi)核和驅(qū)動程序在內(nèi)核空間運(yùn)行,可以訪問內(nèi)核空間,也可通過系統(tǒng)調(diào)用訪問用戶空間.而用戶程序在用戶空間中運(yùn)行,只能訪問自己地用戶空間,對內(nèi)核空間地訪問具有嚴(yán)格地限制內(nèi)核模塊module,簡單地說就是提供了某

47、一項(xiàng)功能地程序段,這種程序段可以按需要隨時(shí)裝入內(nèi)核空間和從內(nèi)核空間卸載.因此內(nèi)核模塊是為了給內(nèi)核動態(tài)增減功能而設(shè)計(jì)地,并不僅限于驅(qū)動程序.但在一個(gè)操作系統(tǒng)中,驅(qū)動程序是變化最大地部分,所以往往把驅(qū)動程序編譯成內(nèi)核模塊.5.2.2設(shè)備介紹1)字符設(shè)備字符設(shè)備是指存取時(shí)沒有緩存地設(shè)備.可像文件一樣訪問字符設(shè)備,字符設(shè)備驅(qū)動程序負(fù)責(zé)實(shí)現(xiàn)這些行為這樣地驅(qū)動程序通常會實(shí)現(xiàn)open、closeread和write系統(tǒng)調(diào)用.系統(tǒng)控制臺和并就是字符設(shè)備地例子,它們可很好地用流地概念來描述通過文件系統(tǒng)節(jié)點(diǎn)可以訪問字符設(shè)備,字符設(shè)備和普通文件系統(tǒng)問地惟一區(qū)別是,普通文件允許在其上來回讀寫,而大多數(shù)字符設(shè)備僅僅是數(shù)

48、據(jù)通道,只能順序讀寫,當(dāng)然也存在這樣地字符設(shè)備看起來像一個(gè)數(shù)據(jù)區(qū),可來回讀取其中地?cái)?shù)據(jù).2)塊設(shè)備塊設(shè)備是與字符設(shè)備完全不同地另一種設(shè)備,它地服務(wù)對象不是以字節(jié)為單位,而是以一整塊地?cái)?shù)據(jù)為單位應(yīng)用程序在訪問字符設(shè)備時(shí)一般都采用直接讀寫地方法,但在訪問塊設(shè)備時(shí)就要通過系統(tǒng)里地緩沖區(qū)緩存了塊設(shè)備上一般都容納著文件系統(tǒng),可以通過指定要讀寫地?cái)?shù)據(jù)塊對塊設(shè)備進(jìn)行隨機(jī)訪問,這與字符設(shè)備形成鮮明地對比字符設(shè)備只允許進(jìn)行順序地非隨機(jī)訪問,因此它不能用于提供文件系統(tǒng)地存儲.Linux并不嚴(yán)格區(qū)分塊設(shè)備和字符設(shè)備,甚至提供應(yīng)甬程序應(yīng)用程序給它們地接都是相同地圖5-6示出了字符設(shè)備和塊設(shè)備地區(qū)別.3)網(wǎng)絡(luò)設(shè)備任何網(wǎng)

49、絡(luò)事務(wù)處理都是通過接口可與其它宿主交換數(shù)據(jù)地設(shè)備)實(shí)現(xiàn)地通常,接是一個(gè)硬件設(shè)備,但也有像loopback環(huán)回)接這樣地軟件工具.網(wǎng)絡(luò)接是由內(nèi)核網(wǎng)絡(luò)子系統(tǒng)驅(qū)動地,它負(fù)責(zé)發(fā)送和接收數(shù)據(jù)包由于網(wǎng)絡(luò)接不是面向流地設(shè)備,一所以它不能像/dev/tty那樣簡單地被映射到文件系統(tǒng)地節(jié)點(diǎn)上.Linux調(diào)用這些接地方式是給它們分配一個(gè)獨(dú)立地名字如ethO)這樣地名字在文件系統(tǒng)中并沒有對應(yīng)項(xiàng)內(nèi)核和網(wǎng)絡(luò)設(shè)備驅(qū)動程序之間地通信與字符設(shè)備驅(qū)動程序和塊設(shè)備驅(qū)動程序與內(nèi)核間地通信是完全不同地內(nèi)核不再調(diào)用read和write它調(diào)用與數(shù)據(jù)包傳送相關(guān)地函數(shù).4)其它設(shè)備Linux中還有一些設(shè)備不屬于以上3類,如SCSI設(shè)備驅(qū)動程

50、序.對于大多數(shù)情況來說,我們不太會編寫這類設(shè)備驅(qū)動程序,因此這里就不做研究了.5.2.3系統(tǒng)驅(qū)動在掌握了Linux設(shè)備驅(qū)動地基礎(chǔ)知識以后便可以開始進(jìn)行驅(qū)動地移植對比于PC地驅(qū)動,嵌入式Linux驅(qū)動程序經(jīng)過交叉編譯后運(yùn)行在嵌入式系統(tǒng)中上.1)USBHost驅(qū)動本文采用USB攝像頭采集圖像數(shù)據(jù)對應(yīng)地就應(yīng)該在內(nèi)核中進(jìn)行USB驅(qū)動地移植,USB作為一個(gè)驅(qū)動層在內(nèi)核代碼中是很獨(dú)立地一個(gè)模塊,在往內(nèi)核中添加USB地支持時(shí),需要改動控制這部分代碼編譯連接地文件.USB驅(qū)動分為USB主機(jī)驅(qū)動和USB設(shè)備驅(qū)動本系統(tǒng)中我們要使用攝像頭,所以系統(tǒng)需要具備USB主機(jī)Host地驅(qū)動.如果系統(tǒng)地USB主機(jī)控制器符合OH

51、CI等標(biāo)準(zhǔn),則主機(jī)驅(qū)動地絕大部分工作都可以沿用通用地代碼.針對本文中所使用開發(fā)板,十分類似于s3c2410,對于本開發(fā)板地USB移植就在對s3c2410地USB驅(qū)動修改上進(jìn)行.s3c241(主機(jī)控制器驅(qū)動hcdrive結(jié)構(gòu)體中地大多數(shù)成員函數(shù)都是通用地ohci_xxx0數(shù).編寫適用于本文所用開發(fā)板地USB驅(qū)動,需要修改板文件,添加平臺設(shè)備,配置內(nèi)核,再進(jìn)行內(nèi)核編譯.2)V4L2驅(qū)動Video41inux簡稱V4L),是linux中關(guān)于視頻設(shè)備地內(nèi)核驅(qū)動模塊.現(xiàn)在已有最新地Video41inux2但還未加入linux內(nèi)核,使用需自己下載補(bǔ)丁在Linux中,視頻設(shè)備是設(shè)備文件,可以像訪問普通文件一

52、樣對其進(jìn)行讀寫.我們可以利用Vide04Linux獲取攝像頭地視頻數(shù)據(jù).Video4Linux是Linux下用于獲取視頻數(shù)據(jù)地API接口.Video4Linux是Linux下進(jìn)行影像系統(tǒng)開發(fā)地核心.這里結(jié)合Video4Linux地關(guān)鍵技術(shù),簡要說明如何在嵌入式Linux環(huán)境下使用USB攝像頭進(jìn)行視頻圖像采集程序中用到地主要系統(tǒng)調(diào)用函數(shù)有:open(”dev/voideOO,intflags)close(fd、)mmap(voidstar,tsize_tlength,intprot,intflags,intfd,off_toffset)munmap(voidstar,size_tlength和i

53、octl(iftdintcmd,),利用提供地函數(shù)接口,我們就可以打開視頻設(shè)備文件,將其映射到用戶空間進(jìn)行數(shù)據(jù)采集,從而實(shí)現(xiàn)圖像地采集如圖5-7是V4L2針對免驅(qū)USB地框架圖解;5-6V4L2針對免驅(qū)USB攝像頭圖解LCD驅(qū)動在linux中將顯示器抽象為一個(gè)標(biāo)準(zhǔn)地字符型設(shè)備-幀緩沖設(shè)備,在Linux中主設(shè)備號29,定義在/include/linux/majc中地FB_MAJ0R,次設(shè)備號定義幀緩沖地個(gè)數(shù),最大允許有32個(gè)FrameBuffer定義在/include/linux/f中地FB_MAX,對應(yīng)于文件系統(tǒng)下/dev/fb殳備文件.如圖5-6為幀緩沖設(shè)備在內(nèi)核地結(jié)構(gòu)圖:圖5-7幀緩沖殳備

54、結(jié)構(gòu)圖在本文中,LCD驅(qū)動地移植涉及到修改屏幕參數(shù),使其適合本文所用50針地TFT顯示屏.修改參數(shù)時(shí)需要修改arch/arm/mach-s5pcl00/mach-smdkcl00.中地smdkclOO_fb_winO結(jié)構(gòu)體,將.xres.yre分別設(shè)置為480、272,以適應(yīng)本文所用屏幕地大??;將.maxbpp、.default_bp分別設(shè)置為32、16來設(shè)置適應(yīng)于本問所用屏幕所支持地像素深度.最后,與USB驅(qū)動一樣,修改Kconfig文件后進(jìn)行內(nèi)核配置將其直接編譯進(jìn)內(nèi)核即可.5.3圖像采集5.3.1軟件流程如圖5-7所示為軟件流程圖.珞境上電+糕臨圖片科毎云CPU展外股圖5-8軟件流程圖5.

55、3.2程序設(shè)計(jì)系統(tǒng)初始化開發(fā)板啟動參數(shù)設(shè)置好以后在系統(tǒng)上電時(shí),Bootloader自動初始化各模塊,然后開發(fā)板主控芯片自動加載內(nèi)核模塊.在前一章中已講過,將驅(qū)動模塊直接編譯進(jìn)內(nèi)核模塊,在加載內(nèi)核模塊時(shí)就會直接初始化USB設(shè)備以及顯示設(shè)備.而無需進(jìn)行模塊安裝以及在程序中調(diào)用驅(qū)動中地進(jìn)行設(shè)備地初始化.對于功能簡化地系統(tǒng),這樣地處理模式更簡單更節(jié)約時(shí)間.攝像頭程序內(nèi)核中已經(jīng)加載了USB驅(qū)動,對于本文使用地免驅(qū)地USB攝像頭,將使用內(nèi)核中對視頻操作地驅(qū)動V4L2(video4linux2)控制攝像頭來采集圖像信息,在V4L2中提供了ioct接函數(shù)以及一系列地命令來操作攝像頭進(jìn)行圖像地采集本文在攝像頭程

56、序video.c中還進(jìn)行了圖像地格式轉(zhuǎn)換以便LCD屏幕地顯示.在V4L2下進(jìn)行編程地流程大致如下:i)打開視ii)讀取iii)更改設(shè)iv)進(jìn)行視頻采內(nèi)存映射(本文b.直接從v)對采集地vi)關(guān)閉視頻設(shè)備設(shè)頻設(shè)備息備信備當(dāng)前設(shè)置集兩種方法:中即采用本方法)設(shè)備讀取視頻進(jìn)行處理具體編程細(xì)節(jié)如下(詳細(xì)代碼見附錄)i)初始化函數(shù):intinit_video_device(void)在video(中提供函數(shù)intinit_video_device(來初始化視頻設(shè)備,包括:打開視頻,獲取當(dāng)前設(shè)備信息,更改當(dāng)前設(shè)置,內(nèi)存映射.詳細(xì)解讀如下:在linux中,視頻設(shè)備被當(dāng)作文件來直接操作,camerafd=op

57、en(/dev/videoO,O_RDWR),返回值camerafd為視頻設(shè)備地文件描述符,在后續(xù)地操作中,對文件描述符進(jìn)行操作即可.V4L2提供函數(shù)接口對視頻采集設(shè)備地現(xiàn)有信息進(jìn)行查詢,例如獲取當(dāng)前支持地視頻格式:ioctl(camerafV,DIOC_ENUM_FMT,&fmtdesc),其中fmdesc結(jié)構(gòu)體用于存儲所獲取地信息.V4L2還提供查詢其他地功能,VIDIOC_QUERYCAP用于查詢視頻所支持地功能,執(zhí)行完VIDIOC_QUERYCAP命令后,capability量中包含了該視頻設(shè)備地能力信息,然后通過檢查capability地設(shè)備能力信息來判斷設(shè)備是否支持某項(xiàng)功能;然后進(jìn)

58、行本文所需要地視頻設(shè)備信息地設(shè)置,首先設(shè)置好所需要地信息在structv4l2_forma類型地結(jié)構(gòu)體fmt中,如下:memset(&fmt,0,sizeof(f。t)/結(jié)構(gòu)體清零,去除臟數(shù)據(jù)fmt.type=V4L2_BUF_TYPE_VIDEO_CAPTURE。/設(shè)置支持地視頻捕獲功能fmt.fmt.pix.pixelformat二V4L2_PIX_FMT_YUYV/殳置視頻采集數(shù)據(jù)格式fmt.fmt.pix.height二video_height設(shè)置列分辨率fmt.fmt.pix.width=video_width設(shè)置行分辨率fmt.fmt.pix.field=V4L2_FIELD_IN

59、TERLACED設(shè)置視頻包含top和bottomfield!行交替,fields地瞬間序依賴于當(dāng)前video地標(biāo)準(zhǔn).然后利用命令VIDIOC_S_FMT進(jìn)行設(shè)置:ioctl(camerafd,VIDIOC_S_FMT,&fmt).進(jìn)行視頻采集時(shí)本文中采用地是內(nèi)存映射(mmap)地方式,mmap通過把設(shè)備文件映射到內(nèi)存中,繞過了內(nèi)核緩沖區(qū).在計(jì)算機(jī)系統(tǒng)中最快地磁盤訪問往往還是慢于最慢地內(nèi)存訪問,所用mmap地方式可以加速I/O地訪問,mmap方式進(jìn)行視頻采集地具體操作是首先利用命令VIDIOC_REQBUFS初始化內(nèi)存映射指針進(jìn)行內(nèi)存分配地請求:ioctl(camerafVIDIOC_REQBU

60、FS,&v4l2_reqbuf)然后利用內(nèi)存映射API進(jìn)行內(nèi)存地映射,實(shí)現(xiàn)設(shè)備文件到內(nèi)存空間地映射操作.Mmap函數(shù)地原型為:void*mmap(void*start,size_tlength,intprot,intflags,intfd,off_toffset)star:映射區(qū)地開始地址,設(shè)置為0時(shí)表示由系統(tǒng)決定映射區(qū)地起始地址.length映射區(qū)地長度.prot期望地內(nèi)存保護(hù)標(biāo)志,不能與文件地打開模式?jīng)_突.flags指定映射對象地類型,映射選項(xiàng)和映射頁是否可以共享.offset被映射對象內(nèi)容地起點(diǎn).fd:有效地文件描述詞.初始化函數(shù)地最后利用命令VIDIOC_DQBUF將數(shù)據(jù)緩沖重新列入隊(duì)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論