• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于S3C2440的視頻采集及傳輸系統(tǒng)設(shè)計

      2013-12-30 09:48:24王建新
      電子器件 2013年3期
      關(guān)鍵詞:內(nèi)核嵌入式攝像頭

      王建新,張 凱,王 秀

      (西安科技大學(xué)雁塔校區(qū)通信與信息工程學(xué)院,西安710054)

      目前,各種視頻采集以及傳輸?shù)南到y(tǒng)都是由DSP(圖像處理),ARM(圖像顯示)以及利用FPGA搭建整個框架[1],這樣會造成資源嚴(yán)重浪費(fèi),并且成本較大。隨著嵌入式技術(shù)的迅猛發(fā)展,利用嵌入式實(shí)現(xiàn)遠(yuǎn)程視頻采集、可視電話會議等應(yīng)用已經(jīng)成為可能。

      本文基于 S3C2440和 Linux系統(tǒng)平臺,采用USB攝像頭捕捉視頻信號,利用V4L2應(yīng)用編程接口函數(shù),實(shí)現(xiàn)了視頻連續(xù)幀圖像的采集,并利用TCP傳輸方式傳輸給服務(wù)器端,實(shí)現(xiàn)對嵌入式視頻遠(yuǎn)程傳輸。開發(fā)的終端具有體積小,功耗低,適用于便攜式視頻采集需要。

      1 視頻采集傳輸系統(tǒng)的軟硬件架構(gòu)

      本文以三星公司S3C2440為硬件平臺,其片上64 M SDRAM可以滿足視頻采集軟件的內(nèi)存需要,256 M NAND FlLASH用于存放文件和系統(tǒng),3個通道的UART等控制器和豐富的接口,使其擴(kuò)展功能強(qiáng)大,功耗低,簡單穩(wěn)定符合要求。整個硬件框架如圖1所示。

      圖1 系統(tǒng)硬件架構(gòu)

      視頻采集傳輸系統(tǒng)軟件架構(gòu)由以下部分組成:USB(ZC301)攝像頭,攝像頭驅(qū)動,視頻采集應(yīng)用程序,視頻傳輸,視頻顯示組成。如圖2所示。

      圖2 視頻采集傳輸系統(tǒng)軟件構(gòu)架

      USB攝像頭進(jìn)行采集圖像數(shù)據(jù),采集圖像格式為MJPE,采集應(yīng)用程序通過攝像頭驅(qū)動從攝像頭獲得采集的圖像數(shù)據(jù)。利用V4L2接口函數(shù)對設(shè)備采集的數(shù)據(jù)進(jìn)行操作,最后通過網(wǎng)絡(luò)傳輸(TCP)將數(shù)據(jù)傳輸給PC機(jī)進(jìn)行顯示[2]。

      2 視頻采集應(yīng)用程序開發(fā)

      Linu系統(tǒng)具有開源性,高可靠性和強(qiáng)大的網(wǎng)絡(luò)功能等特點(diǎn)。在此基于linux2.6內(nèi)核,對其進(jìn)行裁剪和配置,使內(nèi)核支持USB驅(qū)動和V4L2標(biāo)準(zhǔn),建立交叉編譯環(huán)境,移植編譯好的內(nèi)核到目標(biāo)板,以構(gòu)建linux文件系統(tǒng),進(jìn)行視頻采集傳輸應(yīng)用程序的開發(fā)。

      在linux系統(tǒng)下,圖像采集設(shè)備依賴于V4L2(Video 4 linux 2)標(biāo)準(zhǔn)支持,它針對linux內(nèi)核視頻設(shè)備提供了一系列API接口函數(shù)[3],視頻采集流程如圖3所示。

      ①打開視頻設(shè)備

      在V4L2中,視頻設(shè)備被看作一個文件。使用open()函數(shù)以阻塞模式打開攝像頭設(shè)備,函數(shù)格式為:

      open()函數(shù)中包含兩個參數(shù),第1個參數(shù)代表打開的設(shè)備文件名,第2個參數(shù)代表設(shè)備的打開類型(讀/寫,阻塞或非阻塞),返回值為文件描述符fd,若返回值為大于0,則打開設(shè)備正確;若返回值為-1,則打開設(shè)備錯誤。

      ②初始化設(shè)備,包括獲取設(shè)備信息,設(shè)置設(shè)備格式,函數(shù)格式為:

      圖3 視頻采集流程

      ③設(shè)置視頻捕獲格式

      當(dāng)檢測完視頻設(shè)備支持的標(biāo)準(zhǔn)后,還需要設(shè)定視頻捕獲格式,函數(shù)格式如下:

      ④分配內(nèi)存

      向驅(qū)動申請幀緩沖,一般不超過5個。使用ioctl命令字VIDIOC_REQBUFS來調(diào)用struct v4l2_requestbuffers,v4l2_requestbuffers結(jié)構(gòu)中定義了緩存的數(shù)量,驅(qū)動會據(jù)此申請對應(yīng)數(shù)量的視頻緩存。

      ⑤獲取并記錄緩存的物理空間

      使用VIDIOC_REQBUFS,獲取兩個緩存,并通過調(diào)用VIDIOC_QUERYBUF命令來獲取這些緩存的地址,再使用mmap()函數(shù)轉(zhuǎn)換成應(yīng)用程序中的絕對地址,最后把這段緩存放入緩存隊列。使用V4L2進(jìn)行圖像采集時候,在一幀緩沖完成之后,都會將第二幀覆蓋到另一個緩存中,req.count個緩存輪流使用,不丟數(shù)據(jù)。函數(shù)格式如下:

      ioctl(fd,VIDIOC_QUERYBUF,&buf);//獲取到對應(yīng)index的緩存信息,此處主要利用length信息及offset信息來完成后面的mmap操作。與用戶空間傳遞數(shù)據(jù)的一個中介,會被循環(huán)利用。

      ⑥圖像數(shù)據(jù)采集

      V4L2有三種視頻圖像采集方式:read()、write()方式,內(nèi)存映射方式和用戶指針方式。

      本文采用的內(nèi)存映射方式是在內(nèi)核空間開辟一段地址空間,通過mmap()系統(tǒng)調(diào)用將其映謝到地址空間。

      圖像采集過程中需要使用兩個ioctl的命令:即VIDIOC_DQBUF和VIDIOC_QBUF命令。函數(shù)格式為:

      在配置內(nèi)核時候,對USB驅(qū)動初始化,我們加上V4L2,并修改.config文件,支持ZC301攝像頭,然后進(jìn)行編譯成內(nèi)核鏡像。

      3 視頻傳輸應(yīng)用程序

      常用的圖像傳輸協(xié)議有TCP協(xié)議和UDP協(xié)議。

      TCP是傳輸控制協(xié)議,是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運(yùn)輸層通信協(xié)議。UDP即用戶數(shù)據(jù)報協(xié)議,是一種無連接協(xié)議,傳輸數(shù)據(jù)之前客戶端和服務(wù)器端不建立連接[4]。

      在傳輸過程中,TCP在丟包方面比UDP嚴(yán)密,不容易丟包。因此本文為利用TCP協(xié)議來傳輸數(shù)據(jù),首先初始化攝像頭利用V4L2接口,連接到linux系統(tǒng)的公用協(xié)議標(biāo)準(zhǔn),然后將數(shù)據(jù)存放至緩沖區(qū),產(chǎn)生數(shù)據(jù)包,并且將數(shù)據(jù)包利用TCP傳輸,最后傳輸?shù)?PC 機(jī)并顯示出來[5]。

      在linux中網(wǎng)絡(luò)編程是通過socket接口來進(jìn)行的。Socket是一種常用的進(jìn)程之間的通信機(jī)制。TCP協(xié)議下的socket編程流程圖,如圖4所示。

      Socket編程基本函數(shù)有 socket()、bind()、listen()、accept()、Send()以及 Recv()等,其中根據(jù)客戶端還是服務(wù)器,這些函數(shù)的調(diào)用流程有所區(qū)別,這里對每個函數(shù)進(jìn)行簡明:

      圖4 TCP協(xié)議socket編程流程圖

      Socket():該函數(shù)用于建立一個socket連接,可以指定socket類型信息,對結(jié)構(gòu)體sockaddr_in初始化:包含地址族,端口號,IP地址等;

      Bind()該函數(shù)用于將本地IP地址綁定到端口號,若綁定其他IP地址則不成功。另外還用于TP連接;

      Listen():服務(wù)端程序成功建立套接字和地址進(jìn)行綁定之后,還需要準(zhǔn)備在該套接字上接受新的連接請求;

      Accept():調(diào)用accept()函數(shù)等待并且接收客戶端的連接請求;

      Connect():用于與服務(wù)器建立連接;

      Send()與Recv():分別用于發(fā)送和接收數(shù)據(jù)。

      4 測試結(jié)果

      搭建目標(biāo)機(jī)linux2.6.32運(yùn)行環(huán)境,并且通過宿主機(jī)使用交叉編譯器連接生成可執(zhí)行文件,向目標(biāo)機(jī)移植后運(yùn)行。

      將USB攝像頭同目標(biāo)機(jī)連接好了之后,若成功掛載USB攝像頭,則終端下會顯示識別USB設(shè)備,如圖5所示。

      圖5 USB攝像頭驅(qū)動測試結(jié)果

      對整個系統(tǒng)進(jìn)行測試,該系統(tǒng)在傳輸320×240大小并以MJPEG編碼的視頻時,視頻監(jiān)控服務(wù)器端觀察圖像流暢并且清晰,足夠滿足視頻監(jiān)控需求,如圖6所示。

      圖6 系統(tǒng)測試結(jié)果

      5 結(jié)論

      本文提出一種基于S3C2440平臺和嵌入式linux系統(tǒng)的C/S模型視頻采集和傳輸方案,采用普通市面上的USB攝像頭,極大的降低了成本,利用socket編程實(shí)現(xiàn)TCP網(wǎng)絡(luò)傳輸過程,經(jīng)測試,服務(wù)器端可以實(shí)時的接受到采集傳輸?shù)囊曨l,圖像清晰,滿足視頻監(jiān)控要求。

      [1]周立功.ARM&WinCE實(shí)驗(yàn)與實(shí)踐—基于S3C2410[M].北京:北京航空航天大學(xué)出版社,2007.

      [2]王培珍,徐俊生.基于ARM9的嵌入式linux圖像采集設(shè)計系統(tǒng)[J].中國制造業(yè)信息化,2007,10:85-88

      [3]李新峰,何廣生,趙秀文.基于ARM9的嵌入式Linux開發(fā)技術(shù)[M].北京:電子工業(yè)出版社,2008,10:118-127

      [4]陳文智.嵌入式系統(tǒng)開發(fā)原理與實(shí)踐[M].北京:清華大學(xué)出版社,2005.

      [5]怯肇乾.嵌入式網(wǎng)絡(luò)通信開發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.

      [6]吳明暉.基于ARM的嵌入式系統(tǒng)開發(fā)和應(yīng)用[M].北京:人民郵電出版社,2005.

      [7]江湖,蘇詳芳,劉立海,等.基于網(wǎng)絡(luò)的數(shù)字視頻監(jiān)控系統(tǒng)[J].武漢大學(xué)學(xué)報(自然科學(xué)版),2000,46(5):608-612.

      [8]Lu Yinli,Yu Hongli,Zhang Pengpeng.The Implementation of Embedded Image Acquisition Based on V4L2[C]//Electronics,Communications and Control(ICECC),2011 International Conference.Heng yang,China.2011:549-552

      猜你喜歡
      內(nèi)核嵌入式攝像頭
      浙江首試公路非現(xiàn)場執(zhí)法新型攝像頭
      萬物皆可IP的時代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      攝像頭連接器可提供360°視角圖像
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      搭建基于Qt的嵌入式開發(fā)平臺
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      奔馳360°攝像頭系統(tǒng)介紹
      Altera加入嵌入式視覺聯(lián)盟
      东乌珠穆沁旗| 宁陵县| 都兰县| 石狮市| 廊坊市| 湘乡市| 宜昌市| 金塔县| 天水市| 陆丰市| 曲麻莱县| 衡阳县| 汽车| 临猗县| 石渠县| 丹凤县| 鹤壁市| 金湖县| 菏泽市| 涿州市| 安康市| 四会市| 苏尼特左旗| 上栗县| 措勤县| 长泰县| 宁都县| 马公市| 淮南市| 金塔县| 麻江县| 兴义市| 长葛市| 阿巴嘎旗| 平山县| 沁阳市| 临海市| 米泉市| 成都市| 永年县| 凤阳县|