3G車載視頻傳輸模塊的設計與實現
摘要:由于車輛監控領域對于數據傳輸的要求越來越高,該文設計了3G車載視頻傳輸模塊,給出了系統的硬件和軟件設計。硬件部分重點闡述了視頻采集、3G傳輸等部分的設計。軟件部分介紹了U6100模塊的驅動設計,3G網絡接入程序設計和視頻傳輸程序設計。最后,通過對RTP數據包的分析和對客戶端視頻的觀察,證明了本設計取得了很好的效果。
本文引用地址:http://www.j9360.com/article/201610/306882.htm由于3G無線網絡技術和嵌入式技術的不斷發展,推動了視頻監控領域的迅速發展,尤其是在汽車監控領域。3G無線網絡覆蓋面積廣,可靈活接入,相比之前車載視頻監控終端所采用GPRS,CDMA等無線通信技術,傳輸速度快了很多,但是3G技術在汽車監控領域的實際應用不夠完善。DM365支持H.264視頻編碼技術,在網絡帶寬有限的條件下,保證了視頻數據的高質量傳輸。上海龍尚公司的U6100模塊可以集成到任何3G移動設備,并且可以接入到HSDPA、 HSUPA、UMTS等高速網絡。所以我們設計了以TI的DM365為核心,以上海龍尚公司的U6100為傳輸模塊的車載視頻傳輸模塊。
1 3G車載視頻傳輸模塊的硬件設計
本文設計的視頻傳輸模塊是應用在于車載監控設備中,所以我們在進行方案設計和硬件的選擇時,視頻的傳輸要求是首當其沖的。鑒于DM36X系列軟硬件兼容性好,Davinci平臺方便算法擴展,故采用TMS320DM365芯片來搭建3G車載視頻傳輸系統。
本模塊的硬件平臺主要由以下幾部分組成,分別是視頻采集和處理部分,本地存儲與顯示部分,3G視頻傳輸部分,電源部分。車載終端視頻傳輸模塊硬件框架圖如圖1所示。

1.1 視頻采集和處理部分
視頻采集部分由一個PAI/NTSC制式的云臺攝像頭和一個視頻編解碼芯片TVP5151組成。云臺攝像頭需要用RS485來控制,由于DM365上的只有兩個串行接口(UART),且都已經被占用(一個用來連接串口調試,一個連接GPS模塊)。所以我們利用USB HUB里多余的一個USB口,進行二級轉換,先用LP2303轉換成232,在用MAX485轉換成485用于云臺的控制。
TVP5151和處理器是用I2C總線進行對接的,將輸入的模擬信號轉換成數字信號。
視頻處理部分則采用TI的DM365高清視頻處理器。DM365支持H.264視頻編碼技術,在用3G無線網絡傳輸的條件下,保證可以進行高質量視頻數據的傳輸。
1.2 本地存儲和顯示部分
DM365提供了專門的外部存儲器接口,包括一個Flash接口和一個SDRAM接口,可以連接外部存儲器。在這個車載終端的設計中我們選用三星公司的1GB容量、8位數據線的K9F 8G08UOB的NAND Flash芯片和128MB容量、16位數據線的K4T1G164QE的DDR SDRAM芯片。
為了車載終端的操作的更加人性化,顯示部分我們選用的是臺灣晶采光電公司的一款5.7英寸的TFT-LCD觸摸屏面板。該面板具有640X480的高分辨率。它支持I2C總線或SPI總線,考慮到上層驅動的實際情況,使用的是I2C總線和主芯片進行連接。
1.3 3G視頻傳輸部分
3G傳輸部分選用的是U6100模塊。他在3G網絡平臺下上行和下行的最傳輸速率均能達到384Kbps,符合車載傳輸模塊的設計要求。3G傳輸部分的電路設計如圖2所示。

U6100的供電要求是3.6~4.2 V,我們用3.8 V給其供電。U6100提供6條SIM卡接口連接SIM卡,兼容現在各種3G格式。U6100提供標準的RS232接口USB_DM和USB_DP,可以直接和用戶的CPU相連。由于本設計需要4個USB口,我們用一款USB擴展芯片把DM365僅有一個USB口擴展成4個,并用其中的DP1和DM1來連接U6100。電源USB VBUS由5 V電源經過濾波后供給。KPD_PWR_N是U6100的供電開關,其拉低時有效,我們直接通過一個0歐姆電阻接地,這樣U6100開啟時默認處在工作模式。EXT_RET_IN是U6100的復位信號,其拉低時進行復位,我們這里通過DM365的GPIO口來進行控制。
2 車載視頻傳輸模塊的軟件設計
視頻傳輸模塊的軟件設計部分主要分為驅動的設計和應用程序的設計。我這里主要講了包括U6100模塊的驅動設計,3G網絡接入程序設計和視頻傳輸程序設計。由于Linux 2.6.18的系統相比于其他版本具有更好的開放性、安全性和可移植性,所以本系統的全部軟件開發是在該平臺進行的。
2.1 U6100模塊的驅動設計
驅動模塊的加載分靜態和動態兩種。本系統采用的是動態加載方式。U6100模塊的加載過程如下:1)首先要確認編譯驅動和編譯內核的交叉編譯工具是同一個 (本系統用的是arm_v5t_le_gcc);2)對驅動的Makefile文件進行修改,添加內核源碼目錄和編譯工具,進行make編譯后,生成.ko文件;3)將生成的.ko文件拷到車載終端的/module/下面;4)用insmod命令進行模塊的加載,在目錄/dev/tts下會生成3個設備節點USB1-USB3;至此,3G無線模塊加載成功。
2.2 3G網絡接入程序設計
3G無線模塊加載成功后,就要接入網絡,車載設備通過撥號的方式連接至網絡,最常用的是使用PPP(點對點協議)協議。PPP協議的撥號主要分為3個階段,完成以后,一條完整的PPP鏈路就建立起來了。經過如圖3所示。

雖然U6100模塊對電信的CDMA2000和聯通的WCDMA都支持,相對來說,聯通的WCDMA網絡更加穩定和快速,所以我們選用聯通的WCDMA網絡。在LINUX中,與WCDMA入網有關的程序為pppd和chat。pppd程序負責3G模塊的初始化和入網撥號。在初始化部分調用chat程序進行 AT指令的發送,主要交互撥號參數和撥號的用戶信息的設置,然后pppd程序進行入網撥號。U6100撥號接入網絡的具體流程如下:1)編寫pppd撥號腳本wcdma3、會話建立和斷開的調用腳本chat—wcdma—connect和chat—wcdma—disconnect文件;2)添加內核選項,編譯支持PPP協議的內核;3)把編譯好的進行pppd文件和chat文件的移植到車載終端的文件系統的/etc/ppp/peers下;4)在終端輸入撥號命令pppd callwcdma3進行連接;5)用ifconfig查詢,出現出現一個網絡接口ppp0的打印消息,表明已經成功連接到WCDMA3G網絡。
2.3 視頻傳輸程序設計
車載視頻傳輸系統對視頻傳輸的時延和丟包率要求比較高,RTP/RTCP是實時視頻傳輸過程中一種比較好的解決方案,它具有開源代碼的RTP庫,因此本系統采用實時傳輸協議RTP和實時傳輸控制協議RTCP配合使用來進行3G傳輸。
RTP數據包的發送流程如圖4(a)所示。先把從緩存中讀取的H.264視頻流打包成一個一個RTP數據包,依次發送給服務器。RIP荷載的單元類型結構有單NAL單元包、聚合包和分片單元3種。在這里為了避免視頻數據在網絡層被分割,我們采用的是單NAL包和分片包模式,將1個NAL單元設為1K字節。如果小于1K字節,直接封裝成一個RTP包發送。如果數據單元的長度較長超過1K字節,則作為FU—A包發送,需要分割成若干個小于1K字節的NAL包,包括首片包、中間包和尾片包三類。然后按照RTP數據包的格式封裝上RTP報頭,再通過U6100模塊發送至3G網絡。對應的RTP包接收流程如圖 4(b)所示。

3 測試效果
在搭建好的車載終端環境下進行3G視頻傳輸,并用Wireshake軟件進行RTP數據包分析實驗。如圖5所示,其中黑色陰影的是抓到的第847個RTP包,它從3G網絡的地址10.13.1 4.77傳送到我們的設備服務器101.69.255.130。看到全部RTP包的大小都不超過設置的包的最大值1040。經過多次測試,丟包率在4%以內,符合的要求。在客戶端看到的視頻也非常的清晰,視頻流暢度也很好,無線傳輸速率能達到25幀/s,如圖6所示。


4 結論
文中設計的3G車載視頻傳輸模塊是車載監控系統的重要部分,通過3G網絡傳輸的視頻畫面清晰,有利于遠程監控中心對車輛進行實時的監控和調度,符合目前車載傳輸的要求。
評論