<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 基于A(yíng)RM的視頻監控終端的設計與實(shí)現

基于A(yíng)RM的視頻監控終端的設計與實(shí)現

作者:武漢理工大學(xué)自動(dòng)化學(xué)院 蘇義鑫 胡 杰 時(shí)間:2008-07-29 來(lái)源:中電網(wǎng) 收藏

系統的軟件設計

本文引用地址:http://dyxdggzs.com/article/86355.htm

  視頻監控終端的軟件設計主要完成兩方面的工作:

 ?。?)在硬件上搭建一個(gè)軟件平臺,搭建軟件開(kāi)發(fā)平臺需要完成UBOOT移植、操作系統內核移植以及操作系統的設備驅動(dòng)程序的開(kāi)發(fā)等工作。

 ?。?)在軟件平臺的基礎上,開(kāi)發(fā)系統的應用程序。借助交叉編譯工具,開(kāi)發(fā)視頻監控終端上運行的采集、壓縮、傳輸程序。

  構建基于S3C2410的Linux平臺
  Linux具有許多優(yōu)點(diǎn),如開(kāi)放源碼;功能強大的內核,支持多用戶(hù)、多線(xiàn)程、多進(jìn)程、實(shí)時(shí)性好、功能強大穩定;大小功能可定制;支持多種體系結構。

  構建嵌入式Linux開(kāi)發(fā)平臺需要先構建交叉編譯環(huán)境,如圖4所示。一套完整的交叉編譯環(huán)境包括主機和目標機。在開(kāi)發(fā)中主機是一臺裝有紅帽公司的FedoreCore 2操作系統的PC機,目標機是基于S3C2410的視頻監控終端。選用的交叉編譯器是GCC3.3.4 for 版,嵌入式Linux內核源代碼包版本號為2.6.8RC。

 

  2.6.8RC版的Linux內核源代碼包中包含了所有的功能模塊。系統中只用到了其中的一部分。因此,編譯內核之前首先要配置內核,裁減掉冗余的功能模塊,經(jīng)過(guò)定制的內核才符合系統設計。具體步驟如下:

 ?。?)鍵入命令make menuconfig,對內核進(jìn)行配置,選擇YAFFS文件系統,支持NFS啟動(dòng),系統使用的是USB接口的攝像頭,故要啟用USB設備支持模塊,包括USB設備文件支持模塊、USB主控制器驅動(dòng)模塊等。此外,USB攝像頭屬于視頻設備,為了使應用程序能夠訪(fǎng)問(wèn)它,還需要啟用Video4Linux模塊。

 ?。?)用make dep命令生成內核程序間依賴(lài)關(guān)系。

 ?。?)make zImage命令生成內核映像文件。

 ?。?)make modules和make modules_install命令生成系統可加載模塊。

  這樣就生成了zImage內核映像文件,把它下載到目標平臺的Flash中。

  本設計采用USB外置攝像頭,在內核配置時(shí)要求以模塊形式加載。首先要完成驅動(dòng)程序,驅動(dòng)中需要提供基本的I/O操作接口函數open、read、write、close的實(shí)現,對中斷的處理實(shí)現,內存映射功能以及對I/O通道的控制接口函數ioctl等,并把他們定義在struct file_operations中。這樣當應用程序對設備文件進(jìn)行諸如open、close、read、write等,系統調用操作時(shí),嵌入式Linux內核將通過(guò)file_operations結構訪(fǎng)問(wèn)驅動(dòng)程序提供的函數。接著(zhù)把USB驅動(dòng)程序編譯成可以動(dòng)態(tài)加載的模塊,這樣攝像頭就可正常工作了。

  視頻監控終端軟件的設計
  視頻監控終端軟件按功能分為三部分:視頻采集、壓縮、傳輸。這個(gè)軟件的開(kāi)發(fā)都是基于先前配置好的嵌入式內核。

  (1)視頻采集部分

  使用Video4Linux接口函數訪(fǎng)問(wèn)USB攝像頭設備,捕獲實(shí)時(shí)的視頻流。首先完成v4l_struct數據結構的定義,如設備基本信息,圖像屬性,各個(gè)信號源屬性等;采集模塊一方面通過(guò)USB集線(xiàn)器采集USB攝像頭中的圖像,另一方面啟動(dòng)多個(gè)采集線(xiàn)程,分別在不同的端口上監聽(tīng),一旦有請求連接,采集線(xiàn)程立即從設備緩沖區中把視頻流數據讀出,放入到視頻處理緩沖區中進(jìn)行下一步的處理。

  (2)視頻數據的壓縮部分

  在視頻監控系統中,大量的數據需要通過(guò)網(wǎng)絡(luò )傳輸,為了保證傳輸質(zhì)量和傳輸實(shí)時(shí)性,就需要在傳輸之前進(jìn)行編碼壓縮以減少數據量,本文采用MPEG-4編碼標準進(jìn)行數據壓縮。在網(wǎng)絡(luò )上可以下載到開(kāi)源的xvidcore軟件作為視頻壓縮的核心算法,xvidcore是一個(gè)高效的、移植性很強的多媒體編碼軟件,將它在PC機上進(jìn)行交叉編譯,生成的文件拷貝到目標系統下。

  (3) 視頻數據傳輸部分

  傳輸模塊的作用在于把壓縮之后的視頻流傳送到遠程的PC機客戶(hù)上,視頻流數據的傳輸是基于TCP/IP協(xié)議。視頻傳輸采用了標準的RTP傳輸協(xié)議。RTP是目前解決流媒體實(shí)時(shí)傳輸問(wèn)題的最好辦法,在Linux平臺上進(jìn)行實(shí)時(shí)流媒體編程,需要使用一些開(kāi)放源代碼的RTP庫,如LIBRTP、JRTPLIB等。定義一種較為簡(jiǎn)單的握手協(xié)議:PC機端的采集程序不停地發(fā)請求數據包到采集終端,采集終端把已經(jīng)捕獲的圖像打包返回給主機。每個(gè)RTP信息包被封裝在UDP消息段中,然后再封裝在IP數據包中發(fā)送出去。接收方自動(dòng)組裝接收到的數據幀,還原成視頻數據。

結束語(yǔ)

  本文介紹了一種基于的視頻監控系統的設計方案,采用軟壓縮算法,討論了系統的硬件和軟件設計。本系統和市場(chǎng)上其它視頻監控系統相比,開(kāi)發(fā)周期短,價(jià)格低廉,適用于對視頻圖像要求不太高的場(chǎng)合。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 嵌入式 DSP RISC 視頻臨控 ARM Linux

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>