摘要:根據(jù)增強(qiáng)家居安防系統(tǒng)的要求,,提出一種視頻監(jiān)控系統(tǒng)設(shè)計(jì),。通過分析ARM微處理器的結(jié)構(gòu)體系和Linux操作系統(tǒng)的工作原理,,給出了這種在ARM9核上移植瘦身后的Linux操作系統(tǒng)和應(yīng)用程序的方案,。用戶可經(jīng)由任意網(wǎng)絡(luò)設(shè)備監(jiān)控ARM板上USB攝像頭采集到的圖像,,實(shí)現(xiàn)智能家居系統(tǒng)中的網(wǎng)絡(luò)視頻監(jiān)控的目的。
關(guān)鍵詞:嵌入式:微處理器,;Web服務(wù)器:視頻監(jiān)控
O 引言
隨著科學(xué)技術(shù)的進(jìn)步,,人們對生活質(zhì)量也提出了越來越高的要求,舒適,、合理,、便捷和安全的家居環(huán)境正逐步被大眾所青睞。視頻監(jiān)控作為家居安防的重要組成部分,,也逐步受到人們的重視,。這里設(shè)計(jì)采用ARM處理器嵌入Linux操作系統(tǒng)的方法實(shí)現(xiàn)家居視頻監(jiān)控。Linux操作系統(tǒng)作為嵌入式系統(tǒng)的新寵以其開源特點(diǎn)非常適合面向開發(fā),,而ARM核憑借其較高的指令和數(shù)據(jù)處理能力更是吸引了眾多研發(fā)人員的眼球,,二者的結(jié)合為智能家居視頻監(jiān)控提供了一個嶄新的發(fā)展方向。
1 智能家居系統(tǒng)的總體架構(gòu)
智能家居系統(tǒng)就是利用計(jì)算機(jī)技術(shù),、數(shù)字技術(shù),、網(wǎng)絡(luò)通信技術(shù)和綜合布線技術(shù),將與家庭生活密切相關(guān)的家電控制系統(tǒng),、防盜報警系統(tǒng),、網(wǎng)絡(luò)信息服務(wù)系統(tǒng)等通過家庭網(wǎng)絡(luò)有機(jī)結(jié)合起來,從而給用戶帶來最大程度的高效、便利,、舒適與安全,。
目前比較流行的智能家居系統(tǒng)由四大部分組成:家居安防系統(tǒng)、家居通訊系統(tǒng),、家居家電自動化控制系統(tǒng)和家居音視頻系統(tǒng),。圖1給出了一個簡單的智能家居系統(tǒng)架構(gòu)。
智能家居系統(tǒng)中我們可以通過任意網(wǎng)絡(luò)設(shè)備訪問Web服務(wù)器的家庭網(wǎng)關(guān)以監(jiān)控家用電器,、報警設(shè)備和攝像頭等設(shè)備的運(yùn)行情況來實(shí)現(xiàn)住家的智能化,。在現(xiàn)階段智能家居起步時期,家居設(shè)計(jì)的時候往往把音視頻系統(tǒng)放在很重要的位置,,這里介紹一種用于居家的視頻監(jiān)控方法。
2 視頻監(jiān)控系統(tǒng)的架構(gòu)
鑒于家居系統(tǒng)的結(jié)構(gòu)特點(diǎn),,選用集軟硬件于一體,,具有軟件代碼小、高度自動化,、響應(yīng)速度快等特點(diǎn)的嵌入式系統(tǒng),。設(shè)計(jì)采用ARM(Adva-nced RISC Machinesl核嵌入Linux操作系統(tǒng)的方法實(shí)現(xiàn)。系統(tǒng)主要由嵌入式S3C2410處理器,、相關(guān)支撐硬件,、USB攝像頭、嵌入式操作系統(tǒng)Li-nux及應(yīng)用軟件等部分組成,,該系統(tǒng)是可以獨(dú)立工作的“器件”,。
2.1 系統(tǒng)的硬件結(jié)構(gòu)
系統(tǒng)硬件部分主要包括S3C2410處理器、儲存器和外圍電路,,其結(jié)構(gòu)框架如圖2所示,。
基于ARM9的嵌入式S3C2410處理器是整個系統(tǒng)的核心,它提供了豐富的片內(nèi)資源,,支持Linux操作系統(tǒng),,并能完成整個系統(tǒng)的調(diào)度工作。CPU內(nèi)置USB控制器,,USB攝像頭將采集到的圖像通過USB接口送與S3C2410進(jìn)行處理,,以等待發(fā)送。網(wǎng)絡(luò)芯片DM9000有成熟的Linux驅(qū)動程序支持,,其100Mb/s以太網(wǎng)接口,,以傳輸速率快為設(shè)計(jì)首選。
2.2 構(gòu)建基于S3C241O的嵌入式Linux系統(tǒng)
Linux是一款可以免費(fèi)使用,,且源碼開放以便開發(fā)人員隨意裁剪,,且具有穩(wěn)定性能的操作系統(tǒng)。宿主機(jī)選用Red Hat公司的IAnux9.0服務(wù)器版,并在其上構(gòu)建嵌入式Linux開發(fā)平臺需要的交叉編譯環(huán)境,。
在S3C2410上搭建嵌入式Linux軟件平臺需要完成引導(dǎo)加載程序Boot loader的移植,;Linux操作系統(tǒng)內(nèi)核的移植和包含應(yīng)用程序的文件系統(tǒng)移植。
Boot Loader是在操作系統(tǒng)內(nèi)核運(yùn)行之前執(zhí)行的一段小程序,。Linux內(nèi)核有自己的結(jié)構(gòu)體系,,智能家居系統(tǒng)的Linux內(nèi)核由標(biāo)準(zhǔn)Linux內(nèi)核裁剪而來。設(shè)計(jì)直接通過系統(tǒng)調(diào)用訪問Linux的內(nèi)核資源,,編譯內(nèi)核時加入USB攝像頭Webeve 2000主芯片OV511的驅(qū)動和以太網(wǎng)控制芯片DM90-00的驅(qū)動,,文件系統(tǒng)選用Ramdisk技術(shù)。
3 視頻監(jiān)控系統(tǒng)的實(shí)現(xiàn)
3.1 Vide04Linux程序
Vide04Linux(簡稱V4L)是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動,,它針對視頻設(shè)備的應(yīng)用程序編程提供一系列接口函數(shù),。對于USB接口攝像頭,其驅(qū)動程序中提供基本的I/O操作接口函數(shù)open,、read,、write、close等,。
3.2 網(wǎng)絡(luò)通信程序
在TCP/IP網(wǎng)絡(luò)應(yīng)用中,,通信的兩個進(jìn)程間相互作用的主要模式是瀏覽器/服務(wù)器模式,即客戶向服務(wù)器發(fā)出服務(wù)請求,,服務(wù)器接收到請求后,,提供相應(yīng)的服務(wù)。
Linux中的網(wǎng)絡(luò)編程是通過Socket接口來進(jìn)行的,,Socket相當(dāng)于進(jìn)行網(wǎng)絡(luò)通信兩端的插座,,只要對方的Socket和自己的Socket有通信聯(lián)接,雙方就可以發(fā)送和接收數(shù)據(jù)了,。在智能家居系統(tǒng)中,,用戶所持有的任意網(wǎng)絡(luò)設(shè)備的和家用ARM9開發(fā)板就是Socketet通信的兩端。
3.3 嵌入式WEB服務(wù)器和視頻監(jiān)控的實(shí)現(xiàn)
家居系統(tǒng)選用的Web服務(wù)器是一款非常小巧的,,執(zhí)行代碼只有約60kB的一個單任務(wù)嵌入式boa服務(wù)器,。客戶端瀏覽器和嵌入式Web服務(wù)器之間通過HTTP協(xié)議所進(jìn)行的“請求一>響應(yīng)”的工作原理如圖3所示,。
構(gòu)建嵌入式服務(wù)器boa,,并針對具體情況配置boa,這里在/etc下建立boa目錄,,并在/etc/boa目錄下建立boa.conf文件,。設(shè)置boa.-conf文件里的用戶訪問權(quán)限User nobody為user 0;Group nogroup為Group 0,;日志目錄Errorlog和AccessLog為var/log/boa/error log和/var/log/boa/access log,;html文件目錄為/var/www;默認(rèn)首頁為/var/www/;cgi腳本目錄為ScriptAlias/cgi-bin//var-/www/cgi-bin,。在Makefile文件里修改交叉編譯器的路徑,,并把PC上/etc/mime.types文件拷貝到開發(fā)板的/etc目錄下。
CGI(通用網(wǎng)關(guān)接口)定義了Web服務(wù)器與其他可執(zhí)行程序(CGI)之間進(jìn)行交互的接口標(biāo)準(zhǔn),。CGI程序用來完成Web網(wǎng)頁中表單數(shù)據(jù)處理的動態(tài)交互工作,,CGI程序與Web服務(wù)器,以及客戶端瀏覽器之間交互工作的原理如圖4所示,。
這里編寫的CGI程序主要完成客戶端瀏覽器用戶名和密碼的校驗(yàn),,通過后完成本地數(shù)據(jù)的上傳。
CGI程序?qū)ndex.html提交數(shù)據(jù)的處理,,通過登陸后提供進(jìn)入視頻監(jiān)控界面(http://211.81.251.32:8888)的鏈接,,我們用webc-am server作為瀏覽器端視頻播放器,該播放器可隨著監(jiān)控網(wǎng)頁的打開而自動下載到用戶端瀏覽器,,并不需要專用的瀏覽器,,但看到監(jiān)控效果是網(wǎng)頁打開時刻的靜止圖像。
我們可以通過手動刷新來達(dá)到觀看視頻的目的,,這里在CGI程序里嵌入Java Script程序?qū)崿F(xiàn)圖像每秒自刷新一次,嵌入自刷新部分程序如下:
這樣就可以看到每隔一秒圖像就自動載入的動態(tài)視頻,,如圖5所示,,達(dá)到了視頻監(jiān)控的目的。
4 結(jié)論
采用S3C2410處理器嵌入Linux操作系統(tǒng)的方法實(shí)現(xiàn)視頻監(jiān)控可最大程度地節(jié)省系統(tǒng)的軟硬件資源,,硬件部分是系統(tǒng)穩(wěn)定性,、指令執(zhí)行速度和體積等方面的最佳選擇,軟件部分以裁剪Linux操作系統(tǒng)的方法實(shí)現(xiàn),,用一個精簡的操作系統(tǒng)完成圖像采集與網(wǎng)絡(luò)傳輸?shù)墓δ?,十分適用于智能家居系統(tǒng)中的視頻監(jiān)控。不僅如此,,智能家居的其它功能均可采用類似方法實(shí)現(xiàn),,事實(shí)上,一個龐大的智能家居系統(tǒng)完全可以由S3C2-410處理器,、相關(guān)硬件和嵌入裁剪得當(dāng)?shù)腖inux操作系統(tǒng)完成,。