摘要:本文以ARM芯片作為控制中心,利用ARM控制板從端口獲取視頻信息,最終實現(xiàn)實時監(jiān)測功能。實驗證明該系統(tǒng)有良好的可靠性,而且有較好的可擴展性。
關鍵詞:嵌入式系統(tǒng);驅(qū)動程序;視頻采集
中圖分類號:TP277 文獻標識碼:A 文章編號:1007—9599 (2012) 14—0000—02
視頻監(jiān)控是安全防范系統(tǒng)的重要組成部分,它是一種防范能力較強的綜合系統(tǒng)。視頻監(jiān)控以其直觀、準確、及時和信息內(nèi)容豐富而廣泛應用于許多場合。隨著現(xiàn)代計算機技術、多媒體技術、網(wǎng)絡技術和數(shù)字圖像壓縮技術的迅猛發(fā)展而誕生的基于嵌入式監(jiān)控系統(tǒng)是高智能視頻監(jiān)控系統(tǒng)的一個重要發(fā)展方向。
一、系統(tǒng)主要參數(shù)
(一)S3C2440 處理器基本功能
S3C2440是韓國三星公司的一款基于ARM920T內(nèi)核的16/32位RISC嵌入式微處理器,標準工作頻率:400MHz,主要面向手持設備以及高性價比,低功耗的應用。該處理器具有:1個LCD 控制器、SDRAM 控制器、3個通道的UART、4個具有PWM 功能的計時器和一個內(nèi)部時鐘、觸摸屏接口、攝像頭接口。
三星S3C2440開發(fā)板提供了一套較完整的通用外圍設備,使整個系統(tǒng)的功耗最低,從而免去了添加、配置外圍接口的麻煩,有效縮小了線路板的面積,這也是該系統(tǒng)采用該處理器的重要原因。
(二)USB攝像頭模塊的基本參數(shù)
USB是英文Universal Serial Bus的縮寫,中文含義是“通用串行總線”。它是一種應用在PC領域的新型接口技術。主要具有以下優(yōu)點:
具有即插即用功能,能廣泛支持軟硬件,而且低功耗,可選擇的多種速度模式,同時具有完備的總線拓撲結(jié)構(gòu)和硬件結(jié)構(gòu)標準化。
該設計中用到了S3C2440芯片的一個USB主機接口,主要用來接USB攝像頭。該系統(tǒng)采用網(wǎng)眼PC350攝像頭作為終端模塊,該模塊采用的是OV511視頻芯片,具體參數(shù)如表1所示。
二、加載USB攝像頭驅(qū)動
在Linux下,所有外設都被看成是一種特殊的文件,稱為設備文件。系統(tǒng)調(diào)用是內(nèi)核和應用程序之間的接口,而設備驅(qū)動程序則是內(nèi)核和外設之間的接口。其中設備驅(qū)動程序完成了設備的初始化和釋放、對設備文件的各種操作和中斷處理等功能,為應用程序屏蔽了外設硬件的細節(jié),使得應用程序可以像普通文件一樣對外設進行操作。因此,這給應用程序的編寫帶來了極大的好處,只需調(diào)用相應的設備驅(qū)動文件就能夠訪問相應的設備。
對于USB攝像頭,驅(qū)動程序提供了基本的I/O操作接口函數(shù),中斷的處理,內(nèi)存映射以及I/O通道控制接口函數(shù)ioctl等,并把他們定義在file_operations結(jié)構(gòu)中。這樣當應用程序?qū)υO備文件進行系統(tǒng)調(diào)用時,Linux內(nèi)核將通過file_operations結(jié)構(gòu)訪問驅(qū)動程序提供的函數(shù)。
在內(nèi)核目錄下輸入make menuconfig命令,進入原內(nèi)核配置文件,進入主菜單操作,選擇Multimedia devices子菜單,為內(nèi)核加入V4L內(nèi)核模塊。選中
其中OV511是支持基于OV511芯片的攝像頭,目前市場上大部分攝像頭都是使用該芯片設計的。如圖1所示,選擇
執(zhí)行make zImage命令,編譯內(nèi)核,這樣系統(tǒng)就加載了OV511攝像頭的驅(qū)動程序,攝像頭就可以正常工作了。
三、V4L視頻數(shù)據(jù)結(jié)構(gòu)
攝像頭屬于視頻類設備,遵循的標準為Video for Linux(V4L)標準。這個標準定義了一套統(tǒng)一的API接口、內(nèi)核、驅(qū)動、應用程序都以這個接口為標準進行交流。視頻采集工作開始之前要定義Video4Linux數(shù)據(jù)結(jié)構(gòu),這個數(shù)據(jù)結(jié)構(gòu)包含視頻采集的重要信息,接下來對v4L結(jié)構(gòu)中包含的數(shù)據(jù)結(jié)構(gòu)及其用途作簡要說明。
四、視頻采集
視頻采集都是圍繞vdIn定義的幾種重要數(shù)據(jù)結(jié)構(gòu)實現(xiàn)的,完成基于v4l的USB視頻采集,就要獲得相關的視頻采集設備的信息和圖像信息,并對采集窗口、顏色模式、幀狀態(tài)初始化,然后才能進行視頻的采集工作。
從上面視頻采集流程圖可以看出,實現(xiàn)基于v4l的USB視頻數(shù)據(jù)采集,先要打開視頻設備并獲得相關的視頻采集設備的信息和圖像信息,并對采集窗口、顏色模式、幀狀態(tài)初始化,然后才能進行視頻圖像的采集。
五、視頻顯示
完成視頻采集后,需要編寫顯示程序把圖像信息顯示在液晶屏上,下面完成顯示程序函數(shù)的編寫。
(一)fb_init()――初始化液晶屏函數(shù)
使用/dev/video0作為液晶的設備文件,如果可以正常打開設備文件,那么系統(tǒng)將回傳的文件描述符放到dev_fp中,以后系統(tǒng)調(diào)用函數(shù)就可使用對設備文件進行操作;mmap()函數(shù)是一個映射函數(shù),通過它完成將屏幕緩沖區(qū)映射到用戶空間。之后用戶就可以通過讀寫這段虛擬地址訪問屏幕緩沖區(qū)。實際上,使用幀緩沖設備的應用程序都是通過映射操作來顯示圖形的。
(二)調(diào)用close(fb_fp)函數(shù)關閉顯示設備
應用程序編寫完后,需要在linux操作系統(tǒng)交叉編譯環(huán)境下對此文件進行編譯,生成板子的可執(zhí)行文件。取圖像采集顯示程序文件名為cam.c,在linux操作系統(tǒng)下執(zhí)行以下指令進行編譯:
arm—linux—gcc—o cam cam.c
編譯無錯的話就生成名為cam的可執(zhí)行文件,通過usb掛載,把cam拷貝至板子的/bin目錄下,執(zhí)行相關指令可以實現(xiàn)圖像采集顯示。
六、視頻存儲
該系統(tǒng)采集的圖像存到SD卡上,這樣方便終端客戶直接拿SD卡到PC機上讀取相關信息,同時也滿足系統(tǒng)的易維護性的設計原則。在內(nèi)核目錄下輸入make menuconfig命令,進入原內(nèi)核配置文件,進入主菜單操作配置SD卡驅(qū)動,在Device Drivers 菜單中,選擇進入MMC/SD Card support — — —>,執(zhí)行make zImage命令,編譯內(nèi)核,這樣系統(tǒng)就加載了SD卡的驅(qū)動程序。
在系統(tǒng)加載SD卡驅(qū)動后,要執(zhí)行SD掛載命令,把SD掛載到linux操作系統(tǒng)中,掛載命令如下:
這樣SD卡就可以在linux系統(tǒng)下正常工作了,可以進行圖像的存儲了。
七、小結(jié)
完成了系統(tǒng)監(jiān)控終端的設計,在linux系統(tǒng)下實現(xiàn)OV511攝像頭的圖像采集功能,同時實現(xiàn)了USB攝像頭驅(qū)動在linux內(nèi)核上加載,基于Video4Linux的視頻采集以及圖像的存儲功能,最終整體實現(xiàn)視頻監(jiān)控功能。
參考文獻
[1]張錦榮,陳岳林.基于GSM的遠程控制門禁系統(tǒng)的研究[J].微計算機信息,2008,35(24):154~156