1系統硬件結構
本系統采用模塊化的結構設計思想,將設備分為主控模塊和各個功能模塊。主控模塊和各功能模塊之間有統一的或者特定的接口形式,用戶可根據不同的需要選用不同的功能模塊,各種類型的數據可以同時傳輸而不相互干擾,同時也可根據市場的需求繼續擴展其它功能模塊。遠程無線視頻監控系統是由以下幾個模塊組成:嵌入式ARM2410核心控制模塊、自動報警模塊一面使嵌入式模塊上的蜂鳴器發出警報聲,同時發送報警信號通過GPRS網絡及時的傳回遠端的監控管理中心,以便管理人員及時發現并處理火情、傳感器數據處理模塊、USB攝像頭視頻圖像采集處理模塊、GPRS無線數據傳輸模塊、遠程監控軟件模塊。
圖1系統結構圖
1.1USB攝像頭驅動
USB核心在系統中起著重要的作用,它提供了一些的API供設備驅動層操作,而對主控制器的操作則由系統完成了,USB核心層對主控制器層的數據結構和操作進行了封裝。在編寫USB驅動時,只需要和USB核心層進行交互。對于具體設備的驅動編寫主要也是設備層驅動的編寫。Linux系統中USB結構如圖2所示:
在Linux內核中,設備驅動程序是一個個獨立的“黑盒子”,使某個特定硬件響應一個定義良好的內部編程接口,這些接口*隱藏了設備的工作細節。用戶的操作通過一組標準化的調用執行,設備驅動負責將這些調用映射到作用于實際硬件設備*的操作上。
在Linux系統中,設備驅動程序編譯好后,有兩種實現方法:一種是修改系統內核源碼,把驅動靜態編譯進內核,使其成為內核的一部分;另一種則是編譯成可以動態加載的模塊,由管理員動態的加載。如果把驅動程序譯進內核,那么內核的大小會增加,內核的源文件也需要改變,并不能動態地釋放,不利于系統的調試,所以在本系統中,為方便調試,把攝像頭驅動程序編譯成動態加載的模塊。
1.2視頻采集
視頻采集程序的流程如圖3所示:
圖3視頻采集流程圖
USB攝像頭驅動成功后,需要編寫視頻采集的程序,這就需要了解Linux內核中關于視頻設備的部分代碼VideoForLinux(簡稱V4L)。它為應用程序提供了一系列的接口函數,通過這些函數,可以執行打開、讀寫、關閉等基本的操作。設備驅動提供了read、write、open、dose等函數的具體實現,在內核中這些函數都可以調用。
1.3GPRS無線數據傳輸
GPRS模塊是具有登陸GPRS網絡功能的芯片,只要外接SIM卡,通過串行協議與ARM處理器通信,將視頻圖像采集模塊得到的JPEG數據以資料包的形式,先通過PPP和運營商的Internet接入服務器連接,然后把資料包發送到Internet上。
GPRS無線數據傳輸模塊軟件結構設計總體可分為三個部分:參數配置部分,處理器將接收視頻圖像采集模塊從串口輸入的數據,同時對遠程監控中心主機IP地址,串口通信參數等加以配置;連接遠程監控中心主機,在這一部分,系統將發起一個TCP或UDP連接;數據傳輸,首先處理器將判斷接收的數據為遠程配置數據,視頻圖像數據還是報警信號,如果是報警數據,則立刻停止視頻圖像數據的傳輸,將報警數據迅速發送出去。如果是JPEG圖像數據,則GPRS模塊將接收到的所有數據都發送出去。
2系統軟件設計
2.1嵌入式Linux移植
本系統中,宿主機選擇LINUX操作系統,并建立好交叉編譯環境。目標機選定嵌入式LINUX作為操作系統,而目標系統的LINUX內核需要結合自己的硬件電路對內核代碼進行移植修改才能夠運行。本系統硬件系統為基于ARM9的S3C2410開發板,在內核的arch目錄下有一個為”arm”的文件夾,正是存放的與ARM體系結構相關的代碼。
編譯內核需要創建內核依賴關系、創建內核鏡像文件和創建內核模塊。首先執行makedep命令,讀取配置過程生成的配置文件,來創建對應于配置的依賴關系樹,從而決定哪些需要編譯而那些不需要;接著需要makeclean完成刪除前面步驟留下的文件,以避免出現一些錯誤;然后便可以生成所需要的內核文件了,用makezImage來實現得到可移植的內核。
除了內核的移植,還需要在開發板上移植啟動代碼,即BootLoader,初始化硬件系統并加載移植的Linux內核,此外文件系統也*。在BootLoader,Linux內核和文件系統成功移植后,便可以在目標系統上進行程序開發了。不過針對本系統的具體要求,還需要在開發板中添加USB攝像頭的驅動,這樣以后,便將開發板帶入到一個適合本系統應用程序的運行環境。
2.2視頻圖像的編解碼
JPEG標準中定義了三種編碼系統:①基于DCT的有損編碼基本系統,可以用于絕大多數的壓縮應用場合;②用于高壓縮比、高精度或漸進重建應用的擴展編碼系統;③用于無失真應用場合的無損系統。zui常用的是基于DCT變換的順序模式,稱為基本系統。
解壓過程與壓縮編碼過程正好是一個相反的過程,從壓縮過程中可以知道,圖像數據經過DCT變換再量化之后用huffman熵編碼進一步壓縮而得到了壓縮數據。所以要對圖像進行解碼首先需要進行huffman解碼,接著需要將墑解碼的數據根據具體的量化表進行還原再進行IDCT變化可以得到原來的圖像數據。
MJPEG(MotionJPEG,動態JPEG),是動態使用JPEG算法對視頻信號進行壓縮,其圖像視頻流的基本單元就是一幀一幀的JPEG圖片。它的主要特點是基本不考慮視頻流中不同幀之間的變化,只單獨對某一幀進行壓縮。MJPEG的優點是畫質比較好,能產生高質量、全屏、全運動的視頻、每幀可以任意存取,可以動態調整幀率、分辨率,而且其編碼相對比較容易實現。
本系統分為兩個大的部分,目標機服務器軟件與宿主機客戶端軟件。目標機服務器是采集和視頻發送程序,兩個線程分別完成采集和視頻發送的功能;客戶端軟件主要用于接受TCP服務器的視頻數據,并解碼顯示。系統工作原理如圖4所示:
3小結:
本文作者創新點是:結構簡單,功能完善,視頻的采集、壓縮以及傳輸都集成在一個嵌入式模塊中。嵌入式系統軟件是基于嵌入式Linux操作系統的,開發資源豐富,有助于建立功能強大、結果復雜的大系統。在軟件設計時充分采用了分層體系思想,使得系統具有很好的邏輯性,方便以后的維護和移植。由于系統采用面向對象的模塊化設計,擴展靈活,易于實現系統的模塊化管理,也能降低系統集成的困難和成本。
(文章來源:微計算機信息)