隨著(zhù)公路交通的不斷發(fā)展,長(cháng)途客運車(chē)也隨之不斷增長(cháng),方便人們出行的同時(shí),交通事故不斷發(fā)生,盜竊、搶劫也時(shí)有發(fā)生。 為了能使汽車(chē)安全的行駛,乘客放心的乘坐,開(kāi)發(fā)研究一套良好的長(cháng)途客運車(chē)無(wú)線(xiàn)視頻監控系統就顯得尤其的重要。 近年來(lái)傳統的模擬視頻監控技術(shù)正在逐步向數字化、網(wǎng)絡(luò )化、智能化發(fā)展,將監控技術(shù)與網(wǎng)絡(luò )技術(shù),特別是無(wú)線(xiàn)網(wǎng)絡(luò )技術(shù)完美結合,是數字監控領(lǐng)域的新方向。本文介紹的長(cháng)途客運車(chē)無(wú)線(xiàn)視頻監控系統是整合嵌入式技術(shù)、CDMA無(wú)線(xiàn)網(wǎng)絡(luò )通訊技術(shù)、MPEG-4數字視頻壓縮技術(shù)和GPS定位技術(shù)為一體的視頻終端。 1 系統簡(jiǎn)介 整個(gè)無(wú)線(xiàn)視頻監控系統由車(chē)載終端(包括TMS320DM270CPU模塊、視頻輸入模塊、CDMA模塊、GPS模塊等)、通信網(wǎng)絡(luò )和監控中心組成,其系統結構如圖1所示。 車(chē)載終端被放置在長(cháng)途客車(chē)內,用來(lái)采集車(chē)內圖像并利用MPEG-4技術(shù)對圖像進(jìn)行壓縮,使圖像分辨率達到CIF格式,幀率在1-8幀/秒可調。同時(shí)GPS模塊實(shí)時(shí)接收全球定位衛星發(fā)射的信號,得到當前車(chē)輛位置和速度。最后CPU將壓縮后的視頻流與GPS數據通過(guò)CDMA無(wú)線(xiàn)通信網(wǎng)絡(luò )和Internet網(wǎng)絡(luò )發(fā)送到監控中心,從而在監控中心可以看到車(chē)內情形,以及在電子地圖上顯示客車(chē)的方位與速度。 2 車(chē)載終端硬件設計 車(chē)載終端的設計是根據系統的總體要求,將硬件電路劃分為獨立的硬件功能模塊(TMS320DM270 CPU模塊、視頻輸入模塊、CDMA模塊、GPS模塊等),并給出各個(gè)硬件模塊的功能定義以及他們之間的關(guān)系。車(chē)載終端的結構框圖如圖2所示。 2.1 TMS320DM270 CPU模塊 TMS320DM270是TI公司推出的一款雙核多媒體處理器。它內部集成了兩個(gè)處理器:ARM7TDMI RISC處理器;TMS320C5409 DSP,并帶有兩個(gè)協(xié)處理器——圖像加速器(iMX)和可變步長(cháng)編解碼器(VLCD)。 DM270還集成了SDRAM控制器、CCD可編程控制器、預覽引擎(Preview engine)、專(zhuān)用的硬件3A模塊可以消除主處理器的某些任務(wù)負擔,如:白平衡、自動(dòng)曝光和自動(dòng)調焦。除此之外,還有USB、UART、SPI、外圍存儲接口等功能。 2.2 視頻輸入模塊 視頻輸入模塊主要由鏡頭模塊和模擬前端電路組成。模擬前端的作用是將圖像傳感器輸出的模擬信號鉗位放大,并完成A/D轉換,這里采用的是TVP5150。TVP5150是TI的一款高質(zhì)量數字視頻解碼器,可以很方便將模擬視頻信號轉換成數字視頻信號。 TVP5150由一組內部寄存器初始化并控制,因此在系統復位上電時(shí)DM270要通過(guò)I2C對TVP5150進(jìn)行初始化。 2.3 CDMA模塊和網(wǎng)絡(luò )模塊 作為監控調度系統,首先要考慮監控覆蓋范圍、實(shí)時(shí)性、車(chē)輛容量、刷新速率等要求,選擇合適的無(wú)線(xiàn)數據鏈路。由于長(cháng)途客車(chē)的行駛范圍比較大,所以本系統選擇無(wú)線(xiàn)網(wǎng)絡(luò )覆蓋范圍較大的CDMA網(wǎng)絡(luò )。 CDMA是碼分多址的英文縮寫(xiě)(Code Division Multiple Access),它是在數字技術(shù)的分支——擴頻通信技術(shù)上發(fā)展起來(lái)的一種移動(dòng)通信技術(shù)。本系統采用Q2358C RJ45接口模塊作為CDMA接入設備,它內嵌TCP/IP協(xié)議棧,支持高達153.6Kb/s的數據吞吐率,適合窄帶寬視頻傳輸,有相當高的穩定性。由于系統采用了先進(jìn)的MPEG-4編碼技術(shù),所以完全可以適應CDMA的傳輸速率。 網(wǎng)絡(luò )模塊也是本系統中一個(gè)重要的組成環(huán)節,采用的是AX88796網(wǎng)卡芯片。它負責將CPU處理后的數據(MPEG-4視頻數據、GPS數據)通過(guò)RJ45接口發(fā)送給CDMA模塊,CDMA模塊再根據目的地址把數據送給監控中心。 2.4 GPS模塊 GPS(Global Positioning System)是一套由美國國防部歷時(shí)20年,耗資200億美元,于1994年建成的衛星定位系統,其基本原理是利用繞著(zhù)地球的24顆衛星所發(fā)射的信號,再加以幾何上的計算,來(lái)得到接收者的位置。本系統采用的是Motorola UART接口的一款GPS模塊,定位誤差小于25米,測量速度范圍是515米/秒。該模塊將接收的衛星數據轉換為規定的數據格式,其中包括經(jīng)度、維度、高度、速度等。CPU從串口讀取這些數據,確定車(chē)輛的位置與速度。 2.5 FLASH和SDRAM模塊 本系統設計2M的NORFLASH用來(lái)存儲程序,NORFLASH的2M空間被劃分為四部分,分別存放Bootloader、參數、內核和文件系統。16M的SDRAM用于系統軟件的運行以及各種數據(MPEG-4視頻數據、GPS數據)的存取。 基于DM270的軟件設計分為兩部分:ARM端設計、DSP端設計。DSP端的軟件設計主要是圖像算法的設計,本系統采用的是MPEG-4算法,同時(shí)把DSP作為嵌入式uClinux的外部設備,并編寫(xiě)DSP的驅動(dòng)程序,注冊進(jìn)內核;ARM端運行uClinux操作系統,處理非成像功能,用來(lái)控制整個(gè)系統的各個(gè)模塊。系統軟件層次結構如圖3所示。 2.6 uClinux內核移植 uClinux是Linux的一個(gè)分支,源代碼開(kāi)放,并且被廣泛的移植到多種CPU平臺上。uClinux內核是由Linux內核根據所要運行的CPU裁減、修改而來(lái)的,因此它保持了原有Linux操作系統的主要優(yōu)點(diǎn),如穩定性好,出色的文件系統支持功能,完善的應用程序和驅動(dòng)程序開(kāi)發(fā)環(huán)境,以及Linux原有的完整的TCP/IP協(xié)議包。這樣,當越來(lái)越多的嵌入式系統需要提供網(wǎng)絡(luò )支持功能時(shí),uClinux便成了首選的操作系統。 uClinux的移植工作主要包括內核的修改、裁減與編譯。 首先是開(kāi)發(fā)環(huán)境的建立。主要由目標系統硬件開(kāi)發(fā)板和宿主PC機構成。先在宿主PC機上安裝標準Linux發(fā)行版Red-Hat Linux和交叉編譯工具arm-elf-tools-20030314.sh,再從網(wǎng)絡(luò )上獲得免費的uClinux內核源代碼uClinux-dist-20041215.tar.gz,并在宿主PC機上執行tar zxvf uClinux-dist-20041215.tar.gz對其解壓。 其次是內核的修改。修改的文件主要有: 1)uClinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/head.S,啟動(dòng)文件。 2)uClinux-dist/linux-2.4.x/arch/armnommu/boot/Makefile,啟動(dòng)配置文件,主要修改的是ZTEXTADDR(自解壓代碼的起始地址)和ZRELADDR(內核解壓后代碼輸出起始地址)。 3)uClinux-dist/linux-2.4.x/arch/armnommu/config.in,修改DRAM_BASE、DRAM_SIZE、FLASH_MEM_BASE和FLASH_SIZE,主要為確定SDRAM、FLASH的起始地址和大小。 4)uClinux-dist/linux-2.4.x/arch/armnommu/Makefile,修改TEXTADDR來(lái)配置內核的起始地址。 5)uClinux-dist/linux-2.4.x/drivers,修改并添加所需的驅動(dòng)程序。 6)uClinux-dist/linux-2.4.x/drivers/block/blkmem.c,ROM文件系統的定位修改。 7)uClinux-dist/vendors/TI/dm270,修改硬件配置文件。 8)uClinux-dist/linux-2.4.x/Makefile,選擇CPU體系機構(ARCH?:=?armnommu)和交叉編譯器(CROSS_COMPILE?=?arm-elf-)。 對內核修改完畢后,在uClinux-dist目錄下執行make menuconfig。在彈出的對話(huà)框中對內核進(jìn)行配置和裁減。 最后就是編譯內核。依次執行make dep(編譯相關(guān)依賴(lài)文件),make clean(在編譯內核之前把內核清理干凈),make(最終的編譯命令),此時(shí)在images目錄下生成了image.ram和image.rom文件,iamge.rom便是要燒寫(xiě)到FLASH中的內核映像文件。 3 驅動(dòng)程序設計 設備驅動(dòng)程序是內核的一部分,是操作系統內核和機器硬件之間的接口。Linux操作系統將所有的設備看作具體的文件,對與用戶(hù)而言,可以通過(guò)設備驅動(dòng)程序所提供的一組入口點(diǎn)(open()、close()、read()、write()、ioctl()等)來(lái)完成對設備文件的訪(fǎng)問(wèn)和控制。 在Linux系統里,設備驅動(dòng)程序提供的這組入口點(diǎn)是由結構 向系統注冊設備,登記驅動(dòng)程序所提供的入口點(diǎn)。當應用程序對設備操作時(shí),會(huì )根據file_operations結構中的函數指針找到相應的操作函數并進(jìn)行調用。圖3中的驅動(dòng)程序都是按照上述來(lái)完成的。 4 應用程序設計 在應用程序中設計了兩個(gè)進(jìn)程:GPS進(jìn)程和視頻進(jìn)程,應用程序流程圖如圖4所示。 GPS進(jìn)程,首先設置車(chē)載終端的IP地址,初始化GPS模塊,然后通過(guò)Linux Socket編程和服務(wù)器建立鏈接,等待服務(wù)器命令,如果10秒鐘內沒(méi)有收到命令,則通過(guò)CDMA發(fā)送GPS數據到服務(wù)器。 視頻進(jìn)程,首先注冊信號量SIGUSR1,其次是對視頻相關(guān)硬件(DSP、TVP5150、CCDC、Preview engine)的初始化,初始化的具體實(shí)現是在各個(gè)驅動(dòng)程序中完成的,然后利用Linux Socket編程和服務(wù)器建立鏈接,最后啟動(dòng)MPEG-4編碼器。當視頻進(jìn)程成收到SIGUSR1信號后,便通過(guò)CDMA傳送編碼好的視頻數據。 整個(gè)程序運行過(guò)程中時(shí)刻存在著(zhù)ARM與DSP之間的通訊。 在視頻編碼開(kāi)始前,DSP的引導由ARM來(lái)控制,首先ARM將DSP掛起在復位狀態(tài),隨后向DSP下載MPEG-4編碼程序,最后喚醒DSP開(kāi)始編碼。DSP的引導順序如圖5所示。 在視頻編碼過(guò)程中,ARM與DSP通過(guò)HPIB進(jìn)行通信。ARM管理著(zhù)DSP數據空間的數據輸入輸出。在DSP數據空間定義了一段內存空間作為命令寄存器,然后通過(guò)HPI訪(fǎng)問(wèn)這些寄存器,這就是ARM與DSP之間的一個(gè)通訊接口,ARM和DSP都可以異步地向對方發(fā)出命令,不存在主從關(guān)系。為了建立這種雙向通訊,系統設計了兩組寄存器,一組用于A(yíng)RM(命令由DSP發(fā)出),另一組用于DSP(命令由ARM發(fā)出)。在編碼過(guò)程中就是利用這組寄存器以及HPI中斷完成了圖像數據的讀取、編碼和發(fā)送。DSP的HPI中斷過(guò)程如圖6所示。DSP通過(guò)寫(xiě)寄存器并發(fā)出HPI中斷,向ARM發(fā)送命令。ARM在HPI中斷服務(wù)程序中判斷命令類(lèi)型并執行,其中一種命令是DPS向ARM請求原始圖像數據進(jìn)行編碼;另一種命令是DPS請求ARM發(fā)送壓縮后的MPEG-4視頻數據,在這個(gè)命令中會(huì )向視頻進(jìn)程發(fā)出SIGUSR1信號。ARM執行完命令之后發(fā)出HPI通知DSP。 5 結語(yǔ) 本系統把無(wú)線(xiàn)視頻監控技術(shù)和GPS定位系統相結合,同單一的GPS定位系統相比有明顯的優(yōu)勢。在實(shí)際測試中,實(shí)現了視頻和GPS的同步傳輸。視頻傳輸速度可達8幀/秒,圖像分辨率達到CIF格式。同時(shí)通過(guò)對GPS數據的解析,可準確的確定客車(chē)的位置和速度。隨著(zhù)MPEG-4算法的優(yōu)化,無(wú)線(xiàn)網(wǎng)絡(luò )的不斷發(fā)展以及3G的推出,傳輸效果將會(huì )更加的理想。雖然該系統是為長(cháng)途客運車(chē)而設計,但它的整個(gè)解決方案可用于其它需要遠程監控的行業(yè),比如可廣泛應用于軍事、交通、油田、煤礦以及手持娛樂(lè )設備等。 |