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

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

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

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

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

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