基于ARM的圖像采集無線傳輸系統的設計修改稿模板_第1頁
基于ARM的圖像采集無線傳輸系統的設計修改稿模板_第2頁
基于ARM的圖像采集無線傳輸系統的設計修改稿模板_第3頁
基于ARM的圖像采集無線傳輸系統的設計修改稿模板_第4頁
基于ARM的圖像采集無線傳輸系統的設計修改稿模板_第5頁
已閱讀5頁,還剩79頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于ARM的圖像采集無線傳輸系統的設計修改稿資料內容僅供參考,如有不當或者侵權,請聯系本人改正或者刪除。畢業設計(論文)題目:基于ARM的圖像采集無線傳輸系統的設計專?業?班?級:電子信息工程01學?號:學號姓?名:姓名李應兵指導教師:鄭寬磊講師學院名稱:電氣信息學院5月25日基于ARM的圖像采集無線傳輸系統的設計RESEARCHONIMAGEACQUISITIONANDWIRELESSTRANSMISSIONTECHNOLOGYBASEDONARM學生姓名:姓名李應兵指導教師:鄭寬磊講師摘要圖像采集技術一直是過內外的一個研究熱點,它的應用范圍十分廣泛,如在銀行、商場、質量檢測、交通管理等。傳統的圖像采集系統大多數十有PC和圖像采集卡構成的,其功能是將圖像信號采集到電腦中,以數據文件的形式保存在硬盤上。這種圖像采集系統成本一般較高,而且需要技術人員和維修人員來管理,費用較高而且傳輸距離有限。例如在偏遠的地帶、山區等惡劣的環境下,這種圖像采集系統很難正常工作。近年來無線通信技術和嵌入式系統技術的迅速發展,特別是嵌入式微處理器:ARM的出現和Limix在嵌入式系統環境中的廣泛應用,使圖像采集系統的小型化、低成本、低功耗成為可能。當前圖像監視系統領域內,有線圖像監視方式受到了固有物理布線的限制,隨著計算機技術和通信技術的發展,將嵌入式系統技術、無線通信技術和基于TCP/IP的Internet技術結合在一起的無線遠程圖像監視系統則將實現在無線寬帶資源限制的情況下的實時傳輸視頻圖像。而圖像采集的硬件設計也很重要,主要包括NANDFLASH接口、SDRAM接口、USB接口、UART接口、LCD接口等電路的設計。另外,系統的軟件則基于Eilipse的嵌入式集成開發環境的構建,完成系統引導程序、Linux內核和文件系統的移植工作,然后利用Video4linux完成圖像數據采集和JPEG壓縮編碼,最后根據GPRS模塊檢測信號強度來動態選用傳輸方式實現圖像數據采集無線傳輸工作,在服務器端由用戶控制系統接收圖像。關鍵詞:ARM;圖像采集;嵌入式系統;Linux;無線傳輸;GPRSAbstractImageacquisitiontechnologyhasbeenahotresearchtopicathomeandabroad,ithaswiderangeofapplications,suchasbanks,shoppingcenters,qualitycontrol,trafficmanagement.MostofthetraditionalimageacquisitionsystemisconstitutiveofPCandprofessionalimagecapturecard,andbyconstructingprivatenetworkforimagecaptureandtransmission.Thisimageacquisitionsystemcostisgenerallyhigher,butalsoneedspecialmaintenance,highercosts,andthetransmissiondistanceislimited.Intheremotemountainousharshenvironment,thetraditionalimageacquisitionsystemisdifficulttowork.Withtherapiddevelopmentofwirelesscommunicationtechnologyandembeddedsystemstechnologyinrecentyears,especiallyfortheemergenceofARMandLinuxiswidelyusedinembeddedsystemenvironment.Soit'spossiblethattheimageacquisitionsystemminiaturization,lowcost,lowpower.Nowpicturemonitoringsystem,cableimagewithintheterritorybytheinheretsurveillanceway,withthephysicalwiringlimiteddevelopmentofthecomputertechnologyandcommunicationtechnology,embeddedsystemtechnology,wirelesscommunicationtechnologyandbasedonTCP/IPinternettechnologytogetherinwirelessremoteimagemonitoringsystemwillachieveinwirelessbroadbandresourcesundertherestrictionofvideoimagesofthereal-timetransmission.Andtheimageacquisitionofhandwaredesigeisveryimportant,mainlyincludingNANDFLASHinterfaces,SDRAMinterfaces,USBinterfaces,UARTinterfaces,LCDinterfacescircuitdesign.Inaddition,thesystembasedthesoftwareisEilipseembeddedintegratedenvironmentconstractioncompletesystemboot,LinuxKernelandfilesystem,andbyusingthetransplantationofworkVideo4linuxcompleteimagedataacquisitionandJPEGcompressioncoding,accordingtoGPRSmoduletestingsignalstrengthtodynamicallychosentransmissionmethodrealizesimagedataacquisitionwirelesstransmissionwork,intheserverisdrivedbytheusercontrolsystemreceiveimages.Keyword:ARM;imageacquisition;embeddedsystem;Linux;wirelesstransmission;GPRS目錄TOC\o"1-2"\h\z\u摘要 -=1\*ROMANI-Abstract -=2\*ROMANII-第一章緒論 -1-1.1選題背景和意義 -1-1.2國內外研究現狀 -2-1.3本課題的研究內容 -4-第2章系統總體設計 -6-2.1系統功能描述 -6-2.2系統組成 -6-2.3關鍵器件的選型 -7-2.4嵌入式操作系統的選型 -10-2.5本章小結 -11-第3章硬件系統設計 -12-3.1硬件系統結構框圖 -12-3.2NANDFLASH接口電路設計 -12-3.3SDRAM接口電路設計 -15-3.4USB接口電路設計 -17-3.5UART接口電路設計 -18-3.6LCD的選擇及接口電路設計 -18-3.7本章小結 -20-第4章基于Eclipse的軟件系統設計 -21-4.1構建基于Eclipse的嵌入式軟件集成開發環境 -21-4.2嵌入式linux系統的移植 -21-4.3圖像采集程序的實現 -26-4.4GPRS介紹 -34-4.5圖像數據無線傳輸的實現 -35-4.6服務器端程序設計 -39-4.7本章小結 -39-第5章總結與展望 -40-5.1總結 -40-5.2展望 -41-致謝 -42-參考文獻 -43-第1章緒論1.1選題背景和意義圖像在人們生活生產中無處不見,它在人類獲取的外部信息中占據著十分重要的角色。據統計,在人類接收的信息中,視覺信息占70%以上。”百聞不如一見”,在許多場合中,圖像所傳遞的信息要比其它任何形式更加豐富和真切。由此可見,圖像信息的地位是非常重要的。在工作和生活中我們常見的各類圖片都屬于圖像,它們是采用各種設備獲取并存儲起來的一種實體。而人類的視覺系統本身也是一個圖像的采集系統,它能夠使呈現在人們眼前的景象在人們的大腦中產生一個具體的圖像[1]。近年來嵌入式系統技術的飛速發展更為圖像采集與處理系統的發展提供了無限的動力。嵌入式系統是以應用為中心、以計算機技術為基礎、軟硬件可裁剪、使用于應用系統,對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統[2]。ARM(AdvancedRISCMachines)是嵌入式系統技術發展的一個標志性產物。ARM是當前世界領先的32位嵌入式微處理器,占據了大約75%的市場份額[3]。本系統采用的就是三星公司生產的基于ARM920T芯核的一款嵌入式微處理器S3C2440。它的主頻能夠達到400MHz,已經能夠滿足對圖像數據的編碼壓縮的要求。另外,各種嵌入式操作系統的涌現也極大的促進了嵌入式系統技術的發展[4],使用嵌入式操作系統能夠大大減小系統的開發周期,提高系統的穩定性。圖像采集作為近年來的一個研究熱點受到了越來越多的關注[5]。特別是無線通信技術的發展,使人們的信息溝通實現了”隨時隨地”,同時也希望能夠隨時隨地了解目標場所的狀況[6]。另外人們生活水平的不斷提高,也使得數字化家庭開始誕生。在這種背景下,設計一種輕便小巧、低生產成本、低功耗的圖像采集系統來采集、存儲、傳輸并顯示所需的圖像就顯得十分必要。針對這種情況,本課題提出一種基于ARM的圖像采集與無線傳輸系統的設計方案。它是以嵌入式技術為核心,結合網絡技術、無線通信技術,迎合了當前市場的需求,能夠滿足當前人們對生產、生活中對目標場地的隨時監控的要求。與傳統的圖像監控系統相比,它應具有體積小,安裝方便,現場無需專人值守,成本低,穩定性高等特點[7]。在未來的安保、智能交通管理、產品檢測、海關檢測、環境監督、家庭防護等各個方面都有著廣闊的應用前景。1.2國內外研究現狀圖像采集與無線傳輸系統主要分為兩個部分:采集部分和傳輸部分。本文主要從這個兩個方面進行分析和設計。1.2.1圖像采集技術當前國內外圖像采集與處理將模擬信號轉換成數字信號,經PCI或其它總線由上位機進行圖像處理。這種方式的優點是:充分利用了PC機豐富的軟硬件資源、易于開發等特點,它的缺點是:整個系統硬件連接復雜,不利于小型化,而且對人力、成本等要求較高[8][9]。隨著嵌入式微處理器技術的發展,嵌入式微處理器的運算速度已經大幅提高。本課題采用圖像傳感器與微處理器的方式來完成圖像的采集模塊的設計,并在系統中采用嵌入式操作系統,不但實現了圖像數據的高速采集,而且降低了系統成本,系統功能易于擴充,為系統再次功能擴充留下了空間[10][11]。1.2.2圖像數據的無線傳輸當前國內外實現數據無線傳輸的技術主要有:紅外線無線技術、藍牙無線通信技術、GSM,CDMA,GPRS等[12]。(1)紅外線無線技術紅外線是波長在750nm~1mm之間的電磁波,它的頻率高于微波而低于可見光,是一種人用肉眼看不到的光。紅外通信一般采用紅外波段內的近紅外線,波長在0.7um~25um之間[13]。當前使用的家電遙控器幾乎都是采用紅外線傳輸技術。使用紅外線做信號載波的優點很多:成本低、傳播范圍和方向及距離能夠控制、不產生電磁輻射千擾,也不受干擾等等。隨著紅外線技術的日益成熟,標準的日益規范,紅外線在通訊上的應用也就日益增多[14]。(2)藍牙無線通信技術藍牙是一種技術的名稱,它來源于公元10世紀丹麥的一位國王Harold,她的綽號就叫”Bluetooth"[15]。藍牙是一種低功耗、短距離無線通信技術,其實質內容是建立全球通用的短距離無線電空中接口以及控制軟件的公開標準;其目的是要取代現有的傳統個人計算機、傳真機、打印機、移動電話等設備之間互聯的有線電纜,使其形成一個微型的個人小型網絡系統,從而方便地實現各個電子設備之間的無線通信[16]。(3)GSMGSM(GlobalSystemforMobilecommunications),即全球移動通信系統,是世界上采用最多的數字移動通信制式,中國最大的移動通信運營商一中國移動通信業采用的也是GSM。GSM是第二代((2G)移動通信技術的代表,它能夠使用的頻率為900MHz,1800MHz和1900MHz,我們國內主要采用的是900MHz和1800MHz,簡稱GSM900和DCS1800。頻帶寬度為25MHz(對900MHz頻段而言);通信方式為FDD頻分全雙工。雙工通信時收、發頻率間隔45MHz。信息數字結構為時分多址幀結構。每幀為一個載波,分為8個時隙,全速率信道8個,半速率信道16個;調制方式為高斯低通最小頻移鍵控(GMSK),調制指數為0.3;采用數字話音,其編碼方式為規則脈沖激勵長線性預測編碼(RPE-LTP),速率為13kb/s;每時隙信道比特率為22.8kb/s,信道總速率為270.83kb/s;數據速率為9.6kb/s。GSM系統主要由網絡交換子系統((NSS),基站子系統((BSS)以及移動終端設備(MS)三大部分組成[17]。(4)CDMA在上個世紀八十年代,即第二代移動通信迅速發展時期,提出了兩個重要的移動通信體制,一種是TDMA體制,另一種就是CDMA。CDMA是一種以擴頻通信為基礎的調制和多址連接技術。在信號的發送端使用一個自相關性較強而互相關較小的高速偽隨機碼作為地址碼,與要傳輸的用戶信息數據相乘。在接收端,以本地產生的、與發送端相同的地址碼與接收到的信號相乘,經過相關檢測,就能將擴頻信號解擴,將原始用戶信息數據給恢復出來。(5)GPRSGPRS(GeneralPacketRadioService)即通用分組無線業務,由英國BTCellnet公司最早在1993年提出,是GSMPhase2+規范定義實現的內容之一。它是一種基于GSM的面向用戶提供移動分組的IP或者X.25連接的移動分組數據業務網。GPRS沒有取代當前GSM網絡支持的CSD(電路交換數據)和SMS(短消息)等業務,而是對當前GSM網絡的補充。GPRS是GSM向3G系統演進的重要一環,它既考慮了向第三代系統的過渡,同時又兼顧了現有的第二代系統,是第二代GSM系統過渡到第三代WCDMA系統的必經之路,因此GPRS又稱為2.5G。GPRS分組業務信道采用了與GSM不同的CS_I~CS_4等編碼方式(其數據速率分別為9.0Skbit/s,13.4kbit/s,15.6kbit/s,21.4kbit/s)。采用編碼方式為CS-4時,且無線環境良好,信道充分的情況下,能夠實現GPRS網絡支持的理論最高速率171.2kbps,這種速率完全能夠支持一些多媒體圖像傳輸業務等對帶寬要求較高的應用業務。但實際數據傳輸速率受網絡編碼方式和終端支持的因素影響,CS_3,CS_4的接收參考靈敏度較低,這兩種編碼方式只有在距離基站較近且信號較好的地區才能夠真正使用。綜合以上幾種無線傳輸技術的比較,并根據本系統對成本和傳輸距離的要求,另外由于國內GPRS的網絡用戶遠遠多于CDMA,且GPRS的信號強度要好于CDMA,本系統選擇GPRS作為圖像數據的無線傳輸方式。1.3本課題的研究內容本課題針對當前國內外圖像監控系統的現狀提出了一種基于ARM的圖像采集與無線傳輸系統的設計方案,經過研究嵌入式系統技術,結合網絡技術、無線通信技術,以及具體的市場需求情況,研究一種適用于圖像監控、安全保障的圖像采集與無線傳輸系統。本課題的主要研究內容有:(1)搜集相關資料,分析當前國內外現有的圖像采集系統的優缺點。(2)進行系統的總體設計,并對系統進行詳細的功能模塊劃分,選擇關鍵模塊器件的型號。(3)進行硬件系統的設計工作,主要有NANDFLASH接口電路、SDRAM接口電路、USB接口電路、DART接口電路、LCD接口電路的設計。(4)構建基于Eclipse的嵌入式集成開發環境。(5)進行嵌入式Linux的移植,主要工作有系統引導程序的移植、Linux內核的移植和文件系統的移植。(6)進行圖像采集程序的編寫。(7)進行圖像數據無線傳輸程序的編寫。(8)進行服務器端接收及控制程序設計。本課題提出的基于ARM及嵌入式linux環境下的圖像采集與傳輸系統具有低成本、低功耗、易布設、系統易擴展等特點。第2章系統總體設計2.1系統功能描述本課題設計的基于ARM的圖像采集與無線傳輸系統,主要是為了彌補傳統圖像采集系統中存在的成本較高、功耗較高、不易布設等缺點。系統采用嵌入式處理器ARM作為控制器,圖像數據由圖像傳感器采集后,由嵌入式處理器對圖像數據進行JPEG編碼壓縮處理后,利用GPRS模塊發送至遠程服務器中,在服務器端能夠實現連續接收或單幅接收的控制。在完成圖像采集與無線傳輸的同時,系統還必須滿足低成本、低功耗的要求。2.2系統組成一個完整圖像采集系統應該包括圖像數據采集,對圖像數據的處理,圖像數據的存儲以及整個系統的控制等模塊。本系統以嵌入式微處理器ARM為控制核心,以圖像傳感器為圖像數據的獲取設備,以GPRS模塊為圖像數據的發送設備。整個系統的體系結構能夠分為三層:硬件層、系統軟件層和應用層。系統結構如圖2-1所示。能夠將系統劃分為五個主要部分:控制模塊、圖像采集模塊、GPRS模塊、顯示模塊、電源及存儲模塊。系統在嵌入式微處理器的控制下從圖像傳感器采集圖像數據,采用DMA方式將圖像數據傳輸到內存緩沖區中,由軟件將圖像數據讀出并對圖像數據進行JPEG壓縮和打包處理后存入Flash中,最后經過GPRS網絡發送到遠程接收端服務器。本系統的設計難點是如何保證內存中圖像數據的讀取與圖像傳感器獲取圖像數據的同步以及圖像數據的實時處理。系統采用的嵌入式處理器ARM必須具備較強的處理能力,以便于完成圖像數據的實時處理的需求,并要求系統的成本比傳統的圖像采集系統低。2.3關鍵器件的選型2.3.1嵌入式微處理器ARM的選型ARM公司自從1990年在英國劍橋成立以來,在32位RISC(ReducedInstructionSetComputer)CPU開發領域中不斷取得突破,其結構已經從V3發展到V6。當前非常流行的ARM芯核有ARM7TDMI,StrongARM,ARM720T,ARM9TDMI,ARM922T,ARM940T,ARM946T,ARM966T,ARMIOTDMI等。另外ARM芯片還獲得了許多實時操作系統(RealTimeOperatingSystem)供應商的支持,比較著名的有WindowsCE,Linux,pSOS、VxWorks,Nucleus,EPOC,uC/OS、Beos等[18]。我們在選擇ARM芯片時主要參考以下因素:(1)ARM芯核如果希望使用嵌入式操作系統來減少軟件開發時間,就需要選擇ARM720T以上帶有MMU(MemoryManagementUnit)功能的ARM芯片。當前只有uCLinux等少數幾種Linux不需要MMU的支持。(2)功能不同的系統需要各不相同,在選取就需要考慮處理器本身所能支持的功能,如USB,DART、液晶顯示等。(3)性能主要是從處理器的功耗、運算速度、穩定可靠性等方面考慮。(4)價格一般來說,在產品完成預定功能的情況下,都是希望成本越低越好。但在選取時需要考慮處理器的價格以及由處理器而衍生出的開發價格,如開發工具、外圍芯片等。(5)熟悉程度和開發資源選擇一款自己熟悉的處理器能夠大大減少開發的難度和周期,并降低開發風險。在自己熟悉的處理器都無法滿足的情況下,則應盡量選擇開發資源較豐富的處理器。(6)是否可升級為了系統在以后的升級方便,應盡量選取具有相同封裝的不同性能等級的處理器,并考慮系統未來可能會增加的功能。(7)供貨穩定性供貨是否穩定也是選取處理器時應考慮的一個重要因素,應盡量選取大廠家、通用性較好的芯片。基于以上各種因素,本課題選擇三星公司的S3C2440作為嵌入式微處理器。S3C2440采用了ARM920T的內核,0.13um的CMOS標準宏單元和存儲器單元,芯片內部集成了16KB的指令Cache和16KB的數據Cache,外部存儲控制器,LCD控制器,4通道DMA并有外部請求引腳,3通道DART,2通道SPI,1通道IIC-BUS接口,AC97解碼器接口,2端口USB主機//1端口USB設備,4通道PWM定時器和1通道內部定時器,看門狗定時器,8通道10位ADC和觸摸屏接口等[19]。2.3.2圖像采集模塊的選型當前主要的圖像傳感器分兩類:CCD(ChargeCoupledDevice)和CMOS(ComplementaryMetallicOxideSemiconductor)。CCD使用一種高感光度的半導體材料制成,能把光線轉變成電荷,經過模數轉換器芯片轉換成數字信號。數字信號經過壓縮以后由相機內部的閃速存儲器或內置硬盤卡保存,因而能夠輕而易舉地把數據傳輸給計算機,從而能夠借助與計算機中豐富的軟硬件資源,根據需要對圖像進行處理。CCD主要由一個類似馬賽克的網格、聚光鏡片,以及墊于最底下的電子線路矩陣所組成。CMOS也是一種可記錄光線變化的半導體。CMOS的制造技術相比較與CCD來講簡單的多,與一般計算機芯片沒有多大差別,主要是利用硅和鍺這兩種元素做成,使其在CMOS上共存著帶N(帶負電)和P(帶正電)級的半導體,這兩個互補效應所產生的電流即可被處理芯片記錄和解讀成影像。在相同分辨率下,CMOS的價格比CCD便宜的多,可是CMOS器件產生的圖像質量相比CCD來說要低一些[20]。當前市場上絕大多數高端數碼相機都使用CCD作為感應器;CMOS感應器則作為低端產品應用于一些攝像頭上。與CCD相比較,CMOS的優勢之一在于電源消耗量比CCD低,CCD為了提供高質量的影像品質,付出代價即較高的電源消耗量,為使電荷傳輸順暢,噪音降低,需由高壓差改進傳輸效果。但CMOS影像傳感器將每一像素的電荷轉換成電壓,讀取前便將其放大,利用3.3V的電壓即可驅動,電壓消耗量因此要比CCD低的多。CMOS的另一個優勢是與周邊電路的整合性高,可將ADC與信號處理器整合在一起,使體積大幅縮小。與PC環境下相比,嵌入式系統環境中資源十分有限,另外從成本、電路設計負責度、電源消耗量等方面考慮,本課題選擇采用基于CMOS圖像傳感器作為感光器件及中星微301微處理芯片的USB接口攝像頭作為系統的圖像采集模塊。中星微301系列USB接口攝像頭能夠在320×240和640×480及800×600的分辨率下輕松的達到30fps/s的速度,30萬硬件像素,百萬以上插值像素,完全能夠實現視頻畫面或圖像的清晰、流暢。2.3.3GPRS模塊的選型當前無線通信品種較多,常見的無線模塊分成GPRS,CDMA,GSM,EDGE等模塊。這些無線模塊廣泛應用于無線數據傳輸,電力GPRS(CDMA)通信系統、鐵路GPRS(CDMA)通信系統,無線監控,GPRS智能交通系統等無線遠程監控領域等行業。當前國內市場上常見的無線模塊品牌主要有:西門子、華為、摩托羅拉、飛圖、展迅、Enfora、明基、SIMCOM,Wavecom等。本課題選用Wavecom公司的GPRS模塊Q2406B,如圖2-2所示。圖2-2Q2406實物圖GPRS模塊Q2406B是一塊雙頻GSM/GPRS模塊,內嵌協議棧,執行ETSIGSMPhase2+的標準,類別4(2W@900MHz),類別1(1W@1800/1900MHz)外部3V/SVSIM。由于GPRS模塊Q2406內嵌了協議棧,因此進行軟件編寫時就能夠省去協議棧的編寫或移植,這樣就節省了大量的軟件開發時間[21]。2.4嵌入式操作系統的選型選擇linux的原因有:(1)可應用于多種硬件平臺。Linux已經被移植到多種硬件平臺,這對受開銷、時間限制的研究與開發項目很有吸引力。原型能夠在標準平臺上開發然后移植到具體的硬件上,加快了軟件與硬件的開發過程。(2)Linux能夠隨意地配置,不需要任何的許可證或商家的合作關系。(3)它是免費的,源代碼能夠得到。這是最吸引人的。毫無疑問,節省大量的開發費用。(4)Linux它本身內置網絡支持。(5)Linux的高度模塊化使添加部件非常容易。(6)Linux在臺式機上的成功,使大家看到了linux在嵌入式系統中的輝煌前景。2.5本章小結本章首先介紹了系統要實現的功能,并詳細介紹了基于ARM的圖像采集與無線傳輸系統的組成,詳細分析了系統關鍵器件的選擇原則,選定了本系統所采用的嵌入式微處理器、圖像采集模塊、GPRS模塊,最后介紹了本系統所采用的嵌入式Linux,以及選擇嵌入式Linux作為系統的嵌入式操作系統的原因。第3章硬件系統設計3.1硬件系統結構框圖本系統以嵌入式微處理器S3C2440為系統控制中心,當USB接口攝像頭獲取圖像數據后,經過S3C2440的壓縮處理后,利用串口將圖像數據送至GPRS模塊Q2406B發送到遠程服務器。系統的硬件框圖如圖3-1所示。3.2NANDFLASH接口電路設計3.2.1NANDFLASH和S3C2440NANDFLASH控制器分析NANDFLASH在嵌入式系統中的地位與PC上的硬盤類似,用來保存系統運行所必須的操作系統、應用程序、用戶數據、運行過程中產生的各類數據,而且在系統電源關閉后NANDFLASH中的數據能夠在掉電狀態下永久保存。本課題選用的NANDFLASH芯片是三星公司生產的容量為64MB的K9F1208UOM[22]。K9F1208UOM的封裝及外部引腳如圖3-2所示。圖3-3K9F1208UOM的內部結構圖K9F1208UOM的內部結構分為10個功能部件:(1)X-BuffersLatche&Decoders:用于行地址(2)YBuffersLatche&Decoders:用于行地址。(3)CommandRegister:用于命令字。(4)ControlLogic&HighVoltageGenerator:控制邏輯及產生Flash所需高壓。(5)NandFlash:存儲部件。(6)PageRegister&S/A:頁寄存器,當讀、寫某頁時,會將數據先讀入/寫入此寄存器,大小為528字節。(7)YGating。(8)I/OBuffers&Latches。(9)GlobalBuffers。(10)OutputDriver。K9F1208UOM的容量為64MX8bit,分為131072行(頁)、528列;每一頁大小為512字節,外加16字節的額外空間。K9F1208UOM的命令、地址、數據都經過8個I/O口輸入/輸出,這種形式使得K9F1208UOM引腳得到減少,并易于擴展系統容量。寫入命令、地址或數據時,都需要將WE#,CE#信號同時拉低。數據在WE#信號的上升沿被NANDFlash存;命令鎖存信號CLE、地址鎖存信號ALE用來分辨、鎖存命令或地址。NANDFlash時需要發送命令,然后發出地址序列,最后讀/寫數據;需要使用各個使能信號來分辨是命令、地址還是數據[23]。S3C2440的NANDFlash控制器提供了NFCONF,NFCONT,NFCMMD,NFADDR,NFDATA,NFSTA'I,和其它與ECC有關的寄存器。NANDFlash的讀寫操作順序如下:(1)設置NFCONF,NFCONT寄存器,配置NANDFlash。(2)向NFCMD寄存器寫入命令。(3)向NFADDR寄存器吸入地址。(4)讀/寫數據:寄存器寫入地址。經過寄存器NFSTAT檢測NANDFlash的狀態,在啟動某個操作后,檢測R/nB信號以確定該操作是否完成、是否成功。3.2.2NANDFLASH接口電路S3C2440與K9F1208UOM的接口電路如圖3-4所示。圖3-4K9F1208UOM與S3C2400的連線圖如圖3-4所示,K9F1208UOM與S3C2440的連線有:8個v0引腳(voowo}>,S個使能信號((nWE,ALE,CLE,nCE,nRE),1個狀態引腳(RDY/B),另外還有1個寫保護引腳((nWP)。地址、數據和命令都是在這些使能信號的配合下,經過8個I/O引腳傳輸。3.3SDRAM接口電路設計3.3.1S3C2440存儲控制器分析S3C2440的存儲控制器提供了訪問外部設備所需的信號,它具有如下特性:支持數據的大端、小端存儲模式(能夠經過軟件設置);每個BANK的地址空間為128MB,總共1GB(BBANKs);可編程控制的總線位寬(8/16/32-bit),不過BANKO只能選擇兩種位寬(8/16-bit);共計8個BANK}BANKO~BANKS能夠支持外接ROM,SRAM等,BANK6~BANK7除能夠支持ROM,SRAM外,還支持SDRAM等;BANKO~BANK6共7個BANK的起始地址是固定的;BANK7的起始地址可編程選擇;BANK6,BANK的地址空間大小是可編程控制的;每個BANK的訪問周期均可編程控制;能夠經過外部的”wait”信號延長總線的訪問周期;在外接SDRAM時,支持自刷新和省電模式。S3C2440在系統復位后的存儲控制器的地址空間分布如圖3-5所示3.3.2SDRAM的選擇及接口電路設計當前SDRAM生產廠家眾多,因此選擇一款合適的SDRAM芯片對整個系統的開發也是十分重要的。選用的SDR.AM是兩片三星公司生產的K4S561632A(4M×16bit×4Banks)。經過并聯兩片16位的K4S561632A從而組成32位的位寬,與S3C2440的32條數據線(DATAO~DATA1)相連。S3C2440的存儲控制器中BANK6為擴展SDRAM所用,因為BANK6的起始地址為0x30000000,因此系統中SDRAM的起始地址也為Ox30000000。圖3-6兩片K4S561632A與S3C2440的連線圖3.4USB接口電路設計S3C2440中集成了2個USB主機接口和1個USB設備接口。USB主機接口遵從OHCIRev.1.0標準,兼容USBVerl.l標準。USB設備接口具備5個Endpoint兼容USBVerl.l標準。由于本課題中只有USB接口攝像頭需要USB接口,因此1個USB主機接口就能夠了,另外,為了便于系統調試,再增加1個USB設備接口,用來下載嵌入式Linux鏡像使用。S3C2440中擴展USB接口十分方便,只要按照USBVerl.l標準連接即可[24]。圖3-7S3C2440與USB設備的鏈接框圖3.5UART接口電路設計S3C2440中集成了3個相互獨立的DART(IrDAI.0,64字節TxFIFO和64字節RxFIFO),每個DART都能夠單獨地在中斷或是DMA模式下操作,也就是說DART能夠生產一個中斷或DMA請求用于CPU和DART之間的數據傳輸。UART使用系統時鐘時能夠支持最高115.2Kbps的波特率。如果外部設備提供UEXTCLK給UART,則DART能夠工作在更高的速率。S3C2440能夠經過RS232-C標準接口很容易實現和其它設備、模塊的連接,從而進行數據的輸入輸出。本系統中DART接口的主要用途是連接GPRS模塊Q2406B。由于RS232-C標準與S3C2440中所定義的高、低電平信號不同,因此還要進行信號電平的轉換。這里我們采用MAX3232來實現。DART接口電路框圖:圖3-8DATR的接口電路框圖3.6LCD的選擇及接口電路設計S3C2440中集成了LCD控制器,被用來向LCD傳輸圖像數據,并提供必要的控制信號,比如VFRAME,VLINE,VCLK,VM等。S3C2440支持兩種LCD:TFTLCD和STNLCD,它們的特性如下(BPP表示bitperpixel,即每個色素使用多少位來表示其顏色)。(1)TFT(Thin-FilmTransistor薄膜晶體管)LCDTFTLCD支持單色(1BPP),4級灰度(2BPP),16級灰度(4BPP),256色(BBPP)的調色板顯示模式;支持64K(16BPP)和16M(24BPP)色非調色板顯示模式;支持分辨率為640X480,320X240及其它多種規格的LCD;虛擬屏幕最大可達4MB;對于64K色,分辨率有2048X1024等多種。(2)STN(SuperTwistedNematic超扭曲相列)LCD。STNLCD支持3種掃描方式:4位單掃描、4位雙掃描和8位單掃描;支持單色(1BPP),4級灰度(2BPP)和16級灰度(4BPP)屏;支持256色(8BPP)和4096色(12BPP)彩色STN屏(CSTN);支持分辨率為640×480,320×240,160×160以及其它規格的多種LCD、虛擬屏幕最大可達4MB:對于256色,分辨率有4096×1024,2048×2048,1024×4096等多種。S3C2440集成的LCD控制器除了提供驅動STNLCD,TFTLCD所需的所有信號,另外,還特別提供額外的信號以支持SEC公司((SamsungElectronicsCompany)生產的TFTLCD(稱為SECTFTLCDs)。S3C2440LCD控制器的內部結構如圖REGBANK是LCD控制器的寄存器組,含17個寄存器及一塊256X16的調色板內存,用來設置各項參數。而LCDCDMA則是LCD控制器專用的DMA信道,能夠自動地從系統總線上取到圖像數據,這使得顯示圖像時不需要CPU的干涉。VIDPRCS將LCDCDMA中的數據組合成特點的格式,比如4位單掃描等,然后從VD[0:23)發送給LCD屏。同時TIMEGEN和LPC3600負責產生LCD屏所需要的控制時序,例如VSYNC,HSYNC,VCLK,VDEN,然后從VIDEOMUX送給LCD屏。其中LPC3600專用于SECTFTLCD。為增強系統的可擴展性,特意采用一個50口的LCD接口將S3C2440LCD控制器提供的LCD控制信號全部引出,只需要經過對LCD控制器編程即可支持不同廠家生產的多種LCD。系統LCD接口如圖3-10所示。圖中LEND為行結束信號,VCLK為LCD時鐘信號,VLINE,VFRAME,VM為LCD提供線信號、幀信號和數據輸出使能信號,VSYNC,HSYNC,VDEN為LCD提供垂直同步信號、水平同步信號、數據傳輸開始信號,LCDLPCOE,LCDLPCREV,LCDLPCREVB為LCD提供時鐘控制信號,LCDPOWER為LCD提供SV的直流電源[25]。另外,TSXM,TSXP,TSYM,TSYP為觸摸屏控制信號。3.7本章小結本章首先介紹了系統的硬件結構框圖,按照劃分的硬件系統模塊依次對NANDFLASH接口、SDRAM接口、USB接口、DART接口及LCD接口的設計進行了詳細的討論。第4章基于Eclipse的軟件系統設計4.1構建基于Eclipse的嵌入式軟件集成開發環境Eclipse是著名的跨平臺的集成開發環境((IDE),最初是由IBM公司開發替代商業軟件VisualAgeForJava的下一代開發環境。,IBM將Eclipse貢獻給開源社區,現在由Eclipse基金會管理。7月,Eclipse穩定版3.1.0發布。Eclipse本身只是一個框架平臺,最初主要用于java語言的開發。可是眾多插件的支持使得Eclipse同樣能夠用來開發其它的語言,如c/c++,c#,pert,cobol的等等。cdt(c/c++developmenttoolkit)就是支持c/c一開發的插件。許多軟件開發商也以Eclipse為框架推出了自己的集成開發環境。例如風河(WindRiver)公司開發的嵌入式IDE(集成開發環境)IDEWorkbench2.0就是基于Eclipse平臺設計的。Eclipse是一個開放源代碼的,基于插件(plug-in)的擴展性框架的最大的特點就是可擴展性。Eclipse的擴展性是經過擴展點機制提供了插件組合的靈活性和擴展性。插件是一個結構化組件,同時也是系統運行時最小的一個管理單元,擁有完整的生命周期,它負責擴展點的定義并貢獻擴展。Eclipse的另一個重要的特點就是易升級性。基于Eclipse的集成開發環境具有良好的可升級性,與Eclipse的擴展性類似,對需要升級的插件升級時,只需要在Eclipse的插件目錄中加入插件的新版本,重新啟動Eclipse就完成了對插件的升級。4.2嵌入式linux系統的移植4.2.1系統引導程序Bootloader的移植Bootloader是在系統上電開始時執行的一段小程序,它的基本作用是完成硬件設備的初始化,建立內存空間的映射圖,最后將操作系統內核。當前比較成熟的bootloader:除此之外還具有網絡功能、從PC上經過串口或網絡下載下載文件、燒寫文件、將Flash上壓縮的文件解壓后再運行等功能。對于ARM體系結構的處理器,上電后處理器從地址0x00000000開始執行第一條指令,因此需要把存儲器中Bootloader的地址映射到0x00000000,這樣ARM上電后Bootloader就開始執行。Bootloader的啟動過程能夠分為單階段(Singestage)、多階段(Multi-stage)兩種。多階段啟動的Bootloader一般能夠提供更加強大、更加復雜的功能以及更好的可移植性。常見的Bootloader的基本上都是兩階段的啟動過程。第一階段的程序代碼均是使用匯編語言來實現,它的作用是完成依賴于CPU體系結構的初始化,并為第二階段程序的執行做準備。第二階段則是一般采用C語言來實現,這樣能夠實現更加復雜的功能,而且代碼具有更好的可讀性和可移植性[26]。4.2.2移植linux內核Linux內核是整個軟件系統的核心,Linux內核的移植對系統的穩定性等都有著重要的影響。當前市場上主流的Linux內核逐步轉向2.6版本,因此本系統選用的Linux內核版本是Linux-。Linux的啟動過程能夠分為兩部分:與硬件相關的引導階段和后續的通用啟動過程。不同架構上Linux的啟動過程稍有不同,在ARM架構處理器上的啟動過程如圖4-1所示。引導階段一般使用匯編語言編寫,它首先檢查內核是否支持當前架構的處理器,然后檢查是否支持當前開發板。在檢查經過后,為調用下一階段的startkernel函數做準備。主要有兩個步驟:(1)連接內核時使用的虛擬地址,因此要設置頁表、使能MMU。(2)調用C函數startkernel之前的常規工作,包括復制數據段、清楚數據段、清楚BSS段、調用startkernel函數。第二階段的關鍵代碼主要使用C語言編寫,它進行內核初始化的全部工作,最后調用restinit函數啟動init過程,創立系統第一個進程:init進程。在分析Linux在ARM架構處理器上的啟動過程后,下面來給出Linux內核在本系統使用的S3C2440上實現移植的過程。登錄Linux內核官方網站()下載Linux內核源碼壓縮包。解壓后即可得到Linux內核源碼,執行如下命令即可:$tarxjflinux-.tar.bz2//執行完畢后即可得到文件夾Linux-0對于ARM架構的嵌入式微處理器,與其體系相關的代碼在Linux內核源碼包的子目錄arch/arm/目錄下,Linux內核的移植工作主要就是修改這個目錄下的文件。移植的主要步驟如下:(1)首先修改頂層Makefile,配置、編譯內核以確定所下載的內核源碼包能夠被正確的編譯。如下所示:將185ARCH?=$(SUBARCH)//185為代碼行號,下同186CROSS_COMPILE?=修改為:185ARCH?=arm186CROSSCOMPILE?=arm-linux然后執行make命令配置內核:makesmdk2410_defconfig//smdk2410_defconfig位于arch/arm/configs/目錄下。最后執行makeuImage編譯內核,即可在頂層目錄中生成內核映像文件vmlinux,還能夠在arch/arm/boot/目錄中生成U-Boot格式的內核映像文件uImageo至此,就能夠經過前面已經移植的U-Boot來測試剛剛生成的內核映像文件是否正確。測試經過后,即可向下進行移植工作了。(2)修改內核。在本系統移植過程中對內核代碼的修改主要是修改系統晶振頻率,使之與本系統所使用的晶振頻率相符。需要修改的文件為:arch/arm/mach-s3c2440/mach-s3c2440.c。將:s3c24xx一nitclocks(16934400);修改為:s3c24xx_initclocks(100);(3)修改MTD分區。MTD(MemoryTechnologyDevice),即內存技術設備,是Linux中對ROM,NORFlash,NANDFlash等存儲器設備抽象出來的一個設備層,它向上提供統一的訪問接口:讀、寫、擦除等;屏蔽了底層硬件的操作、各類存儲設備的差異。需要修改的文件為:arch/arm/plat-s3c24xx/common-smdk.c,主要修改的是該文件中的smdk一defaultnand_part數據結構。本系統中對NANDFlash的戈d分為:前2MB用于存放Linux內核,剩下的空間用來存放、'AFFS文件系統。修改后的smdk_defaultnand_part結構如下:staticstructmtd-partitionsmdkdefaultnand-part[]={[0]={.name="kernel".size="SIZE2M".offset=0,}[1]={.name=nYa}S".offset=MTDPARTOFSAPPEND.size=MTDPARTSIZFULL}}MTDPARTOFSAPPEND表示當前分區緊接著上一個分區,MTDPARTSIZFULL表示當前分區的大小為剩余的Flash空間。(4)配置Linux內核。在修改內核的配置文件后,就能夠直接使用”makemenuconfig”命令來配置內核了。在配置本系統要使用的內核時,主要要選擇如下幾項:選擇Systemtype--S3C2440Machines。選定系統所用CPU類型。選擇Multimediadevices--VideoforLinux。此項為Video4Linux編程接口函數提供支持。選擇USBSupport,OHCI,UHCI。這幾項為USB控制器提供支持。選擇Networkdevicesupport-}PPP(point-to-pointprotocol)support此項為GPRS傳輸提供支持。選擇USBMultimediadevices一USBSPCASXXSunplusVimicroSonixCameras。此項為中星微系列的USB攝像頭提供了驅動。其提供了基本的I/O操作接口函數open,close,read,write的實現、對終端的處理實現、內存映射功能以及對I/O通道的控制接口函數等另外還有與LCD,UART接口設備等項。(5)編譯內核在Linux內核配置完畢后,就能夠使用命令”makeuImage”新編譯內核,生產內核映像后,下載至系統NANDFlash中即可。4.2.3移植YAFFS2文件系統YAFFS(yetanotherflashfilesystem)專門為NANDFlash設計的嵌入式文件系統,適用于大容量的存儲設備。它是一種日志結構的文件系統,提供了損耗平衡和掉電保護,能夠有效地避免意外掉電對文件系統一致性和完整性的影響。YAFFS采用一種多策略混合的垃圾回收算法,結合了談心策略的高效性和隨機選擇的平均性,達到了兼顧損耗平均和系統開銷的目的。當前YAFFS已經不再維護了,因此本系統采用YAFFS2。首先下載YAFFS文件系統的源代碼,網址:.co.uk/cgi-bin/viewcvs.cgi,解壓后即可得到Development目錄,里面有兩個子目錄:YAFFS和YAFFS2oYAFFS2移植的主要工作如下。(1)將AFFS2代碼加入內核中。經過YAFFS2目錄下的腳本文件patch-ker.sh來給內核打補丁的方式將YAFFS2代碼加入到內核中,如下所示:腳本文件:usage:./patch-ker.shc/1kernelpathifc/1isc,thencopy.if1thenlink添加代碼命令:$cd/Development行affs2$./patch-ker.shc/linux-(2)重新配置、編譯內核。再次配置內核,除了4.2.2中所選擇的選項外,再選擇MTD--NANDFlashsupport--YaffsfilesystemonNAND,該項用于為本系統采用的文件系統yaffs2提供支持[27]。4.3圖像采集程序的實現4.3.1Video4linux簡介Video4linux(簡稱V4L)是Linux中關于視頻設備的內核驅動,它為視頻設備的應用程序編程提供了一系列接口函數,這些設備包括當前市場上常見的電視采集卡、視頻捕捉卡和USB接口的攝像頭等。對于USB口攝像頭,其驅動程序中需要提供基本的vo操作接口函數open,read,write,close的實現。與視頻捕獲相關的設備文件為:/dev/video。4.3.2圖像數據的JPEG壓縮編碼及JPEG文件結構由于嵌入式系統環境中對軟硬件都有十分嚴格的要求,系統資源有限,因此對系統采集的圖像數據進行壓縮編碼就顯得十分必要,另外圖像數據在經過壓縮后還能夠提高系統的無線傳輸效率。JPEGOointphotographicexpertsgroup)是一個由ISO和IEC兩個組織機構聯合組成的一個專家組,負責制定靜態數字圖像壓縮編碼標準,由其開發的壓縮算法稱為JPEG算法,當前已經成為國際上通用的標準,因此又稱為JPEG標準。JPEG是一個適用范圍很廣的靜態圖像數據壓縮標準,既可用于灰度圖像又可用于彩色圖像[}a9}oJPEG是到當前為止用于攝影圖像的最好的壓縮算法。一幅占用4MB存儲空間的24位BMP位圖圖像文件,采用JPEG壓縮編碼后,所占用的存儲空間大小約SOKB,而且圖像的質量人眼并不能感覺到明顯的區別。JPEG壓縮編碼算法的主要步驟如下:色彩系統變化;正離散余弦變換((FDCT);量化(quantization);Z字形編碼((zigzagscan);游程編碼;嫡編碼。4.3.3在Eclipse平臺下實現圖像采集及處理程序在Linux系統中,采用設備文件統一管理硬件設備,從而將硬件設備的特性及細節對用戶因此起來,使用戶能夠像訪問一般文件一樣訪問設備文件,能夠經過open(),write(),ioctl()等操作對目標設備進行操作。攝像頭采集到圖像數據后首先存儲在攝像頭的緩存區中,從設備緩存區中獲取圖像數據有兩種方式:第一種方式是直接讀取方式,能夠采用系統調用read()直接將數據從設備中讀出;第二種方式是內存映射方式,能夠經過~ap()函數實現。直接讀取方式的優點是比較簡單,只需要將設備號傳遞給read()即可經過圖像指針獲取圖像數據,可是缺點是效率較低。而采用內存映射方式時,首先經過ioctl()函數獲取攝像頭緩存區中圖像的幀信息,然后經過~ap()函數將攝像頭文件映射到系統內存,這樣就能夠直接從系統內存中獲取圖像數據了。因為對內存的訪問要遠比對外部設備的訪問速度,因此內存映射方式的速度比較快,效率比較高。本系統采用內存映射方式。本系統采用的圖像采集設備是USB接口的攝像頭。由4.2.2能夠知道,在Linux-中已經包含了針對中星微系列的USB接口攝像頭的驅動,因此只需要在移植內核時將USB驅動靜態編譯進內核即可,而不需要自己實現USB接口攝像頭的驅動,這樣就大大減少了工作量。在USB接口攝像頭驅動程序被加載后,只需要編寫針對本系統的圖像采集應用程序就能夠了。圖像采集程序的流程如圖4-2所示在Eclipse中首先新建一個工程Acqpict。在工程建立完成后,就能夠編寫圖像采集程序的應用程序了。在程序中,利用video4linux提供的數據結構編寫了一個存儲攝像頭設備的數據結構mydintfdev,該結構的主要成員如下Intfd;//設備號char*videodevice;//設備指針structvideo-mmapvmmap;//內存映射structvideo_capabilityvideocap;//攝像頭的基本信息structvideo-mbufvideombuf;//利用mmap映射的幀信息structvideo_picturevideopict;//設備采集的圖像的各種屬性intgrabMethod;//獲取圖像數據的方式unsignedchar*pFramebuffer;//mmap的返回值,即圖像數據在內存的起始地址unsignedchar*ptframe[4];//緩沖區個數pthread_mutextgrabmutex;//互斥信號量volatileintframe-cour;//幀緩沖區計數器利用該數據結構、Linux系統調用和video4linux我們編寫了實現圖像采集程序的各個功能模塊。下面給出部分模塊的實現代碼:(1)攝像頭初始化intinitdev(structmydev*mydev,char*device,intwidth,intheight,intformat,intgrabmethod);//此函數的主要作用是初始化內存幀緩沖區。mydev->cameraname=NULL;mydev一>videodevice=NULL;mydev一>videodevice=(char*)realloc(mydev一>videodevice,16);/*重新分配內存*/my_dev一>cameraname=(char*)realloc(mydev一>cameraname,32);snprintf(my一ev一>videodevice,12,"%s",device);/*最多從源串中拷貝n-1個字符到目標串中,然后再在后面加一個*/memset(my_dev一>cameraname,0,sizeof(mydev一>cameraname));memset(mydev一>bridge,0,sizeof(mydev一>bridge));mydev一>signalquit=1;mydev一>hdrwidth=width;xny_dev一>hdrheight=height;mydev一>formatIn=format;mydev一>bppIn=GetDepth(mydev一>formatIn);//8位深度mydev一>grabMethod=grabmethod;//mmaporreadmy_dev一>pFramebuffer=NULL;}(2)創立采集圖像線程。pthread_create(&wl,NULL,(void*)mygrab,NULL);(3>采集一幀圖像的數據,并調用convertframe()函數使其轉成一幀。intmygrab(structmydev*mydev){mydev->vmmap.height=mydev一>hdrheight;mydev一>>vmmap.width=mydev一>hdrwidth;mydev一>vmmap.format=mydev一>formatIn;if(ioctl(mydev一>fd,VIDIOCSYNC,&mydev一>vmmap.frame)<0)/*判斷當前幀是否截取完畢*/perror("cvsyncerr}n");erreur=一1;}pthread_mutex_lock(&mydev一>grabmutex);jpegsize=convertframe(mydev一>ptframe[mydev一>frame_cour]+sizeof(structframet),mydev一>pFramebuffer+mydev->videombuf.offsets[mydev一>vmmap.frame],mydev一>hdrwidthmydev->hdrheight,mydev->formatIn,mydev->framesizeIn);headerframe=(structframet*)mydev一>ptframe[mydev一>frame_cour];snprintf(headerframe->header,5,"%s","SPCA");headerframe->seqtimes=mstime();headerframe->deltatimes=(int)(headerframe->seqtimes-timecourant);headerframe->w=mydev一>hdrwidth;headerframe->h=mydev一>hdrheight;headerframe->size=((jpegsize<0)?O:jpegsize);headerframe->format=mydev一>formatIn;headerframe->nbframe二frame++;pthreadesmutex一unlock(&vd->grabmutex);/*若調用成功,開始一幀的截取,是非阻塞的*/if((ioctl(mydev一>fd,VIDIOCMCAPTURE,&(mydev一>vmmap)))<0){perror("cmcapture");if(debug)printf(";cmcaptureerr}n");erreur=一1mydev一>vmmap.frame二(mydev一>vmmap.frame+1)%mydev->videombuf.frames;/*當前幀*/mydev一>frame-cour=(mydev一>frame-cour+l)%OUTFRMNUMB;/*緩沖區幀計數器*/(4)對圖像數據進行JPEG壓縮編碼。voidgetJpegPicture(unsignedchar*src,intw,inth,intformat,intsize,intmode){if(format==VIDEO_PALETTE_RAWesJPEG)return;/*如果圖像以及是JPEG格式則不需要再壓縮*/memset(filename,0,sizeof(filename));/*filename為要生成文件的文件名*/sizein=size;/*圖像數據壓縮前的大小*/二w*h*3;/*圖像數據壓縮后的大小*/=(unsignedchar*)realloc(outpict,sizeout);(unsignedchar*)realloc(inpict,sizeout);switch(format)/*根據需要壓縮的圖像格式進行壓縮*/caseVIDEOPALETTERGB24:memcpy(inpict,src,size);sizeout=encode_image(inpict,dest,1024,RGBto420,w,h);printf(,,picturergb24%sm",filename);break;caseVIDEOPALETTERGB32:lpix=}u32*)src;for(i=0;i<sizeout;i+=3)inpict[i+2]=(*lpix&Ox00FF0000)>>16;inpict[i+1]=(*lpix&Ox0000FF00)>>8;inpict[i,+0]=(*lpix&Ox000000FF);lpix++;sizeout=encod_eimage(inpict,dest,1024,RGBto420,w,h);printf(”picturergb32%s}n",filename);break;caseVIDEOPALETTEYUV420P:memcpy(inpict,src,size);sizeout=encode_image(inpict,dest,1024,YUVto420,w,h);printf(”pictureyuv420p%s}n",filename);break;default:break;(5)將壓縮后的圖像數據保存成JPG文件voidGetJpegPict(unsignedchar*src,intw,inth,intformat,intsize,intmode)FILE*foutpictfoutpict=fopen(filename,"wb");/*創立要保存的JPEG文件,filename的形式為:文件}.lpg*/sizeout=ge勺pegsize(src,sizein);/*src為壓縮后圖像數據的首地址*/fwrite(src,sizeof(char),sizeout,foutpict);/*將圖像數據寫入JPEG文件*/fclose(foutpict);}在工程編譯時,默認情況下的編譯器是針對PC環境的,因此要生成在ARM上運行的可執行文件,還需要為該工程指定編譯器。4.4GPRS介紹GPRS(GeneralPacketRadioService),即通用分組無線業務。它是GSMPhase2.1規范實現的內容之一,是在現有的GSM移動通信系統基礎之上發展起來的一種移動分組數據業務。4.4.1GPRS系統原理GPRS是在原有的基于電路交換((CSD)方式的GSM網絡上引入兩個新的網絡節點:GPRS服務支持節點(SGSN)和網關支持節點(GGSN)oSGSN和MSC在同一等級水平,跟蹤單個MS的存儲單元實現安全功能和接入控制,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論