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

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

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

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

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

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