基于ARM Linux的3G無線車載視頻監控系統
2.2 監控中心
車輛監控中心由顯示屏幕、監控服務器、主控工作臺、路由器和存儲器等硬件組成。按功能區分,其基本功能模塊有數據接收模塊、解碼模塊、顯示模塊和存儲模塊等。由于監控中心硬件可采用通用器件,故不需要進行專門的選型設計。
3 系統軟件實現
系統選擇Linux操作系統。Linux具有源代碼開放、成本低廉、內核可裁減性強等特點,且集成有TCP/IP協議,對網絡的支持是相對于其他操作系統的優勢。基于ARM Linux的視頻監控終端的軟件設計主要完成三方面的工作:第一在硬件上搭建一個軟件平臺,搭建嵌入式Linux軟件開發平臺需要完成UBOOT移植、嵌入式Linux操作系統內核移植以及嵌入式Linux操作系統的設備驅動程序的開發等工作;第二在軟件平臺的基礎上,借助交叉編譯工具,開發視頻監控終端上運行的采集、壓縮、流媒體服務器程序;第三監控中心運行的接收、解壓縮、顯示程序。
3.1 S3C2440A的Linux平臺的搭建
構建嵌入式Linux開發平臺需要先構建交叉編譯環境。一套完整的交叉編譯環境包括主機和目標機。在開發中主機是一臺裝有Centos 5.5操作系統的PC機,目標機是基于S3C2440A的視頻監控終端。選用的嵌入式Linux內核源代碼包版本號為2.6.28,交叉編譯器是GCC 4.3.2。編譯內核之前首先要配置內核,裁減掉冗余的功能模塊。具體步驟如下:
(1)通過命令make menuconfig,對內核進行配置,選擇YAFFS文件系統,支持NFS啟動,啟用USB設備支持模塊,包括USB設備文件支持模塊、USB主控制器驅動模塊等。此外,USB攝像頭屬于視頻設備,還需要啟用Video4Linux模塊;
(2)用make dep命令生成內核程序間依賴關系;
(3)make zlmage命令生成內核映像文件;
(4)make modules和make modules_install命令生成系統可加載模塊。這樣就生成了zlmage內核映像文件,把它下載到目標平臺的FLASH中。
本設計采用USB外置攝像頭,在內核配置時要求以模塊形式動態加載。首先要完成驅動程序驅動中需要提供基本的I/O操作接口函數open、read、write、close的實現,對中斷的處理實現,內存映射功能以及對I/O通道的控制接口函數ioctl等,并把他們定義在struct file_operations中。接著把USB驅動程序編譯成可以動態加載的模塊。
3.2 車載移動終端軟件設計
3.2.1 GPS模塊程序設計
GPS接收機GPS15L輸出數據格式符合NMEA-0183標準。NMEA-0183協議是由美國國家海洋電子協會制定的一種串行通信的數據協議,所有輸入輸出信息均為一行ASCII字符。它的一條消息稱為語句(Sentence),每條語句都以“$”開始,以回車換行符(CR>LF>)結束,中間是用逗號分隔的若干個域。一條NMEA-0183語句包含以下5個部分:起始符,固定字符“$”,表示語句開始;標識符域,表示一條語句的全部數據域的特定格式,長度可變;數據域,包含各種類型的數據,各數據之間用逗號分隔,數據域可以為空,但用來分隔數據的逗號不可省略;校驗和,以“{”開始,由2個字符的十六進制數組成;結束符,固定字符CR>LF>,表示語句結束。NMEA-0183語句中最常見的幾種格式有GPGG A(Global Positioning System Fix Data)、GPRMC、GPGSV、GPVTG等,它們包含的信息不盡相同。本設計中采用的是GPGGA輸出語句,它包含了主要的GPS定位數據。獲取GPS數據流程圖如圖3所示。本文引用地址:http://www.104case.com/article/148087.htm
由圖3可以看出,GPS模塊啟動后首先對串口的初始化也就是對GPS模塊的初始化,包括設置波特率、數據位、校驗位等;然后后開始接收GPS數據,即從串口讀數據,并將讀到的數據保存到BUF中,接著進入數據的解析和提取階段,判斷BUF[5]是否等于“c”以判斷是否為MYMGPR MC,若是,則開始提取經緯度、時間等信息并存入結構體GPS_DATA中。
3.2.2 視頻采集模塊設計與實現
視頻采集模塊是通過嵌入式Linux操作系統調度V4L(Video4Linux)及影像設備驅動程序來完成視頻采集。V4L是Linux影像系統與嵌入式影像的基礎,是Linux kernel里支持影像設備的一組API。在Linux操作系統中,外部設備被作為設備文件來管理,從而使得對外部設備的操作就轉變成對設備文件的操作。其采集流程如圖4所示。
linux相關文章:linux教程
攝像頭相關文章:攝像頭原理
評論