基于嵌入式Linux的3G無(wú)線(xiàn)視頻終端的設計與實(shí)現

以視頻壓縮模塊為例,其軟件流程如圖6所示。本文引用地址:http://dyxdggzs.com/article/150415.htm
2.3 網(wǎng)絡(luò )轉發(fā)模塊設計
在完成對采集圖像的壓縮或者接收完視頻服務(wù)器后,需要將數據通過(guò)3G網(wǎng)進(jìn)行轉發(fā),完成網(wǎng)絡(luò )數據轉發(fā)通常采取的辦法是利用Linux提供的socket API進(jìn)行,socket給用戶(hù)提供了統一的編程接口,網(wǎng)絡(luò )傳輸協(xié)議通常有TCP和UDP兩種,對于TCP每次要通過(guò)3次握手建立連接,在等待亂序及重傳丟失數據時(shí)會(huì )產(chǎn)生較大延時(shí),而UDP又缺乏流量控制,所以都不太適用于實(shí)時(shí)數據傳輸,在這種情況下運行于UDP之上的RTP則具有很大的優(yōu)勢,目前對于有實(shí)時(shí)要求的數據傳輸RTP是最好的協(xié)議,故在本系統中使用了RTP協(xié)議作為數據傳輸協(xié)議,流程如圖7所示。
2.4 3G模塊驅動(dòng)設計及聯(lián)網(wǎng)
3G模塊與ARM是通過(guò)USB相連的。無(wú)線(xiàn)終端到3G網(wǎng)絡(luò )的連接是通過(guò)PPP協(xié)議實(shí)現的,PPP協(xié)議是一種點(diǎn)對點(diǎn)串行通信協(xié)議,為在點(diǎn)對點(diǎn)連接上傳輸多協(xié)議數據包提供了一個(gè)標準方法。由于目前嵌入式市場(chǎng)上的3G模塊基本上都是提供Windows CE操作系統下的驅動(dòng)程序,但對于嵌入式Linux下面的目前還沒(méi)有驅動(dòng)支持,所以為本系統開(kāi)發(fā)了3G模塊的驅動(dòng)程序。要完成3G模塊的撥號上網(wǎng)功能,需要3個(gè)層面的支持:1)是內核層面;2)驅動(dòng)層面;3)應用程序層面的支持。內核層面主要是通過(guò)對內核的重新配置來(lái)完成,由于3G模塊與ARM通過(guò)USB線(xiàn)連接,而上層的PPP通信采用的是串行協(xié)議,所以要在內核中加入USB轉串口的支持,通過(guò)makemenuconfig命令進(jìn)入內核配置界面,依次選擇Device Drivers->USB support->USB Serial Converter Support選擇USB Generic Serial Driver按兩次空格鍵使項目前加[*]將其編譯入內核,其中加*為編譯成內核模塊,加M為編譯為模塊。由于采用的是PPP協(xié)議,故要在內核中加入PPP的支持。進(jìn)入內核配置界面以后,依次選擇DeviceDrivers->Network device support->PPP(point-to-point)protocol support選中,將PPP編譯入內核,同時(shí)選擇PPP展開(kāi)項,將其全部編譯入內核,保存退出。對于驅動(dòng)層面,3G模塊的驅動(dòng)開(kāi)發(fā)主要是通過(guò)修改兩個(gè)文件generic.c以及usb-serial.c,其中g(shù)eneric.c為USB通用程序,usb-serial.c為USB轉串口程序。通過(guò)在其中加入一些網(wǎng)絡(luò )層的hook函數來(lái)達到對上層協(xié)議的支持。將修改過(guò)后的文件復制到/linux2.6.29/drivers/usb/serial,重新編譯內核,生成zImage鏡像,然后下載到板子上。完成3G模塊驅動(dòng)的設計以及內核對PPP協(xié)議的支持,對于撥號上網(wǎng)應用程序的支持,主要是通過(guò)PPP提供的兩個(gè)工具pppd和chat來(lái)實(shí)現的,其中PPP提供了一種點(diǎn)對串行線(xiàn)路上傳輸數據流的方法,chat主要用于撥號并等待提示??蓮木W(wǎng)上下載PPP源碼,在本系統中采用的版本為PPP-2.4.0,下載后要解壓并且根據目標板的類(lèi)型來(lái)進(jìn)行交叉編譯得到撥號程序。
3 結束語(yǔ)
本文在一塊ARM開(kāi)發(fā)板上實(shí)現了多種功能,包括無(wú)線(xiàn)數據視頻終端,通過(guò)外接視頻服務(wù)器實(shí)現了現有視頻服務(wù)器的3G功能擴展,通過(guò)采用了Netfilter與socket結合的方法,將數據包獲取功能從用戶(hù)態(tài)載入Linux內核態(tài),避免了數據的內存拷貝,提高了處理效率,同時(shí)引入內核緩沖機制。解決了3G撥號延時(shí)而造成的視頻服務(wù)器丟包問(wèn)題,配合Netfilter用戶(hù)工具iptables的使用,可以在本系統上實(shí)現NAT,包過(guò)濾防火墻等功能。方便對流經(jīng)系統數據包的管理。
針對目前市場(chǎng)上的3G模塊大多只提供Windows CE下驅動(dòng)這一問(wèn)題,開(kāi)發(fā)了3G模塊驅動(dòng),使得現有3G模塊可使用與嵌入式Linux系統下,用戶(hù)可直接在此基礎上通過(guò)socket進(jìn)行編程,而無(wú)需考慮底層的硬件通信問(wèn)題。在軟件設計上充分發(fā)揮開(kāi)源軟件的優(yōu)勢,采用Xvideore進(jìn)行視頻編碼,以及PPP源碼編譯撥號軟件等,縮短了系統開(kāi)發(fā)周期,系統在軟件的整體設計上提出了一套相對通用的軟件架構,可方便實(shí)現功能的擴展及升級。
評論