![畢業(yè)設(shè)計(論文)基于SIP協(xié)議的嵌入式VOIP系統(tǒng)的研究與實現(xiàn)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/43c68570-17d5-45dd-856f-1cb304630ad4/43c68570-17d5-45dd-856f-1cb304630ad41.gif)
![畢業(yè)設(shè)計(論文)基于SIP協(xié)議的嵌入式VOIP系統(tǒng)的研究與實現(xiàn)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/43c68570-17d5-45dd-856f-1cb304630ad4/43c68570-17d5-45dd-856f-1cb304630ad42.gif)
![畢業(yè)設(shè)計(論文)基于SIP協(xié)議的嵌入式VOIP系統(tǒng)的研究與實現(xiàn)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/43c68570-17d5-45dd-856f-1cb304630ad4/43c68570-17d5-45dd-856f-1cb304630ad43.gif)
![畢業(yè)設(shè)計(論文)基于SIP協(xié)議的嵌入式VOIP系統(tǒng)的研究與實現(xiàn)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/43c68570-17d5-45dd-856f-1cb304630ad4/43c68570-17d5-45dd-856f-1cb304630ad44.gif)
![畢業(yè)設(shè)計(論文)基于SIP協(xié)議的嵌入式VOIP系統(tǒng)的研究與實現(xiàn)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/43c68570-17d5-45dd-856f-1cb304630ad4/43c68570-17d5-45dd-856f-1cb304630ad45.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、embeddedvoipsip-based research and implementation ofthe terminala dissertation submitted tonanjing institute of technologyfor the academic degree of bachelor of scienceby supervised byinstructor college of communication engineeringnanjing institute of technologyjune 2011摘要隨著計算機技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,語音壓縮和實時傳輸控制
2、技術(shù)的不斷發(fā)展,使得在ip網(wǎng)上傳輸語音數(shù)據(jù)變得不再困難。voip是指利用ip網(wǎng)絡(luò)傳送話音的技術(shù),也稱網(wǎng)絡(luò)電話或ip電話。在多媒體技術(shù)和網(wǎng)絡(luò)互連技術(shù)的推動下,voip技術(shù)誕生雖然時間很短,但發(fā)展迅猛。同時,隨著嵌入式技術(shù)的不斷發(fā)展,嵌入式技術(shù)從過去工業(yè)控制的應(yīng)用模式逐步滲透進(jìn)入消費電子產(chǎn)業(yè)。嵌入式voip終端作為嵌入式技術(shù)與voip技術(shù)的結(jié)合,有著廣闊的發(fā)展前景。論文首先概要介紹了voip的發(fā)展現(xiàn)狀和前景,研究了基于sip的信令技術(shù)、實時傳輸技術(shù)和媒體協(xié)商技術(shù);然后詳細(xì)闡述了linux系統(tǒng)基礎(chǔ)上終端應(yīng)用層的實現(xiàn)思想和具體架構(gòu),其中包括用于控制信令的sip模塊、用于處理語音的語音模塊和用于網(wǎng)絡(luò)傳輸
3、的rtp模塊。在信令控制部分,在研究并分析開源osip協(xié)議棧的事務(wù)狀態(tài)機模型的基礎(chǔ)上,解決了信令控制問題。在語音信號處理和數(shù)據(jù)包傳輸部分,主要研究并分析了開源mediastreamer協(xié)議棧的實時語音傳輸工作流程。模擬測試結(jié)果顯示,設(shè)計并實現(xiàn)的嵌入式voip終端可以對sip信令進(jìn)行很好地控制,具有良好的互通性。關(guān)鍵字:sip;嵌入式linux;voip;rtp;armabstractwith the development of computer technology and network technology, voice compression and real-time transmi
4、ssion control technology continues to evolve, making the internet to transmit voice data in ip becomes no longer difficult. voip , also called ip phone ,is a technology that transmits voice in packet-switching net. with the technology evolution of multimedia and network, voip technology advance rapi
5、dly. at the same time, with the development of embedded technology, embedded products have extended from traditional industry field to consuming electronics. as the combination of both technologies, embedded voip terminal will consequentially have great future.firstly, voips current and future state
6、s are overviewed in this dissertation. and the signaling technology based on the sip, the real time transport technology and session description technology is discussed and analyzed. secondly, the application architecture and realization of the embedded terminal base on linux system is discussed, wh
7、ich contain sip module (signaling controller), rtp module(voice transmitter) and voice module (voice processor). in the sip module, the difficulty of signaling control is settled after studying and analyzing transaction state machine of osip. in rtp and voice modules, the open source real time strea
8、m media library (mediastreamer) is devoted to work the flow of processing and transmitting of voice data. after testing, the terminal can work well to send, receive sip signaling and voice stream.key words:sip; embedded linux; voip; rtp; arm 目錄第一章 緒論1.1論文的背景及國內(nèi)外研究現(xiàn)狀在70年代,人們已開始了voip的研究,然而當(dāng)時系統(tǒng)的話音質(zhì)量不能令
9、人滿意,主要原因是當(dāng)時投入運營的arpanet的干線鏈路帶寬僅為50kbit/s,為典型的窄帶分組交換網(wǎng)絡(luò),不能滿足話音的實時傳輸。進(jìn)入90年代后,隨著internet在全球范圍內(nèi)興起和話音編碼技術(shù)的發(fā)展,ip分組話音通信技術(shù)獲得了突破性的進(jìn)展和較為廣泛的應(yīng)用。1996年,經(jīng)過各國專家的努力,itu-t(國際電信聯(lián)盟)通過了局域網(wǎng)上支持可視電話通信的信令協(xié)議,也就是現(xiàn)在應(yīng)用最為廣泛的h.323協(xié)議族。這個協(xié)議一經(jīng)推出,就成為ip網(wǎng)絡(luò)電話系統(tǒng)的公共規(guī)范,同時也極大的推動了ip電話的發(fā)展,并逐漸進(jìn)入公共電話網(wǎng)服務(wù)。2002年,另一大陣營ietf(因特網(wǎng)工程任務(wù)組)發(fā)布了rfc3261規(guī)范,即基于s
10、ip的信令協(xié)議標(biāo)準(zhǔn)。sip與h.323提供的功能和服務(wù)基本上都是相同的,但是由于sip在設(shè)計上更能體現(xiàn)internet體系結(jié)構(gòu)的優(yōu)勢,同時基于文本方式的信令使用簡單且易于擴展。sip協(xié)議一經(jīng)推出便得到了迅速發(fā)展,3gpp組織也在其發(fā)布的ims5中采用sip作為信令協(xié)議。隨著voip技術(shù)的發(fā)展,相信sip協(xié)議將逐步代替h.323協(xié)議成為voip的核心信令協(xié)議。基于這一應(yīng)用趨勢,國際上已經(jīng)開展了sip系統(tǒng)的研究和實現(xiàn),這些sip系統(tǒng)中關(guān)于終端的研究大多集中在軟終端上。如美國的sj labs公司開發(fā)了一套基于sip的voip軟終端系統(tǒng)sjphone,使用這套軟終端系統(tǒng),可以使pc用戶方便的通過互聯(lián)網(wǎng)
11、進(jìn)行語音通訊。微軟的視窗(windows)操作系統(tǒng)中的msn messenger采用的也是sip協(xié)議。在嵌入式終端方面,隨著嵌入式技術(shù)的不斷發(fā)展成熟,嵌入式技術(shù)與sip技術(shù)的結(jié)合越來越受到關(guān)注,國外的個別機構(gòu)也已開始了這方面的研究,如法國cegetel公司曾演示了一套sip多媒體消息系統(tǒng),采用這套系統(tǒng)后,個人數(shù)字助理(pda)、筆記本和移動電話都可以非常方便地通過公網(wǎng)通信,但是這些終端在信令控制和通用性上還有待提高。目前,我國也有一些公司和科研機構(gòu)在進(jìn)行基于sip的ip電話的研究,但總體來看,我國在基于sip的ip電話的研究方面相對還比較滯后。1.2論文的研究內(nèi)容與意義voip(voice o
12、ver ip),也稱ip電話,它是利用基于分組交換的ip(internet/intranet)數(shù)據(jù)網(wǎng)絡(luò)進(jìn)行語音信號傳輸?shù)囊环N技術(shù)。voip中最重要的是信令系統(tǒng),sip(session initiation protocol,會話初始化協(xié)議)協(xié)議因其簡單、靈活的技術(shù)特點,正在逐步代替原有的h.323協(xié)議成為ip語音技術(shù)的信令核心協(xié)議,基于sip的voip終端研究也隨之成為一個熱點。然而,目前大多數(shù)終端的研究都集中在軟終端上,對于嵌入式終端的研究還存在較多問題,例如sip信令控制復(fù)雜、硬件相關(guān)性較大和通用性不好等。為此,本文在研究了sip協(xié)議、rtp協(xié)議和嵌入式系統(tǒng)的基礎(chǔ)上,移植并實現(xiàn)了一種基于l
13、inux操作系統(tǒng)的,使用sip信令協(xié)議的,通用性較好的嵌入式voip終端,以適應(yīng)voip終端的廣泛應(yīng)用。本文研究與實現(xiàn)的voip終端結(jié)合了sip信令與嵌入式終端兩大技術(shù)的優(yōu)勢,滿足了越來越多用戶的需求,并且符合集移動通信、網(wǎng)絡(luò)技術(shù)和嵌入式系統(tǒng)為一體的智能化通信終端的發(fā)展趨勢,對推進(jìn)voip終端的普及與sip信令協(xié)議的廣泛使用有重要的意義。1.3論文的章節(jié)安排第一章緒論,簡要介紹了voip技術(shù)的發(fā)展,指出了課題研究的背景、意義和本次課題主要研究內(nèi)容。第二章嵌入式和voip的關(guān)鍵技術(shù),主要介紹了嵌入式交叉編譯等知識。對voip的關(guān)鍵技術(shù),如sip協(xié)議,sdp協(xié)議,rtp協(xié)議,pcm語音編解碼做了分
14、析和探討。第三章軟硬件總體設(shè)計方案,這一章介紹了voip終端的硬件支持,詳細(xì)介紹了本次畢設(shè)所采用的arm9開發(fā)平臺。此外,還重點介紹了本次應(yīng)用層所采用的開源軟件linphone及其移植時所依賴的各個庫。第四章voip系統(tǒng)實現(xiàn)方案,這一章主要介紹嵌入式bootloader,內(nèi)核以及文件系統(tǒng)的制作。另外,還介紹了來源軟件linphone和它所需要依賴的各個庫在arm平臺和x86平臺上的移植。第五章系統(tǒng)實現(xiàn)和測試時遇到的問題的解決方案,本章主要介紹了在安裝搭建交叉編譯環(huán)境,linphone軟件移植以及最終測試時遇到的一些問題,并給出這些問題的解決方案。第六章成果展示及源碼分析,本章主要介紹了本次畢業(yè)
15、設(shè)計所作的一些成果,包括bootloader、內(nèi)核、文件系統(tǒng)、交叉編譯后的目標(biāo)文件以及使用抓包軟甲對通話過程進(jìn)行的抓包工作。最后對所抓的包和linphone的源代碼進(jìn)行了簡要的分析。第七章總結(jié)與展望,總結(jié)了本課題的研究工作,提出了今后進(jìn)一步工作的方向。 第三章 軟硬件總體設(shè)計方案3.1系統(tǒng)設(shè)計目標(biāo)與開發(fā)方法3.1.1系統(tǒng)設(shè)計目標(biāo)本系統(tǒng)設(shè)計的目標(biāo)是在嵌入式平臺上實現(xiàn)一個voip終端(用戶代理,如圖2.3中的ua hard),具體來說包括:(l)能夠滿足ip網(wǎng)上語音通信的基本要求(ua呼叫控制、sip消息解析、語音編解碼、rtp傳輸);(2)按照標(biāo)準(zhǔn)sip協(xié)議開發(fā),能和其它使用sip協(xié)議的ua互通
16、;(3)運行穩(wěn)定;(4)具有良好的開放性和擴展性;(5)系統(tǒng)易于維護(hù),方便后續(xù)的研究和開發(fā)。3.1.2系統(tǒng)的總體結(jié)構(gòu)根據(jù)分層實現(xiàn)的思想,系統(tǒng)的總體結(jié)構(gòu)如圖3.1所示:圖3.1 系統(tǒng)的總體結(jié)構(gòu)3.2系統(tǒng)硬件平臺的選擇根據(jù)局域網(wǎng)上語音通信的需要,本系統(tǒng)的硬件部分至少應(yīng)包括以下模塊:(l)嵌入式微處理器(2)存儲器(3)音頻模塊:包括音頻的輸入(mic)和輸出(揚聲器)(4)lan模塊:采用標(biāo)準(zhǔn)rj-45接口與局域網(wǎng)連接開發(fā)嵌入式硬件平臺是一項復(fù)雜的工作,不僅要考慮各模塊的功能、性能、接口,模塊間電壓匹配、時序匹配等技術(shù)性因素,還要考慮成本,供貨情況等非技術(shù)因素。此外,硬件結(jié)構(gòu)的設(shè)計還應(yīng)具有一定的可
17、擴展性以利于保護(hù)投資。綜合各種因素,我們選用了mini2440開發(fā)板,該開發(fā)板采用samsung的s3c2440微處理器,帶有豐富的接口,完全可以滿足本系統(tǒng)開發(fā)的需求。系統(tǒng)硬件框圖如圖3.2所示(實物圖見附錄a)。圖3.2 系統(tǒng)硬件框圖3.3硬件平臺的介紹3.3.1 s3c2440芯片原理及開發(fā)板結(jié)構(gòu)(cpu) 三星公司推出的16/32risc微處理器s3c2440a,為手持設(shè)備和一般類型應(yīng)用提供了低價格、低功耗、高性能小型微控制器的解決方案。為了降低整體系統(tǒng)成本,s3c2440a提供了豐富的內(nèi)部設(shè)備s3c2440a采用了arm920t的內(nèi)核,0.13um的cmos標(biāo)準(zhǔn)宏單元和存儲器單元。其低
18、功耗,簡單,優(yōu)雅,且全靜態(tài)設(shè)計特別適合于對成本和功率敏感型的應(yīng)用。它采用了新的總線架構(gòu) advaneedmicrocontr0llerbusaiehiteeture(amba)。s3c2440的杰出特點是其核心處理器 (cpu),是一個由arm公司設(shè)計的16/32位arm920t的risc處理器。arm920t實現(xiàn)了mmu, ambabus和harvard高速緩沖體系結(jié)構(gòu)。這一結(jié)構(gòu)具有獨立的16kb指令cache和16kb數(shù)據(jù)cache。每個都是由具有8字長的行組成。通過提供一套完整的通用系統(tǒng)外設(shè),s3c2440a減少整體系統(tǒng)成本和無需配置額外的組件。下圖是s3c2440a方框圖3.3圖3.3
19、s3c2440方框圖mini2440開發(fā)板選用s3c2440處理器,并結(jié)合udal341音頻eodee,es8900網(wǎng)卡芯片,以及sdram,nomash,nandflash等芯片,其資源信息如下:cpu處理器- samsung s3c2440a,主頻400mhz,最高533mhzsdram 內(nèi)存- 在板64m sdram - 32bit 數(shù)據(jù)總線 - sdram 時鐘頻率高達(dá)100mhzflash 存儲- 在板128m nand flash, 掉電非易失 - 在板2m nor flash,掉電非易失,已經(jīng)安裝 bioslcd顯示 - 板上集成4線電阻式觸摸屏接口,可以直接連接四線電阻觸摸屏
20、- 支持黑白、4 級灰度、16 級灰度、256 色、4096 色 stn 液晶屏,尺寸從 3.5 寸到 12.1寸,屏幕分辨率可以達(dá)到1024x768象素; - 支持黑白、4 級灰度、16級灰度、256色、64k色、真彩色tft液晶屏,尺寸從 3.5寸到12.1寸,屏幕分辨率可以達(dá)到1024x768象素; - 標(biāo)準(zhǔn)配置為nec 256k色240x320/3.5英寸tft真彩液晶屏,帶觸摸屏; - 板上引出一個 12v電源接口,可以為大尺寸tft液晶的12v ccfl 背光模塊(inverting)供電。接口和資源- 1個100m 以太網(wǎng)rj-45 接口(采用dm9000網(wǎng)絡(luò)芯片) - 3個串行
21、口 - 1個usb host - 1個usb slave b型接口 - 1個sd卡存儲接口 - 1路立體聲音頻輸出接口,一路麥克風(fēng)接口; - 1個2.0mm間距10 針jtag接口 - 4 user leds - 6 user buttons(帶引出座) - 1個pwm 控制蜂鳴器 - 1個可調(diào)電阻,用于ad模數(shù)轉(zhuǎn)換測試 - 1個i2c總線at24c08芯片,用于i2c總線測試 - 1個2.0 mm間距20pin 攝像頭接口 - 板載實時時鐘電池 - 電源接口(5v),帶電源開關(guān)和指示燈系統(tǒng)時鐘源12m 無源晶振實時時鐘- 內(nèi)部實時時鐘(帶后備鋰電池)3.3.2存儲器存儲器是硬件系統(tǒng)的重要組成
22、部分,在嵌入式系統(tǒng)中,通常用非易失flash存儲器存儲啟動信息、操作系統(tǒng)、各種配置參數(shù)以及斷電后需要保存的用戶數(shù)據(jù),而用sdram存儲臨時數(shù)據(jù)和程序。 flash存儲器又分為nor flash和nand flash兩種。mini2440提供了2mb的nor flash存儲器,可存放少量啟動代碼。同時還提供了1片128mb的nand flash用于存放啟動代碼、操作系統(tǒng)鏡象和文件系統(tǒng)。s3c2440支持stepping stone機制,因此可以采用l片nand flash同時作為啟動rom和系統(tǒng)程序保存rom。mini2440通過一個bootsel跳線來選擇通過nor flash啟動還是通過na
23、nd flash啟動。此外,mini2440還包含64mb的sdram,用于設(shè)置程序堆棧和存放各種變量等用途。3.3.3以太網(wǎng)模塊mini2440包含一個cs8900a作為主控芯片的10m以太網(wǎng)模塊。其主要特性如下: 單芯片ieee802.3以太網(wǎng)控制器(帶directisa-bus接口) 工作電壓3v,最大工作電流55ma 全雙工操作 片上收發(fā)幀的ram緩存區(qū) 10base-t端口具備隔離變壓器 可編程傳輸特性3.3.4音頻模塊mini2440使用了philips的uda1341音頻芯片。該芯片工作電壓為3v,集成adc和dac,提供1路立體聲音頻輸出、1路mic(可支持錄音)和1路line
24、-in。而由于voip需要聲卡能夠全雙工工作,uda1341不支持使用dma方式的全雙工工作方式,因此本系統(tǒng)使用了外接的usb聲卡(采用uac3556b芯片)代替板載的uda1341聲卡芯片,實現(xiàn)全雙工工作方式。3.4系統(tǒng)軟件構(gòu)架3.4.1嵌入式操作系統(tǒng)的選擇嵌入式操作系統(tǒng)是嵌入式設(shè)備軟件的核心部分。它的存在使得設(shè)備的功能有很大的擴展空間和伸縮性能。選擇嵌入式操作系統(tǒng)時要考慮系統(tǒng)的定制能力、開發(fā)工具支持、可利用資源、可移植性、系統(tǒng)成本、對中文的兼容性以及技術(shù)資料支持等因素。典型的嵌入式操作系統(tǒng)有:windows ce、vxworks、嵌入式linux。linux進(jìn)入嵌入式操作系統(tǒng)市場較晚,但發(fā)
25、展極其迅速,目前己經(jīng)搶占了大片市場。linux之所以能在嵌入式系統(tǒng)市場上取得如此輝煌的成果,與其自身的優(yōu)良特性是分不開的。1.廣泛的硬件支持linux能夠支持x86、arm、mips、alpha、powerpc等多種體系結(jié)構(gòu),目前已經(jīng)成功移植到數(shù)十種硬件平臺,幾乎能夠運行在所有流行的cpu上。2.內(nèi)核高效穩(wěn)定linux內(nèi)核的高效和穩(wěn)定已經(jīng)在各個領(lǐng)域內(nèi)得到了大量事實的驗證,linux的內(nèi)核設(shè)計非常精巧,分成進(jìn)程調(diào)度、內(nèi)存管理、進(jìn)程間通信、虛擬文件系統(tǒng)和網(wǎng)絡(luò)接口五大部分,其獨特的模塊機制可以根據(jù)用戶的需要,實時地將某些模塊插入到內(nèi)核或從內(nèi)核中移走,這些特性適合于嵌入式系統(tǒng)的需要。3.開放源碼,軟件
26、豐富linux是開放源代碼的自由操作系統(tǒng),它為用戶提供了最大限度的自由度,由于嵌入式系統(tǒng)千差萬別,往往需要針對具體的應(yīng)用進(jìn)行修改和優(yōu)化,因而獲得源代碼就變得至關(guān)重要了。linux軟件資源十分豐富,每一種通用程序在linux上幾乎都可以找到,并且數(shù)量還在不斷增加。在linux上開發(fā)嵌入式應(yīng)用軟件一般不用從頭做起,而是可以選擇一個類似的自由軟件作為原型,在其上進(jìn)行二次開發(fā)。4.免費使用嵌入式linux是免費的。使用者無需向任何組織或個人申請使用許可,更不用交納許可證費用,這無疑有利于降低嵌入式產(chǎn)品的成本。綜合考慮,本課題選擇免費的嵌入式linux作為操作系統(tǒng)平臺。3.4.2 sip,rtp協(xié)議棧的
27、選擇協(xié)議棧是協(xié)議的具體實現(xiàn)實體,開發(fā)sip應(yīng)用需要一個穩(wěn)定高效的sip協(xié)議棧。sip協(xié)議棧的作用是提供sip操作所需的基本數(shù)據(jù)結(jié)構(gòu)和各種應(yīng)用程序編程接口(api)。本設(shè)計選用了開源sip協(xié)議棧osip與開源rtp協(xié)議棧ortp。osip協(xié)議棧用ansi c編寫,結(jié)構(gòu)小巧簡單,只有400k左右,適合嵌入式系統(tǒng),并具有模塊化、可移植性好、工作穩(wěn)定、兼容性強等特點。osip由解析模塊、工具模塊和狀態(tài)機模塊構(gòu)成,其核心是狀態(tài)機模塊。ortp 特性與osip基本相同。3.4.3本次課題所采用的開源軟件(1)操作系統(tǒng)red hat enterprise linux 5(2)交叉編譯器arm-linux-g
28、cc(3)開源軟件linphone(4)開源軟件所需要的依賴庫libogg-1.1.3.tar.gz(/gnu) speex-1.2beta3.tar.gz(依賴于 libogg) libosip2-3.3.0.tar.gz(/gnu/osip/libosip2-3.3.0.tar.gz) libexosip2-3.3.0.tar.gz readline(optional) intltool-0.35.0.tar.gz(optional) ffmpeg(提供 linphone視頻支持,如不需視頻功能可不要)(5)intltoo
29、l的依賴庫xml-parser(6)超級終端securecrt(7)遠(yuǎn)程登錄軟件ssh(8)串口轉(zhuǎn)usb軟件(9)usb下載程序軟件(10)dnw燒寫程序工具以上所介紹的開源軟件都可以在chinaunix網(wǎng)站上下載得到。3.5linphone依賴庫介紹linphone可以分為以下兩部分:前端和liblinphone:無論gnome圖形界面還是liblinphonee文字界面都屬于前端;linphone則是linphone能夠提供功能的庫函數(shù)。liblinphone所依賴的庫:包括sip協(xié)議客戶端庫exosip和osip,實時傳輸協(xié)議庫ortp,回聲消除算法speex和語音壓縮和解壓算法庫lib
30、ogg,生成音頻和視頻流的mediastreamer2。3.5.1osip模塊osip是遵循ietf標(biāo)準(zhǔn),使用ansic編寫,源代碼開放的sip協(xié)議棧。osip主要有下列優(yōu)點:(l)結(jié)構(gòu)小巧簡單,只有400k左右,適合在嵌入式系統(tǒng)上應(yīng)用;(2)可移植性好,已被成功的應(yīng)用于solaris、hpunix、vxworks、windows和gnu/linux等系統(tǒng)中;(3)工作穩(wěn)定、兼容性強。osip主要由解析模塊、工具模塊和狀態(tài)機模塊構(gòu)成,其核心是狀態(tài)機模塊。圖3.4 osip結(jié)構(gòu)解析模塊完成對sip請求和響應(yīng)進(jìn)行封裝與解析處理。解析模塊又可分為sip解析、sdp解析與url解析。工具模塊主要提供一
31、些處理工具用于對話管理和sdp協(xié)商。狀態(tài)機模塊負(fù)責(zé)對某個事務(wù)(如注冊過程、呼叫過程等)狀態(tài)的維持及處理,并在特定的狀態(tài)下觸發(fā)響應(yīng)的事件或回調(diào)函數(shù)。根據(jù)rfc描述中關(guān)于sip協(xié)議事務(wù)層的定義,osip協(xié)議棧有4種狀態(tài)機:客戶端邀請事務(wù)(ict),客戶端非邀請事務(wù)伽ict),服務(wù)器端要求事務(wù) (ist),服務(wù)器端非邀請事務(wù) (nist)。前兩種狀態(tài)機是由客戶端發(fā)起的,后兩種狀態(tài)機是由服務(wù)器發(fā)起的,這4種狀態(tài)機涵蓋了sip的各種事務(wù)類型。其中ict是sip客戶端中最常見的事務(wù)。圖3.5 ict狀態(tài)機osip的4種狀態(tài)機對應(yīng)了sip中的4種基本事務(wù),而在sip信令的通信過程中,事務(wù)是最基本的通信單元,
32、所以在用osip實現(xiàn)sip協(xié)議棧的過程中,對于這4種狀態(tài)機的維護(hù)和管理是非常關(guān)鍵的。從圖中可以看出osip的狀態(tài)機比較復(fù)雜,管理起來也比較復(fù)雜,但在實際的應(yīng)用過程中不需要對狀態(tài)機進(jìn)行管理,這里需要管理的是事務(wù),在事務(wù)初始化的同時,osip協(xié)議棧內(nèi)部會對狀態(tài)機進(jìn)行管理,這也是osip模塊松耦合的表現(xiàn)之一。鑒于osip只是實現(xiàn)了sip協(xié)議棧的狀態(tài)機,在voip終端中直接使用比較復(fù)雜,osip專注于sip底層解析,這使得它具有很高的效率。但另一方面,由于沒有提供高層的sip會話控制api,使得上層應(yīng)用在調(diào)用協(xié)議棧時很破碎,降低了易用性。為此osip的開發(fā)者們又在。sip的基礎(chǔ)上開發(fā)了exosip。e
33、xosip是osip的擴展,它部分封裝了osip協(xié)議棧,使得它更容易被使用。exosip實現(xiàn)了作為單個sip終端的大部分功能,如register、eall、subseription等。鑒于osip只是實現(xiàn)了sip協(xié)議棧的狀態(tài)機,在voip終端中直接使用比較復(fù)雜,我們使用osip的擴展函數(shù)庫exosip簡化開發(fā)任務(wù)。下面我們將詳細(xì)介紹exosip庫的內(nèi)容。3.5.2 exosip模塊exosip是osip的一個擴展協(xié)議集,其在osip的基礎(chǔ)上部分封裝了osip協(xié)議棧,使其更容易被使用。exosip使用udp socket套接字實現(xiàn)底層sip協(xié)議的接收/發(fā)送;使用定時輪循的方式調(diào)用osip的事務(wù)處
34、理函數(shù),這部分是協(xié)議棧運轉(zhuǎn)的核心。通過添加/讀取事務(wù)消息管道的方式,驅(qū)動事務(wù)的狀態(tài)機,使得來自遠(yuǎn)端的sip信令能匯報給調(diào)用程序,來自調(diào)用程序的反饋能通過sip信令回傳給遠(yuǎn)端;增加了對各個類型事務(wù)的超時處理,確保所有資源都能循環(huán)使用,不會被耗用殆盡;使用jevent消息管道來向上通知調(diào)用程序底層發(fā)生的事件,調(diào)用程序只要讀取該消息管道,就能獲得感興趣的事件,進(jìn)行相關(guān)的處理。exosip函數(shù)庫中的主要數(shù)據(jù)結(jié)構(gòu):struct exosip_event exosip_event_type_t typechar textinfo 256void external_referenceosip_message
35、_t *requestosip_message_t *responseosip_message_t *ackint tidint didint ridint cidint sidint nidint ss_statusint ss_reason 主要exosip函數(shù)舉例:int exosip_init ( void )用途:初始化 exosip函數(shù)庫int exosip_listen_addr (int transport, const char *addr, int port, int family, int secure )用途:監(jiān)聽發(fā)送到指定端口的sip事件參數(shù):transport:使用
36、ipproto_udp指定使用udp協(xié)議 addr:指定綁定的地址 (null 代表所有接口) port:指定監(jiān)聽的端口. (0 代表隨機端口) family:指定使用協(xié)議族(af_inet 或者 af_inet6). secure:0指定 udp 或者 tcp, 1 指定 tls.1. exosip_event_t * exosip_event_wait ( int tv_s, int tv_ms)用途:指定查詢sip事件的時間間隔參數(shù):tv_s:間隔時間 (單位:秒)tv_ms:間隔時間(單位:毫秒)2. int exosip_call_build_initial_invite (osip
37、_message_t,*invite, const char *to, const char *from, const char *route, const char *subject )用途:為一個新的呼叫構(gòu)造默認(rèn)的invite消息. 參數(shù):invite:指向sip消息的指針.to:被呼叫著的sip url. from:呼叫者的sip url.route: invite消息的頭部. (可選) subject:呼叫的主題.3. int exosip_call_send_initial_invite (osip_message_t *invite )用途:發(fā)送已構(gòu)造完畢的invite消息參數(shù):i
38、nvite:待發(fā)送的invite消息。3.5.3 rtp模塊本系統(tǒng)的rtp模塊采用開源的rtp協(xié)議棧ortp16,ortp是gpl授權(quán)的實現(xiàn)rtp的開源協(xié)議棧,用c語言編寫,可應(yīng)用于windows和linux平臺。其支持多種rtp格式;能夠完成發(fā)送接收的實時調(diào)度,單線程支持多路媒體流;有自適應(yīng)的緩沖區(qū)算法并實現(xiàn)了rtcp。利用該協(xié)議??梢暂^方便的實現(xiàn)對實時媒體的傳輸和控制,如對本地待發(fā)數(shù)據(jù)的rtp封裝,對接收到的rtp包拆包以及通過對網(wǎng)絡(luò)rtcp監(jiān)測,適當(dāng)?shù)恼{(diào)整本地的編解碼器策略。rtp提供了時間戳、序列號以及其它的結(jié)構(gòu)用于控制實時數(shù)據(jù)的流放,發(fā)送端依照即時的采樣在數(shù)據(jù)包里設(shè)置了時間標(biāo)簽。在接
39、收端收到數(shù)據(jù)包后,就依照時間標(biāo)簽按照正確的速率恢復(fù)成原始的媒體流。rtp和udp二者共同完成運輸層協(xié)議功能:rtp負(fù)責(zé)數(shù)據(jù)包按時間標(biāo)記和封裝;udp只是傳輸數(shù)據(jù)包,不考慮數(shù)據(jù)包之間的時間順序。rtp數(shù)據(jù)發(fā)送的過程可以簡單描述如下:(l)持續(xù)地從數(shù)據(jù)隊列中取出待發(fā)送的數(shù)據(jù);(2)根據(jù)系統(tǒng)時間生成當(dāng)前的時間戳;(3)將數(shù)據(jù)和時間戳一起交由協(xié)議棧發(fā)送處理;(4)協(xié)議棧完成對數(shù)據(jù)的rtp格式封裝并交付udp層發(fā)送。當(dāng)從網(wǎng)絡(luò)上接收到rtp/rtcp包時,首先調(diào)用rtc解包模塊進(jìn)行拆包,然后按照一定的時間粒度調(diào)用去抖緩沖中的函數(shù)將壓縮語音包送給cpu,通過cpu還原成媒體信號,最后經(jīng)codec芯片進(jìn)行d/
40、a轉(zhuǎn)換后送至終端輸出。數(shù)據(jù)拆包過程如圖3.6所示。圖3.6 rtp數(shù)據(jù)包拆包ortp中發(fā)送和接收主要是兩個函數(shù)rtp_session_send_with_ts和rtpsession_recy_with_ts。以rtp_session_recv_with_ts為例:內(nèi)部接收數(shù)據(jù)使用的是rtp_session_recv_with_ts,首先,會接收所有scoket上的數(shù)據(jù),然后將rtp包存放在一個隊列之中,一系列處理之后,有一個pthread_mutex_lock的線程鎖,將線程鎖住。此時,由rtp_scheduler_schedule線程進(jìn)行調(diào)度(該線程在協(xié)議棧初始化)時創(chuàng)建。rtp_sched
41、uler_schedule會遍歷所有的 media session(媒體流),然后判斷其中的timestamp(時間戳),如果計算的時間到達(dá),則讓rtp_sessin_recvm_with_ts繼續(xù)處理。 時間戳的算法是以第一個打到的rtp數(shù)據(jù)包為準(zhǔn),然后根據(jù)其中的時間,進(jìn)行推算。假如第一個包是10點整來的,然后ptime又是20ms,那么下一個包的時間就是10點又20毫秒。media session是一個rtpsession對象,包含多種屬性和方法。rtpscheduler中包含一個rtpsession的隊列,用來支持多媒體流。 值得一提的是,npesscheduler-schedule中有
42、一個獨特的”sleep”,該sleep可以停頓10ms。并且這個時間是絕對的,如果中間因為處理或者其他原因延遲了2ms,那么這個sleep停頓的就是8ms。具體函數(shù)可以看一下posixtimer.c中的posix_timer_do。實現(xiàn)。精確的計時使用select,精確時間的取得很多使用gettimcofday這個函數(shù)。在實現(xiàn)單線程支持多路媒體流上,ortp對外是有一個sessionset,完全模擬了select的做法,對外提供的接口,也和標(biāo)準(zhǔn)seleet幾乎一樣。主要的處理實現(xiàn),還是在找pesscheduler里面完成。模擬seleet的喚醒,使用了 pthread_cond_wait。3.
43、5.4語音處理模塊語音處理模塊的工作是完成語音信號的采集、編碼、解碼和回放,其大致的工作流程如圖5.4所示,可分為語音數(shù)據(jù)發(fā)送和語音數(shù)據(jù)接收兩個部分。圖3.7語音模塊處理流程語音數(shù)據(jù)發(fā)送的過程為:通過uac3556b編解碼芯片完成語音信號的脈沖編碼調(diào)制(pcm),將模擬信號轉(zhuǎn)化成數(shù)字信號;采用選定的編碼標(biāo)準(zhǔn)對數(shù)字信號進(jìn)行壓縮編碼;加上rtp頭和其它頭部字段,封裝數(shù)據(jù)包送到udp協(xié)議層傳輸,完成音頻信號的發(fā)送。語音數(shù)據(jù)的接收,采用在sdp協(xié)商過程中獲得的對方的編碼方式,首先需要從rtp包中獲得語音的編碼信號,對數(shù)據(jù)進(jìn)行解碼,然后將這些經(jīng)過解碼的信號解調(diào)還原成模擬信號。本系統(tǒng)中采用mediastr
44、eamer媒體庫完成語音模塊的功能。mediastramer媒體庫將語音模塊的工作分為write/read device,encode/decode,rtp_send/rtp_recv六部分,每一個部分都可以聲明成為一個ms_filter。每一個ms_filter可以從另一個ms_filter讀入數(shù)據(jù)作為輸入,并將數(shù)據(jù)輸出作為另一個ms_filter的輸入。發(fā)送或接受語音流時將需要使用的ms_filter按順序使用ms_filter_link連接起來,即可完成語音從采集到編碼再到發(fā)送或從接受到解碼到播放的任務(wù)。第四章voip系統(tǒng)實現(xiàn)方案4.1交叉開發(fā)環(huán)境的建立4.1.1連接硬件我們采用一臺安裝
45、red hat enterprise linux 5的laptop作為宿主機,用一根串行線連接宿主機的com口和mini2440上的com口用于在宿主機和開發(fā)板(目標(biāo)機)之間傳遞調(diào)試數(shù)據(jù)。用一根網(wǎng)線連接宿主機的網(wǎng)口與mini2440上的網(wǎng)口,用與傳輸ip數(shù)據(jù)包。用一根usb連接線連接宿主機usb口與mini2440上的usb口,用于為開發(fā)板燒寫文件系統(tǒng)與linux內(nèi)核。4.1.2安裝交叉編譯器mini2440的光盤中自帶了交叉編譯器,安裝的過程就是將相應(yīng)文件拷入相應(yīng)目錄的過程。先將光盤目錄linux 中的arm-linux-gcc-3.3.2.tgz 拷貝到某個目錄下如tmp,然后進(jìn)入到該目錄
46、,執(zhí)行解壓命令:#cd tmp#tar -xvzf arm-linux-gcc-3.3.2.tgz c 執(zhí)行該命令, 將把arm-linux-gcc分別安裝/usr/local/arm/3.3.2,然后運行命令#gedit /root/bashrc編輯/root/.bashrc 文件,在最后一行 export path=$path:/usr/local/arm/3.4.1/bin也可以訪問/etc/profile文件,具體執(zhí)行為vim /etc/profile,在export path上一行添加path=$path:/usr/local/arm/3.4.1/bin。之后再重新啟動linux宿主
47、機,這樣交叉編譯器即安裝完畢。在命令行輸入 arm-linux-gcc v,就可以查看到交叉編譯器是否成功安裝,可以查看到交叉編譯器的版本號,就表示正確安裝了。4.1.3配置與燒寫vboot將mini2440的光盤中l(wèi)inux 內(nèi)核的源代碼包vboot-src-20090721.tgz復(fù)制到某一個目錄,進(jìn)入該目錄,運行以下命令:#tar -xvzf vboot-src-20090721.tgz c opt/friendlyarm/mini2440這樣將把內(nèi)核源代碼解壓到/opt/friendlyarm/mini2440/kernel-2.6.13 的目錄進(jìn)入內(nèi)核源代碼目錄,進(jìn)入vboot目錄進(jìn)
48、行make命令編譯。就會生成一個vbot.bin文件,利用超級終端和dnw工具把vboot燒寫到arm開發(fā)板中。4.1.4配置與燒寫內(nèi)核將mini2440的光盤中l(wèi)inux 內(nèi)核的源代碼包linux-2.6.13-qq2440v3.tgz復(fù)制到某一個目錄,進(jìn)入該目錄,運行以下命令:#tar -xvzf linux-2.6.13-qq2440_20070517.tgz c opt/friendlyarm/qq2440這樣將把內(nèi)核源代碼解壓到/opt/friendlyarm/qq2440/kernel-2.6.13 的目錄進(jìn)入內(nèi)核源代碼目錄,然后執(zhí)行“make menuconfig”,出現(xiàn)配置內(nèi)核
49、界面,載入config_mini2440_n35預(yù)設(shè)配置方案,執(zhí)行命令首先執(zhí)行下面的命令cp config_mini2440_n35 .config。在此預(yù)設(shè)方案中設(shè)置好了大部分的基本設(shè)置,因為本系統(tǒng)使用了usb聲卡作為聲音的輸入,輸出媒介,因此需要在內(nèi)核中加入對usb聲卡的驅(qū)動支持。在內(nèi)核配置界面中,device drivers-usb support-usb audio support配置為內(nèi)核內(nèi)建模塊,內(nèi)核usb聲卡配置如圖4.1所示。圖4.1內(nèi)核usb聲卡配置退出內(nèi)核配置界面。輸入以下命令,開始編譯內(nèi)核:#make zimage將最終生成的zimage內(nèi)核文件燒入開發(fā)板。4.1.5制作
50、根文件系統(tǒng)進(jìn)入busybox,對makefile進(jìn)行相應(yīng)的修改將189行的arch?=$(subarch)修改為arch?=arm,164行的cross_compile?=修改為cross_compile?=arm-linux-修改后執(zhí)行make命令編譯busybox。配置busybox和配置linux內(nèi)核一樣,執(zhí)行make menuconfig,會出現(xiàn)下圖的配置界面:圖4.2busybox的配置然后安裝busybox,將busybox安裝/home/wjxt 目錄下,在安裝之前需要在pc機上執(zhí)行“mkdir/home/wjxt”命令建立wjxt目錄,然后執(zhí)行“make config_pref
51、ix =/home/wjxt install”命令完成安裝。開發(fā)板的根文件系統(tǒng)在主機上的目錄為/home/work/rootby。在此目錄下使用mkdir命令建立dev,etc,home,lib,mnt,proc,root,sys,tmp目錄。進(jìn)入/home/work/rootby工作目錄,執(zhí)行以下命令: #cd /home/work/rootby #mkyaffs2image root_qtopia root_qtopia.img 如果你使用的是 128m nand flash 的 mini2440/micro2440,請使用mkyaffs2image-128m制作工具,本次畢業(yè)設(shè)計所采用的
52、是mini2440開發(fā)板,因此使用mkyaffs2image-128m制作工具。這樣問價系統(tǒng)就制作好了。燒寫到開發(fā)板中,這樣開發(fā)板就可以啟動運行了。本系統(tǒng)的開發(fā)環(huán)境就搭建完成了。4.2 linphone在 linux x86下的編譯4.2.1 linphone 依賴庫準(zhǔn)備libogg-1.1.3.tar.gz(/gnu) speex-1.2beta3.tar.gz(依賴于 libogg) libosip2-3.3.0.tar.gz(/gnu/osip/libosip2-3.3.0.tar.gz) libexosip2-3.3.
53、0.tar.gz( readline(optional) intltool-0.35.0.tar.gz(optional) ffmpeg(提供 linphone視頻支持,如不需視頻功能可不要) linphone 版本: linphone-3.2.0.tar.gz o s: red hat enterprise linux 5(vmware 下)4.2.2解壓源代碼在 linux 的/home/cena/目錄下新建目錄 linphone 在其中建立 sources、build、x86_target、arm_target ;注:這里 cena 為用戶名,以下類同!rootbcdcena# mkdi
54、r p/home/cena/linphone/sources,/home/cena/linphone/build/home/cena/linphone/x86_target,/home/cena/linphone/arm_target將相應(yīng)的庫與 linphone源碼拷貝到 sources目錄下|soureces -| libogg-1.1.3.tar.gz -| libosip2-3.3.0.tar.gz -| libexosip2-3.3.0.tar.gz -| speex-1.2beta3.tar.gz -| linphone-3.2.0.tar.gz將所有壓縮文件解壓準(zhǔn)備編譯;root
55、 bcd cena# cd linphone/sources root bcd sources# tar zxvf libogg-1.1.3.tar.gz root bcd sources# tar zxvf libosip2-3.3.0.tar.gz root bcd sources# tar zxvf libexosip2-3.3.0.tar.gz root bcd sources# tar zxvf speex-1.2beta3.tar.gz root bcd sources# tar zxvf linphone-3.2.0.tar.gz 4.2.3配置編譯各個依賴庫和linphone開源
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)機售賣租賃合同范本
- 個人領(lǐng)養(yǎng)寵物合同范例
- 公建房屋維修合同范本
- 寫退貨合同范本
- 2人合伙人協(xié)議合同范例
- 農(nóng)村水井租賃合同范例
- 農(nóng)村住宅買賣租賃合同范本
- 仿古面磚采購合同范本
- 農(nóng)村水產(chǎn)養(yǎng)殖租賃合同范例
- 養(yǎng)殖奶牛合作合同范例
- 山東省濟寧市2025屆高三歷史一輪復(fù)習(xí)高考仿真試卷 含答案
- 五年級數(shù)學(xué)(小數(shù)乘法)計算題專項練習(xí)及答案
- 交通法規(guī)教育課件
- 湖南省長郡中學(xué)2023-2024學(xué)年高二下學(xué)期寒假檢測(開學(xué)考試)物理 含解析
- GB/T 17614.1-2015工業(yè)過程控制系統(tǒng)用變送器第1部分:性能評定方法
- 隱匿性陰莖的診療和治療課件
- 2022屆北京市東城區(qū)高三語文一模語文試卷講評課件
- 先天性腎上腺皮質(zhì)增生癥(CAH)課件
- 水利工程設(shè)計變更表格
- 了不起的狐貍爸爸-全文打印
- 03fusionsphere虛擬化場景概要設(shè)計模板hld
評論
0/150
提交評論