<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于嵌入式Linux的3G無(wú)線(xiàn)視頻終端的設計與實(shí)現

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

作者: 時(shí)間:2011-08-01 來(lái)源:網(wǎng)絡(luò ) 收藏

i.jpg
壓縮模塊為例,其軟件流程如圖6所示。

本文引用地址:http://dyxdggzs.com/article/150415.htm

k.jpg


2.3 網(wǎng)絡(luò )轉發(fā)模塊
在完成對采集圖像的壓縮或者接收完服務(wù)器后,需要將數據通過(guò)網(wǎng)進(jìn)行轉發(fā),完成網(wǎng)絡(luò )數據轉發(fā)通常采取的辦法是利用提供的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所示。

l.jpg


2.4 模塊驅動(dòng)及聯(lián)網(wǎng)
模塊與ARM是通過(guò)USB相連的。到3G網(wǎng)絡(luò )的連接是通過(guò)PPP協(xié)議的,PPP協(xié)議是一種點(diǎn)對點(diǎn)串行通信協(xié)議,為在點(diǎn)對點(diǎn)連接上傳輸多協(xié)議數據包提供了一個(gè)標準方法。由于目前市場(chǎng)上的3G模塊基本上都是提供Windows CE操作系統下的驅動(dòng)程序,但對于下面的目前還沒(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)的,其中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ā)板上了多種功能,包括數據,通過(guò)外接視頻服務(wù)器實(shí)現了現有視頻服務(wù)器的3G功能擴展,通過(guò)采用了Netfilter與socket結合的方法,將數據包獲取功能從用戶(hù)態(tài)載入內核態(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í)現功能的擴展及升級。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 4 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>