摘要:嵌入式系統設計中,硬件設計是基礎,軟件設計是核心。文章提出了一種行之有效的嵌入式軟件設計方案,并以此為核心,完成了一種基于嵌入式的遠程網絡視頻監控系統的軟件設計。系統軟件設計中完成以下幾方面的工作:首先完成對系統軟件結構的設計,其次完成對嵌入式Linux開發的軟件操作平臺的搭建,最后完成對視頻監控軟件中USB攝像頭的驅動模塊及對視頻圖像的采集、顯示等應用程序模塊的設計與實現。
關鍵詞:嵌入式;軟件設計;Linux
中圖分類號:TP391.4 文獻標識碼:A
文章編號:1009-3044(2019)35-0061-02
隨著計算機網絡、通信以及數字信息處理技術的不斷進步,基于嵌入式Web的遠程網絡視頻監控系統就是在計算機網絡技術與嵌入式技術完美結合下的催生產物,它是現代高科技信息產業的結晶。基于嵌入式Web的遠程網絡視頻監控系統把視頻圖像的處理和Web功能都集成到一個體積很小的設備之內,通過接入Internet網絡,利用Web瀏覽器即可實現對采集到的視頻圖像進行查看,這樣也就省掉了對傳統的視頻監控系統設備鋪設很多復雜的電纜這個煩瑣過程,而且系統的安裝非常方便,因而使得基于嵌入式Web的遠程網絡視頻監控系統獲得人們的一致肯定和廣泛應用。
1 嵌入式系統的軟件設計
1.1系統軟件設計的基礎環節
基于嵌入式的遠程網絡視頻監控系統的設計是在ARM9+Linux平臺上進行研究開發設計的,因此,在完成系統的硬件設計及硬件平臺的構建之后,就要開始進行軟件方面的設計。而整個軟件設計又緊密圍繞嵌入式Linux操作系統而展開,也就是說,嵌入式Linux操作系統是整個嵌入式系統軟件設計的核心。
從軟件的角度來講,一個嵌入式Linux操作系統通常分為四個主要部分:
1)引導加載程序BootLoader;
2)嵌入式Linux內核;
3)文件系統;
4)用戶應用程序。包含滿足使用用戶需求的某些應用程序。
倘若要使一個嵌入式Linux操作系統能夠在嵌入式硬件平臺上正常的運行,就必須要先完成對BootLoader、嵌入式Linux內核及其文件系統的燒寫工作,即將BootLoader、Linux內核及其文件系統全部下載到嵌入式硬件平臺上才能運行,三者缺一不可。
1.2系統軟件總體框架
嵌入式系統軟件設計的目的是要為嵌入式的遠程網絡視頻監控系統構建一種B/S(即瀏覽器,服務器)的工作模式。并在這種B/S工作模式下,實現嵌入式Web服務器端與客戶端(這里指Web瀏覽器)之間的通信和信息交互,從而完成設計系統的各項系統功能。嵌入式系統的服務器端主要由系統軟件和應用軟件兩個部分組成。對系統軟件部分的設計包括對引導加載程序BootLoader的移植、對嵌入式Linux系統內核的配置、裁剪和移植、對文件系統的移植等工作,也就是要完成系統軟件設計基礎環節。
1.3系統軟件功能模塊設計
軟件設計的最終目的就是實現嵌入式系統的遠程網絡視頻監控的各項功能。而在進行系統軟件設計的過程中,應該遵循軟件工程設計的方法:首先要根據系統需要實現的各項功能,對系統進行功能模塊的劃分和抽象,然后進行抽象到具體的深入分析,從而構造出系統軟件設計的層次結構,提高系統軟件設計的可理解性。
嵌入式系統及其相應設備驅動模塊需要完成以下幾個方面內容:
首先是對整個嵌入式系統軟件操作平臺Linux內核的裁剪、編譯及其移植;其次是完成硬件平臺上所用設備的驅動程序的加載;最后是對系統視頻數據采集程序模塊的加載。
而Boa Web服務器模塊要完成的內容包括:
1)采用B/S模式的監測結構,ARM板是服務端,選用Boa作為Web服務器;
2)因為Boa服務器支持CGI編程,可設計CGI程序產生瀏覽器的監控頁面;
3)遠程用戶可以通過連接Internet網絡,利用Web瀏覽器打開視頻監控的Web主頁面,從而收看由嵌入式系統的USB攝像頭采集到的對現場場景的實時視頻圖像數據。
后臺處理程序模塊需要完成的內容主要包括利用網絡功能的Telnet技術實現監測端用戶遠程登錄到嵌入式設備,并實現對設備的一系列控制操作;同時還需要完成其他一些后臺處理程序。
2 嵌入式系統軟件操作平臺的構建
2.1嵌入式Linux交叉編譯環境的建立
在裁減和定制嵌入式Linux內核,并將其應用于特定的嵌入式系統硬件平臺之前,考慮到一般嵌入式系統硬件平臺內部的存儲空間是有限的,通常需要在PC機(或稱宿主機)上建立一個嵌入式交叉編譯環境,用于為特定的嵌入式系統進行嵌入式開發設計服務。
整個交叉編譯的過程就是首先在宿主機(PC機)上通過跨平臺嵌入式交叉編譯器把源文件編譯成嵌入式系統硬件平臺上的可執行文件,然后通過串口、并口、USB口或者網絡傳送等方式,將經過交叉編譯后生成的可執行文件下載到目標系統硬件平臺(即嵌入式系統的硬件平臺)上的Flash或者其他存儲介質中,最后在目標系統硬件平臺上運行這些文件。
2.2嵌入式Linux的內核裁剪與編譯
由于嵌入式系統內部的硬件資源有限,所以對整個嵌入式Linux內核源碼包進行完全編譯,勢必會造成系統內部資源的浪費,也會因此影響到系統的功能實現及運行速度,所以在對嵌入式Linux內核編譯之前,先要根據嵌入式系統的硬件及其要實現的具體功能,在保證內核穩定工作的前提下,對嵌入式Linux內核進行裁剪。雖然對內核源代碼進行修改和裁剪可以達到精簡內核的目的,但也容易導致嵌入式Linux內核代碼的不穩定或者Linux內核代碼的靈活性喪失。通過對嵌入式Linux內核進行配置,從中選取系統能夠用到的功能,去除系統不需要或者用不到的功能,從而達到節省資源、系統優化和精簡嵌入式Linux內核的目的。
3 系統應用程序模塊的設計與實現
3.1USB攝像頭驅動程序加載
首先,加載USB攝像頭驅動模塊,并重新編譯內核,因為Linux所選的2.6.12版本系統內核中沒有中星微ZC30IP的USB攝像頭驅動,因此,要下載對應的內核補丁usb-2.6.12LE06.patch.tar.gz。
其次,要把下載的驅動程序復制到文件目錄/Linux-2.6.12/driver/usb/下,然后進行解壓,之后是打補丁。具體操作命令如下所示:
tar——xvzf usb-2.6.12LE 06.patch.tar.gz
patch——pl
然后是編譯內核,進入嵌入式Linux操作系統kernel源碼目錄下/Linux-2.6.12,執行make menuconfig命令。然后在彈出的窗口中,選中下面的幾項:
1)Multimedia devices一>
<*>Video For Linux
這一步的目的是加載video4linux模塊,為視頻采集設備提供了編程接口。
2)USB support一>
<*>Support for Host-side USB
—USB Host Controller Drivers
<*>OHCI HCD support
3)—USB Multimedia devices
<*>USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras
這兩步的目的就是在嵌入式Linux內核中加入了對中星微ZC301P系列芯片的USB攝像頭的驅動支持。
4)對以上配置進行保存,然后退出。
5)make dep; make zlmage。
3.2視頻圖像采集與顯示模塊加載
視頻圖像采集與顯示模塊采用的是Servfox+Spcaview的組合。首先,要下載Servfox的源碼,它是視頻圖像的采集模塊。這里用到的是servfox-R1_1_3.tar.gz,進行解壓之后修改make-file里面的交叉編譯器的路徑,直接make,就生成了開發板上的可執行文件,然后通過超級終端下載到開發板上,接著用chmod+x servfox修改可執行的屬性,最后運行:
#ln—s/dev/v41/video0/dev/video0
#servfox—g—s 320x240—w 7070
可以得到如下所示的測試界面:
視頻圖像的采集與顯示模塊要下載Spcaview源碼,直接make即可生成可執行文件spcaview。在PC機上的虛擬機運行的Linux環境下運行,192.168.1.130是視頻圖像采集端嵌入式系統主機的IP地址,7070是端口號。
spcaview—w 192.168.1.130:7070
視頻圖像經過Servfox+Spcaview的組合模塊完成采集和顯示,實現功能模塊加載過程。
3.3Telnet技術
Telnet是利用Internet網絡實現遠程登錄服務的標準協議和主要方式,Telnet協議屬于TCP/IP協議族中的重要一員。通過Telnet技術,遠程用戶實現了在本地計算機對嵌入式遠程網絡視頻監控系統的遠程登錄和遠程控制。用戶在本地計算機上輸入操作命令,然后這些操作命令將會在嵌入式系統上執行,就如同遠程用戶在現場嵌入式系統的控制臺上直接進行操控一樣,實現對嵌入式遠程網絡視頻監控系統的遠程控制功能。
參考文獻:
[1]孫繼坤,張小全.嵌入式Linux開發技術詳解一基于ARM[M].北京:人民郵電出版社,2006:113-134.
[2]韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008:34-56.
【通聯編輯:李雅琪】
收稿日期:2019-10-11
基金項目:河南省高等學校重點科研項目計劃支持(項目編號:13B520320)
作者簡介:趙雪梅(1966-),女,河南鄭州人,鄭州升達經貿管理學院,教授,碩士,研究方向為智能控制與計算機應用。