【摘要】伴隨VOIP技術(shù)的成熟,越來越多的人們通過互聯(lián)網(wǎng)實(shí)現(xiàn)了即時通信。本文研究設(shè)計(jì)了一個基于ARM9硬件平臺的VOIP語音終端。其中介紹了VOIP語音終端的硬件設(shè)計(jì)和軟件設(shè)計(jì),包括SIP協(xié)議棧、語音編解碼庫的移植方法和應(yīng)用程序的開發(fā)。
【關(guān)鍵詞】ARM9;VOIP;語音終端
Abstract:With the VOIPtechnology matures,more and morepeople achievethereal-time communicationthrough the Internet. In this paper,the designof theVOIPvoice terminalisbased onARM9. Thearticle introducesthehardware design and softwaredesign of the terminal,includingtransplanting methods of theSIPprotocol stack together withvoice codeclibraryand application development.
Keywords:ARM9;VOIP;Voice terminal
1.VOIP概述
VoIP(Voice over Internet Protocol)是一種以IP電話為主,并推出相應(yīng)的增值業(yè)務(wù)的技術(shù),它就是將模擬信號(Voice)數(shù)字化,以數(shù)據(jù)封包(Data Packet)的形式在IP網(wǎng)絡(luò)(IP Network)上做實(shí)時傳遞[1]。
VoIP的基本原理:通過語音的壓縮算法對語音數(shù)據(jù)編碼進(jìn)行壓縮處理,然后把這些語音數(shù)據(jù)按TCP/IP標(biāo)準(zhǔn)進(jìn)行打包,經(jīng)過IP網(wǎng)絡(luò)把數(shù)據(jù)包送至接收地,再把這些語音數(shù)據(jù)包串起來,經(jīng)過解壓處理后,恢復(fù)成原來的語音信號,從而達(dá)到由互聯(lián)網(wǎng)傳送語音的目的。
2.SIP協(xié)議說明
SIP(Session Initiation Protocol)是一個應(yīng)用層的信令控制協(xié)議。用于創(chuàng)建、修改和釋放一個或多個參與者的會話[2]。這些會話可以是Internet多媒體會議、IP電話或多媒體分發(fā)。會話的參與者可以通過組播(multicast)、網(wǎng)狀單播(unicast)或兩者的混合體進(jìn)行通信。
SIP 會話使用多達(dá)四個主要組件:SIP用戶代理、SIP注冊服務(wù)器、SIP代理服務(wù)器和SIP重定向服務(wù)器。這些系統(tǒng)通過傳輸包括了SDP協(xié)議(用于定義消息的內(nèi)容和特點(diǎn))的消息來完成 SIP 會話。下面概括性地介紹各個 SIP 組件及其在此過程中的作用。
1)用戶代理
SIP 用戶代理(UA) 是終端用戶設(shè)備,如用于創(chuàng)建和管理SIP會話的移動電話、多媒體手持設(shè)備、PC、PDA等。用戶代理客戶機(jī)發(fā)出消息。用戶代理服務(wù)器對消息進(jìn)行響應(yīng)。
2)注冊服務(wù)器
SIP 注冊服務(wù)器是包含域中所有用戶代理的位置的數(shù)據(jù)庫。在SIP通信中,這些服務(wù)器會檢索出對方的IP地址和其他相關(guān)信息,并將其發(fā)送到SIP代理服務(wù)器。
3)代理服務(wù)器
SIP代理服務(wù)器接受SIP UA的會話請求并查詢SIP注冊服務(wù)器,獲取收件方UA的地址信息。然后,它將會話邀請信息直接轉(zhuǎn)發(fā)給收件方UA(如果它位于同一域中)或代理服務(wù)器(如果UA位于另一域中)。
4)重定向服務(wù)器
SIP 重定向服務(wù)器允許SIP代理服務(wù)器將SIP會話邀請信息定向到外部域。SIP重定向服務(wù)器可以與SIP注冊服務(wù)器和SIP代理服務(wù)器同在一個硬件上。
3.VOIP語音終端的硬件設(shè)計(jì)
VOIP語音終端硬件原理圖如圖1所示。其語音收發(fā)過程:首先接收模擬語音信號,然后進(jìn)行A/D轉(zhuǎn)換、語音壓縮編碼,最后經(jīng)過打包封裝后傳輸?shù)骄W(wǎng)絡(luò)上;在接收端,VOIP語音終端接收網(wǎng)絡(luò)上傳輸來的數(shù)據(jù)包,經(jīng)過解封裝、語音解壓縮解碼和轉(zhuǎn)換后,將模擬語音信號提供給用戶。
從圖中可以看出,VOIP語音終端主要由以下幾部分組成。
1)CPU:這里選用Samsung公司的S3C2410微處理芯片作為終端的CPU,該芯片是專門為網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)的處理器,是一款由Samsung為手持設(shè)備設(shè)計(jì)的低功耗、高度集成的32位RISC處理器。它的顯著特性是它是一個32位ARM920T RISC處理器,實(shí)現(xiàn)了MMU,AMBABUS和Harvard高速緩沖體系結(jié)構(gòu)。通過提供一系列完整的系統(tǒng)外圍設(shè)備,S3C2410大大減少了整個系統(tǒng)的成本,消除了為系統(tǒng)配置額外器件的需要。另外,它的工作頻率最高達(dá)到203MHz,使得處理器輕松運(yùn)行于Windows CE,Linux等操作系統(tǒng)以及進(jìn)行較為復(fù)雜的信息處理。
圖1 VOIP語音終端原理框圖
圖2 VOIP應(yīng)用層軟件流程圖
2)語音編解碼模塊:本文所設(shè)計(jì)的VOIP語音終端支持G.711、G.723.1、G.729和CVSD等多種編解碼格式,我們選用美國MX.COM.INC公司的CMX639芯片完成CVSD編碼, 其他編碼利用TI公司的TMS320VC5502實(shí)現(xiàn)。其中,TMS320VC- 5502是編解碼模塊的主控,所有編解碼的數(shù)據(jù)必須經(jīng)過TMS320VC5502。這么做的好處是可以節(jié)約S3C2410的接口資源。
3)CODEC模塊:該模塊的主要功能是完成話音數(shù)據(jù)的A/D和D/A轉(zhuǎn)換,我們選擇了ANALOG DEVICES公司的AD73311芯片完成CODEC功能,它同TMS320VC5502交互的是64Kbps的PCM數(shù)據(jù)。另外,CMX639的輸人輸出必須是模擬信號,因此我們利用S3C2410控制一個繼電器或模擬開關(guān)來實(shí)現(xiàn)模擬音頻信號的分路。
4.VOIP語音終端的軟件設(shè)計(jì)
在已經(jīng)配置好的硬件基礎(chǔ)上,就需要定制平臺和編寫代碼實(shí)現(xiàn)各個功能模塊,最終實(shí)現(xiàn)整個終端系統(tǒng)。軟件設(shè)計(jì)主要包括三部分工作:操作系統(tǒng)的選擇與移植、SIP協(xié)議棧實(shí)現(xiàn)和語音編解碼庫的實(shí)現(xiàn)和應(yīng)用程序的設(shè)計(jì)。
4.1 操作系統(tǒng)的選擇與移植
1)選擇Linux作為底層操作系統(tǒng)。
2)本系統(tǒng)的開發(fā)環(huán)境為:操作系統(tǒng):Centos7;目標(biāo)板:ARM9開發(fā)板;編輯器:vi編輯器;編譯器:arm-linux-gcc 3.4.1;編程語言:C語言。
4.2 SIP協(xié)議棧實(shí)現(xiàn)
選擇開源SIP協(xié)議棧 Osip2/eXosip作為方案的SIP協(xié)議棧來完成應(yīng)用程序的開發(fā),同時按eXosip的推薦采用oRTP協(xié)議棧來實(shí)現(xiàn)實(shí)時傳輸協(xié)議RTP。Osip2/eXosip和oRTP協(xié)議棧都是用標(biāo)準(zhǔn)c實(shí)現(xiàn)的協(xié)議棧,但其默認(rèn)運(yùn)行環(huán)境為PC上的Linux,要把它運(yùn)用到方案的嵌入式環(huán)境中,就需要對其進(jìn)行編譯移植工作。
主要的編譯步驟如下:
①建立安裝樹,并設(shè)定路徑。
Mkdir /armbuild
ExportARM_INSTALL_TREE=/armbuild
②編譯Osip2。
./configure-prefix=/usr-host=arm-linux-with-gnu-ld-disable-static
make
make install DESTDIR=$ARM_INSTALL_TREE
③編譯eXosip。
./configure-prefix=/usr-host=arm-linux-with–gnu-ld-disable-static-disable-glib-with-osip=$ARM_INSTALL_TREE/usr
make
make install DESTDIR=$ARM_INSTALL_TREE
④編譯oRTP。
./configure-prefix=/usr-host=arm-linux-with-gnu-ld-disable-static
make
make install DESTDIR=$ARM_INSTALL_TREE
⑤最后將安裝樹目錄內(nèi)生成的庫文件放到目標(biāo)板根文件系統(tǒng)RAMDISK內(nèi)的/usr目錄下。
4.3 語音編解碼庫的實(shí)現(xiàn)
對于語音編解碼庫,我們選用開源的語音編解碼算法 SPEEX。同樣,對其調(diào)用的方法,先將其用交叉編譯器編譯為ARM平臺的庫文件,然后下載到目標(biāo)板中,應(yīng)用程序通過庫文件對其進(jìn)行調(diào)用。
交叉編譯步驟為:
./configure -prefix=/usr-host=arm -linux-with-gun-ld-disable-static-enable-fixed-point -enable-arm-asm
make
make install DESTDIR=$ARM INSTALL_TREE
4.4 應(yīng)用程序的設(shè)計(jì)
對于應(yīng)用程序部分的開發(fā),我們主要是調(diào)用Osip2/eXosip協(xié)議庫的API接口函數(shù),來完成VOIP語音終端的呼叫過程。主要使用的API有:
1)eXosip_answer_call():建立通話,如拒絕通話或超過一分鐘無確認(rèn),則中止呼叫。
2)eXosip_build_initial_invite():進(jìn)行呼叫。
3)eXosip_initiate_call():進(jìn)行通話。
4)eXosip_terminate_call():中止呼叫。
軟件流程見圖2所示。
程序在PC上編寫完后,用交叉編譯器編譯成ARM平臺的可執(zhí)行文件,再下載到目標(biāo)板上運(yùn)行。
5.結(jié)論
隨著VOIP技術(shù)的飛速發(fā)展,人們對互聯(lián)網(wǎng)免費(fèi)的語音業(yè)務(wù)的使用越來越多。本文研究設(shè)計(jì)了一種以AMR9為平臺的VOIP語音終端的方法。該設(shè)計(jì)中涉及的SIP協(xié)議和語音編解碼庫文件開源代碼種類多,ARM嵌入式硬件平臺成熟,設(shè)計(jì)使用時靈活可靠,大大節(jié)約系統(tǒng)資源,具有很大市場潛力。
參考文獻(xiàn)
[1]張輝,韓佩富等.VOIP在嵌入式終端中的實(shí)現(xiàn)[J].通信電子技術(shù),2012.
[2]徐山峰,謝佳.基于SIP協(xié)議的VoIP會議系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(7).
[3]張小恒.極低速率VOIP 語音終端設(shè)計(jì)[J].電子制作,2014(5).
[4]沈鑫剡.多媒體傳輸網(wǎng)絡(luò)與VoIP 系統(tǒng)設(shè)計(jì)[M].人民郵電出版社,2005.
[5]韋東山.嵌入式linuxl應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社,2008.
[6]Rosenberg J,sehulzrinne H,Camarillo G,et a1.SIP:sessionlnitiationProtocol[S].RFC3261,2002.
作者簡介:謝于晨(1983—),女,碩士,現(xiàn)供職于江西科技學(xué)院,主要研究方向:嵌入式開發(fā),移動通信等。