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