基于ARM的圖像采集無(wú)線(xiàn)傳輸系統(tǒng)的設(shè)計(jì)修改稿模板_第1頁(yè)
基于ARM的圖像采集無(wú)線(xiàn)傳輸系統(tǒng)的設(shè)計(jì)修改稿模板_第2頁(yè)
基于ARM的圖像采集無(wú)線(xiàn)傳輸系統(tǒng)的設(shè)計(jì)修改稿模板_第3頁(yè)
基于ARM的圖像采集無(wú)線(xiàn)傳輸系統(tǒng)的設(shè)計(jì)修改稿模板_第4頁(yè)
基于ARM的圖像采集無(wú)線(xiàn)傳輸系統(tǒng)的設(shè)計(jì)修改稿模板_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論