基于ARM11的嵌入式Web監(jiān)控系統(tǒng)的研究與實現(xiàn)
隨著嵌入式計算機、互聯(lián)網(wǎng)、數(shù)字圖像以及通信等技術的發(fā)展,視頻監(jiān)控技術也得到迅速的發(fā)展,并滲透到人們的現(xiàn)實生活中。視頻監(jiān)控的領域涉及安全監(jiān)控、遠程醫(yī)療、智能家居、視頻實時會議等。
本文引用地址:http://m.butianyuan.cn/article/201609/303783.htm文中利用Web和嵌入式技術,以ARM11-S3C6410處理器為硬件核心,以嵌入式Linux系統(tǒng)作為軟件平臺,研究并實現(xiàn)了一個嵌入式Web實時監(jiān)控系統(tǒng),為嵌入式設備接入Internet提供了一種簡單且有效的解決技術,進而可以實現(xiàn)通過Web瀏覽器對嵌入式設備進行遠程監(jiān)控的目的。
1 系統(tǒng)總體設計
文中設計一種典型的嵌入式Web監(jiān)控系統(tǒng)主要通過嵌入式終端上的攝像頭進行視頻圖像的采集,視頻服務器MJPG—streamer然后對采集過來的數(shù)據(jù)進行壓縮,傳輸JPEG格式的圖像到用戶客戶端瀏覽器。用戶可以通過Web瀏覽器實時遠程監(jiān)控攝像頭采集到的視頻圖像。系統(tǒng)整體框架如圖1所示。

2 硬件設計
本系統(tǒng)使用的硬件平臺功能框圖如圖2所示。該平臺采用三星處理器S3C6410。該處理器基于ARM1176JZF—S內(nèi)核,64/32位內(nèi)部總線架構,并且具有豐富的內(nèi)部資源,支持MPEG4/H.264編解碼、VC1的解碼,實時視頻會議和NTSC,PAL的輸出。在片上資源非常豐富的基礎上,對硬件系統(tǒng)的配置進行了相關的擴展,包括1塊256 MB的NAND Flash和2塊64 Mbyte的DDR SDRAM,1個連接PC機用于調(diào)試的串口、2個USB接口、1個以太網(wǎng)控制芯片DM9000AE擴展了1個網(wǎng)絡口,在主控USB接口外接數(shù)字攝像頭。

3 軟件設計
3.1 嵌入式Web服務器boa的移植
本項目采用的嵌入式Web服務器有Boa(WWW.boa.org),它一般是單進程服務器,即同一時刻只能響應單個用戶的,而無法并發(fā)響應,這也是和Apache等高性能的Web服務器主要的區(qū)別,但對于應用于嵌入式設備的場合里已足夠。這里介紹常用的web服務器boa的移植。Boa的可執(zhí)行代碼只有約60KB,是一個非常小巧的單任務服務器,所以只能依次完成用戶的請求,而不會fork出新的進程來處理并發(fā)連接請求。但Boa支持CGI,能夠為CGI程序fork出一個新的進程來響應用戶的需求。在其站點公布的速度和安全性能測試中,Boa的性能要好于Apache服務器。

最后將生成的可執(zhí)行程序boa掛在到目標系統(tǒng),若能成功地訪問靜態(tài)HTML網(wǎng)頁和運行測試用的CGI程序,則表明配置成功。
3.2 Cgi技術簡介以及Cgi庫的移植
目前Web開發(fā)中生成動態(tài)Web頁面的方法有CGI和服務器腳本,如JSP,ASP等,但在嵌入式Web服務器中,考慮資源有限,一般都只提供CGI支持,因此在嵌入式設備中Web應用實際上就是基于CGI的開發(fā)。
CGI(Common Gate Interface)是一段運行在Web服務器上的程序,它提供了同客戶端Html頁面的接口。為了完成服務器與客戶端的動態(tài)交互,依據(jù)cgi標準編寫的代碼運行在服務器端,處理來自用戶瀏覽器的數(shù)據(jù),如表單數(shù)據(jù)的操作、Web數(shù)據(jù)庫的訪問以及遠程操控等。編寫不同的cgi程序,用于視頻采集設備的初始化以及實時控制。CGIC是一個支持CGI開發(fā)的開放源碼的標準C庫,只需要在開發(fā)的站點和程序文檔中公開聲明即可,表明程序使用了CGIC庫,用戶也可以購買商業(yè)授權而無需公開聲明。首先在其官網(wǎng)下載源代碼,目前使用的是cgic205版,設置交叉編譯器進行交叉編譯,并移植cgic庫。完成移植后,將capture和egictest.cgi文件復制到Web服務器中的/web/cgi—bin目錄下。C GIC庫移植成功后,可在瀏覽器中訪問其測試頁面則表明測試成功。測試頁面如圖3所示。

3.3 MJPG-streamer服務器的設計
MJPG-streamer是一個基于網(wǎng)絡應用的開源流媒體服務器。本課題對MJPG-streamer流媒體服務器進行深入研究,結合試驗平臺的特點,對其進行修改、編譯,使這個流媒體服務器可以正常的工作在系統(tǒng)平臺上。利用MJPG-streamer流媒體服務器與Linux系統(tǒng)所提供的API以及豐富的網(wǎng)絡功能完成視頻數(shù)據(jù)的采集、壓縮和網(wǎng)絡傳輸。
用戶通過瀏覽器與嵌入式Web服務器通信。MJPG-streamer視頻服務器主要負責架設服務,進行配置(端口,顯示參數(shù)),攝像頭的識別由s3c2440_camif.c驅(qū)動程序完成。MJPG-streamer服務器是一個命令行應用軟件,它運行時會啟動一個socket套接字來偵聽8080端口,若有TCP連接請求,則以TCP流將視頻發(fā)送出去??梢詮囊粋€輸入端復制JPG格式的圖像到多個輸出端,也可以將從攝像頭采集到的JPEG視頻流通過網(wǎng)絡傳輸?shù)綖g覽器上或者嵌入式設備上。有了視頻服務器處理數(shù)據(jù)的輸入輸出,在構建前臺網(wǎng)頁時可以直接調(diào)用生成相應的實時數(shù)據(jù),方法是在HTML頁面上輸入:http://IP地址:端口/? action=參數(shù)”格式來調(diào)用,其中參數(shù)為“stream”表示調(diào)用視頻網(wǎng)頁,“snapshot”表示調(diào)用相應網(wǎng)頁,這個功能是通過httpd服務器實現(xiàn)的,MJPG—streamer流程圖如圖4所示。

MJPG—streamer其流程圖如圖4,有輸入組件input_uvc和輸出組件output_http,以及out_file等。每個組件的功能明。input_testpic ture.so將預設好的圖片編譯成頭文件,即使攝像頭不工作了,也能繼續(xù)傳輸未完全的;input_uvc.so調(diào)用攝像頭驅(qū)動,從攝像頭讀取視頻數(shù)據(jù),讀取一幀數(shù)據(jù),判斷數(shù)據(jù)幀的大小,如果數(shù)據(jù)幀太小或者太大,則丟棄。判斷原始數(shù)據(jù)格式,如果是YUV進行格式轉換后將原始數(shù)據(jù)復制到全局緩沖區(qū),繼續(xù)刷新緩沖區(qū)。而input_control.so是攝像頭控制接口,output_http.so是一個網(wǎng)站服務器,將視頻文件以HTTP視頻數(shù)據(jù)服務流形式輸出。output_file.so實現(xiàn)圖片存儲到特定的文件夾。
評論