新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于嵌入式Linux的3G無線視頻終端的設計與實現

        基于嵌入式Linux的3G無線視頻終端的設計與實現

        作者: 時間:2011-08-01 來源:網絡 收藏

        摘要:系統開發以及相關技術,采用ARM+作為軟硬件開發平臺,充分利用了ARM以及系統豐富的軟硬件資源,了一個。在軟件上,采用了Linux的Netfilter架構與socket結合的方法,引入內核緩沖機制,達到了將數據包獲取功能由用戶態轉入內核態,了數據包在Linux內核態的獲取及高效轉發,并且解決了模塊因撥號延遲與服務器產生速率不匹配所造成的數據丟包問題,同時在Linux下為3G模塊開發了驅動。
        關鍵詞:嵌入式Linux;3G;Netflter;;套接字

        隨著網絡技術和嵌入式技術的迅猛發展,通過網絡來監控已經得到了廣泛的應用,3G網絡以其高帶寬使得傳輸流暢的視頻信息成為可能,本文在采用3G技術的基礎上了一款嵌入式Linux的,在數據處理部分采用了Linux的Netfilter架構,通過掛載鉤子函數來實現數據包在內核態的獲取及高效轉發,并且通過在Linux內核開辟一片緩沖區,解決了視頻服務器與3G模塊撥號延時而造成的速率不匹配的問題,減少了數據丟包。配合Netfilter用戶態管理工具iptables的使用,可實現包過濾防火墻,及NAT等功能,從而便于本系統對流經其數據包的管理。
        另一方面對嵌入式Linux的視頻采集程序的設計進行了詳細的介紹,并將其實際應用到了本系統的數據采集模塊中去,完成了數據的采集工作,同時針對目前市場上對與3G模塊通常只提供Windows CE下的驅動這一情況,開發了嵌入式Linux系統下的3G模塊驅動程序,在軟件設計上充分發揮了開源軟件的優勢,采用高效的Xvidcore編解碼庫,來完成視頻的編碼,以及使用PPP源碼來編譯撥號上網工具,成本低廉并且縮短了系統的開發周期,使得本系統具有較強的工程實用價值。

        1 系統硬件結構
        硬件上采用“ARM+3G模塊”系統架構。ARM與3G模塊采用分離模塊的設計方法,通過USB線相連,較整體設計而言具有更好的靈活性,使得一些現有的以ARM為主處理器的系統能夠很好地擴展3G功能,便于產品的過渡。本系統的核心處理器是S3C2440A,S3C2440A是一款由SamSu-ng半導體公司推出的基于ARM920T內核的16/32位RISC微處理器。內部帶有全性能的MMU(內存處理單元),主頻為400MHz最大可達到533MHz,提供了一個數字攝像頭接口(Camera Interface)。具有高性能、低功耗、接口豐富和體積小等優良特性。而3G模塊核心部件采用的是MC8630模塊,該模塊具有語音、短信和高速數據業務等功能,可以廣泛應用于高速數據傳輸、安防、無線媒體、直放站監控、鐵路終端和車載監控等領域。
        系統硬件結構如圖1所示。

        本文引用地址:http://www.104case.com/article/150415.htm

        a.jpg



        2 系統軟件設計
        系統主要由視頻采集模塊、數據處理模塊、網絡轉發模塊組成。
        2.1 視頻采集模塊設計
        根據項目的實際需要,在本系統中視頻數據來源主要有兩個方面:
        1)系統與可提供主動上傳功能的視頻服務器通過RJ45網線直接相接 主要用于完成多路視頻圖像采集。視頻服務器的主要功能是將攝像頭采集的數據完成編碼壓縮,并且將壓縮的數據以IP包的形式發送給接收端,由于該類視頻服務器通常是在局域網內使用,目前還很少有對于3G網絡的支持,隨著3G技術在國內發展的不斷深入,將在很大程度上取代有線網絡。所以本系統可作為現有視頻服務器的3G功能擴展。針對在外接視頻服務器時只需對收到的數據包進行轉發而無需對IP數據本身做分析處理的問題,并且在系統啟動到3G模塊撥號成功獲得IP地址之間會有一定的延遲,在本系統中提出了采用Linux的Netfilter架構的方法以及緩沖機制,通過在數據流經TCP/IP協議棧時掛載鉤子函數,實現IP數據在內核態的獲取,并且通過在內核開辟一塊足夠大的環形緩沖區來存儲數據。由于系統需要頻繁對緩沖區進行讀寫,為避免產生內存碎片,在本系統中采用了環形隊列的數據結構。在3G模塊獲得IP地址后,再通過驅動讀取緩沖區中的數據,由3G網絡完成轉發,從而降低丟包率并且提高數據包的轉發效率。因為傳統的方法是采用socket API來進行網絡編程,其對數據的訪問通常發生在用戶態,對于Linux操作系統來說,用戶進程的優先級和所占用的CPU時間要遠遠小于內核線程,同時內核進程擁有較高的執行優先度,故在網絡布局允許獲得IP數據包的條件下,將用戶態的數據包獲取功能載入內核態,可進一步提高系統的處理能力,增加系統的有效帶寬,本方法還可用于其他對IP數據本身進行處理并且對處理效率有苛刻要求的系統中,例如:本方法在本實驗室與某航空院合作開發的IP-TS協議轉換器上也得到了成功的應用,具有一定的通用性。Netfilter是Linux 2.6.x系列內核提供的一套數據包過濾框架,基于該框架的軟件能夠實現如數據包過濾、網絡地址轉換(NAT)等功能。要使用Netfilter,在內核編譯時設置“Network Packet Fihering”選項。Netfilter提供了一個抽象、通用化的框架,作為中間件,為每種網絡協議(IPv4、IPv6等)定義一套鉤子函數。對于Ipv4協議定義了5個鉤子函數,這些鉤子函數在數據報流過協議棧的5個關鍵點被調用,Netfilter可以在通過TCP/IP協議棧的路徑中的幾個定義良好的點上捕獲數據包,IPv4中的一個數據包通過netfilter系統的過程如圖2所示。

        b.jpg


        NF_IP_PRE_ROUTING
        在對數據包進行初始正確性檢查(校驗和等)后,截獲該數據包。
        NF_IP_LOCAL_IN
        如果數據包將要到達本地主機,則捕獲該數據包。
        NF_IP_FORWARD
        如果數據包將要到達某些其他主機,則捕獲該數據包。
        NF_IP_LOCAL_OUT
        在本地捕獲其目的地是外部的已創建的數據包。
        NF_IP_POST_ROUTING
        這是最后的鉤子,在此之后將傳輸數據包。

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

        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 读书| 康定县| 太原市| 贵定县| 庆云县| 垣曲县| 泰安市| 酉阳| 铁力市| 裕民县| 阿坝| 巴彦淖尔市| 游戏| 包头市| 潜江市| 马山县| 临沧市| 酒泉市| 元阳县| 正安县| 阳新县| 清流县| 乌拉特中旗| 南宫市| 泾川县| 乐陵市| 杭锦后旗| 扎兰屯市| 元谋县| 巴彦淖尔市| 定结县| 荥阳市| 肥东县| 玛纳斯县| 邵阳县| 屏东县| 彭泽县| 苍溪县| 房产| 崇文区| 富裕县|