當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Blackfin 533的SIP網(wǎng)絡(luò)電話

引 言

    近年來,Internet得到了飛速發(fā)展與普及,而作為其核心技術(shù)的IP協(xié)議體系在數(shù)據(jù)網(wǎng)絡(luò)架構(gòu)中的統(tǒng)治地位已得到了廣泛認同。另外,隨著IP技術(shù)框架中匯聚網(wǎng)絡(luò)研究的發(fā)展和VoIP(Voice over Internet Protoc01)技術(shù)的提出,數(shù)據(jù)網(wǎng)絡(luò)通信已經(jīng)融入傳統(tǒng)的話音業(yè)務(wù)領(lǐng)域,而且VoIP與生俱來的Internet血統(tǒng)使得其在應(yīng)用方面有著很強的拓展性,因此,VoIP技術(shù)和應(yīng)用的研究成為了當今的熱點問題。各大芯片廠商相繼推出了VoIP方案,比如ADI公司的Blackfin系列等。協(xié)議方面的研究也取得了豐碩的成果,其中SIP(Session Initiation Protoc01)協(xié)議憑借相對簡單的實現(xiàn)模式和極強的擴展性受到了越來越多
的關(guān)注。ADI公司推出的Blackfin處理器是一類專為滿足當今嵌入式音頻、視頻和通信應(yīng)用的計算要求和功耗約束條件而設(shè)計的新型16/32位嵌入式處理器。該處理器基于ADI和Intel公司聯(lián)合開發(fā)的微信號架構(gòu)(MSA),擁有類RISC型指令集、雙16位乘法器、雙40位邏輯運算單元(ALU)、40位桶形移位器和4個視頻運算單元(videoALUs),將信號處理功能和通用型微控制器所具有的易用性組合在了一起。這種處理特征的組合使得Blackfin處理器能夠在信號處理和控制處理應(yīng)用中均有較好的表現(xiàn);與此同時,該能力也簡化了硬件和軟件方面的設(shè)計。SIP類似于HTTP協(xié)議,也是一個基于文本的協(xié)議,因而易于讀取和調(diào)試。與此同時,SIP協(xié)議在制訂時就考慮到了擴充性的問題,通過增加新的消息類型、消息頭和消息體即可實現(xiàn)新服務(wù)。即使不能支持基于SIP的舊設(shè)備也不會妨礙這些新服務(wù)。另外,SIP的一個重要特點是,它不定義要建立的會話的類型,而只定義應(yīng)該如何管理會話。有了這種靈活性,也就意味著SIP可以用于眾多應(yīng)用和服務(wù)中。本文介紹了一種基于Blackfin處理器平臺的網(wǎng)絡(luò)電話方案??紤]未來應(yīng)用的拓展需要和網(wǎng)絡(luò)電話的特點,選擇了Blackfin 533處理器和基于SIP的VoIP協(xié)議棧,實現(xiàn)了一系列的通話功能。

1 系統(tǒng)方案

    鑒于Linux強大的網(wǎng)絡(luò)功能,結(jié)合Blackfin的硬件特點,采用μClinux作為操作系統(tǒng);同時面向控制的操作系統(tǒng)、圖形化的人機界面以及復(fù)雜的網(wǎng)絡(luò)協(xié)議棧,增加了對MCU的要求,語音處理又需要高效的DSP算法,因此選用Blackfin 533作為核心處理器。系統(tǒng)框圖如圖1所示。

    外圍硬件主要有ADl836、DM9000、LCD顯示屏和5×5鍵盤輸入設(shè)備。

    軟件方面采用分層設(shè)計:

    ① 底層是驅(qū)動層。完成硬件的配置和相關(guān)操作,并為上層提供硬件訪問接口。
     ② 中間層是應(yīng)用程序庫。完成上層應(yīng)用所需的各種基本操作,并為上層提供豐富的API接口。SIP/SDPRTP/RTCP結(jié)合TCP/IP完成SIP信令交互、會話管理,以及控制實時語音數(shù)據(jù)的傳輸;Codec完成語音編解碼工作,目前支持PCMU、PCMA、GSM、Speex編碼;GUI庫提供具體的圖形顯示功能。

    ③ 上層是應(yīng)用層。利用底層和中間層提供的接口,構(gòu)建出話機終端具體應(yīng)用。終端支持P2P和Proxy兩種通信模式,可以實現(xiàn)接聽、掛機、呼叫保持/恢復(fù)、呼叫轉(zhuǎn)接、電話會議、音量調(diào)節(jié)、自動注冊等功能。

2 硬件方案
    Blackfin 533為核心處理器芯片。外圍輔以ADl836實現(xiàn)語音信號的采集和播放;DM9000實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的收發(fā);TFT LCD顯示屏和鍵盤實現(xiàn)圖形界面顯示以及人機交互。硬件框圖如圖2所示。

3 軟件方案
    在詳細分析功能需求的基礎(chǔ)上,采用并行的程序設(shè)計思想,將整個應(yīng)用劃分為4部分,分別由4個線程來完成,如圖3所示。

    ① UI(User Interface)控制線程。負責響應(yīng)用戶的鍵盤輸入和屏幕顯示的刷新以及傳遞消息給協(xié)議棧。

    ② Codec語音 線程。完成語音數(shù)據(jù)的處理,主要包括:本地語音的采集和編碼,網(wǎng)絡(luò)語音數(shù)據(jù)的解碼、混音和播放等。

    ③ SIP信令交互線程。使用Socket套接字實現(xiàn)SIP數(shù)據(jù)報收發(fā),并將解析后的消息提供給用戶或直接作出相應(yīng)的反應(yīng)。

    ④ RTP/RTCP收發(fā)線程。使用Socket套接字完成RTP/RTCP數(shù)據(jù)包收發(fā)。RTP傳送語音數(shù)據(jù),RTCP可以提供數(shù)據(jù)分發(fā)、質(zhì)量反饋等相關(guān)信息。

    在整個應(yīng)用初始化時,會建立Sound Device Port和Conference Bridge兩個數(shù)據(jù)結(jié)構(gòu)。前者代表本地的聲音設(shè)備,后者控制著媒體數(shù)據(jù)在不同Port之間的傳送。Port結(jié)構(gòu)體代表著會話參與者,比如sound Device Port代表本地用戶,Media Stream Port代表遠端參與者。當UI控制線程探測到有外撥電話時,它會傳遞一個消息給SIP信令交互線程。隨后一個Media Transpor實體被創(chuàng)建出來(媒體流傳輸使用的是UDP)。該實體中的地址和端口號信息將被添加到本地SDP結(jié)構(gòu)中,用于Invite會話的協(xié)
商過程。當用于本次通話的Offer或Answer會話確立之后(即協(xié)商已經(jīng)完成,雙方確定了通信的類型),根據(jù)通話雙方的SDP信息,就創(chuàng)建出來一個Media Session Info結(jié)構(gòu)。接著SIP信令交互線程會創(chuàng)建一個Media Session(多媒體會話)結(jié)構(gòu)。在這一過程中,按照在Me dia sessionInfo數(shù)據(jù)結(jié)構(gòu)中的codec等設(shè)置信息,Media Stream被創(chuàng)建出來。與此同時,Media Stream和先前創(chuàng)建的MediaTransport也被連接到了一起。該Media Stream對象將以Port的形式注冊到Conference Bridge。接著在Confer—ence Bridge中注冊的Media Stream Port會根據(jù)需要被連接到其他Port,從而實現(xiàn)語音數(shù)據(jù)的傳送。比如,將一個Media Stream Port和Sound Device Port相連,就可以實現(xiàn)語音的播放和采集。

    RTP/RTCP數(shù)據(jù)包的接收并不包含在以上介紹的流程之中,而是由RTP/RTCP收發(fā)線程來負責的。這是通過將RTP和RTCP的Sockets注冊到一個IOQueue隊列中,然后通過select()來完成的。首先,Media Transport會將其Socket注冊到一個在初始化過程中創(chuàng)建的I0Queue上。RTP/RTCP收發(fā)線程會輪詢這個IOQueue,當一個RTP數(shù)據(jù)報被檢測到之后,輪詢函數(shù)會觸發(fā)on_rx_rtp()函數(shù)調(diào)用。這個回調(diào)函數(shù)是在一開始Socket注冊的時候被Media Transport一同注冊到了IOQueue上的。接著on_rx_rtp()會將收到的RTP數(shù)據(jù)包傳遞給Mediastream Port。Media Stream會將收到的RTP解包,更新相關(guān)統(tǒng)計數(shù)據(jù),并將負載中的音頻數(shù)據(jù)放到Jitter Buffer中。RTP包的接收到這里就結(jié)束了,放到Jitter Buffer中的數(shù)據(jù)會被Codec語音線程處理。RTCP的接收過程與此類似,只不過RTCP并不傳輸語音,而是提供語音傳輸方面的信息。根據(jù)這些信息,應(yīng)用可以對會話作出動態(tài)調(diào)整,從而提高通話的質(zhì)量。

    整個音頻流都是由Codec語音線程來驅(qū)動的,具體來說是聲卡的回調(diào)函數(shù)。

    當聲卡設(shè)備需要新的一幀數(shù)據(jù)播放到揚聲器時,回調(diào)函數(shù)play_cb()就會被調(diào)用。接著Sound Device Port就會調(diào)用get_frame()函數(shù),這會觸發(fā)Conference Bridge調(diào)用另外的get_frame()去收集在其注冊的所有Port的媒體流數(shù)據(jù)。Conference Bridge對Media Stream Port的一次get_frame()調(diào)用,會使得Media Stream Port從JitterBuffer中取出一個數(shù)據(jù)幀,按照配置好的Codec將其解碼(如果有包丟失,就會進行Packet Lost Concealment/PLC),并將解碼后的PCM數(shù)據(jù)幀傳遞給調(diào)用者。如果有必要,會將收集到的信號混合(比如多方通話),然后再將信號發(fā)送到它的目的Port,從而完成音頻數(shù)據(jù)在Port之間的傳遞(不單單是播放流程,這個過程對聲音的采集也是很重要的,因為只有這個過程可以完成數(shù)據(jù)在Port之間的交換)。之后,Conference Bridge會把聲卡設(shè)備需要的數(shù)據(jù)發(fā)送到Sound Device Port。

    當聲卡設(shè)備完成了一幀數(shù)據(jù)的采集后,它就會調(diào)用rec_cb()回調(diào)函數(shù)。這將會導(dǎo)致Conference Bridge的put_frame()函數(shù)調(diào)用。put_frame()函數(shù)調(diào)用會將PCM數(shù)據(jù)幀保存在一個內(nèi)部的緩沖隊列中,當下次ConferenceBridge輪詢Port時,這些數(shù)據(jù)將會被傳遞給目的Port。該Media Stream Port會將這個PCM數(shù)據(jù)幀按照配置好的codec進行編碼,然后將其封裝為RTP數(shù)據(jù)報,更新RTCP,然后將RTP/RTCP數(shù)據(jù)報傳遞給與其相連的Media Transport,最后Media Transport就會將數(shù)據(jù)報發(fā)送到網(wǎng)絡(luò)。數(shù)據(jù)流框圖如圖4所示。

4 功能測試
 4.1 測試環(huán)境

    為了驗證這部網(wǎng)絡(luò)電話的功能,我們搭建了一個實驗環(huán)境。這個實驗環(huán)境包括:

    ① 一臺單獨的主機運行SER(SIP Express Router),來實現(xiàn)服務(wù)器的功能,包括注冊服務(wù)器、重定向服務(wù)器和代理服務(wù)器等SIP邏輯上的實體;

    ② 運行X—Lite的主機,用來作為遠端客戶機,和網(wǎng)絡(luò)電話處于對等的狀態(tài),用來進行呼叫、接受呼叫等功能性實驗;

    ③ Blackfin網(wǎng)絡(luò)電話,以下簡稱為“BF533網(wǎng)絡(luò)電話”。

    它們都以以太網(wǎng)的方式接入同一個局域網(wǎng)中。實驗環(huán)境的示意圖如圖5所示。Ethereal是本次實驗中用到的監(jiān)聽工具。

4.2 界面簡介
    用戶界面如圖6所示。

    靠近顯示區(qū)的頂端是音量顯示區(qū)。小圖標指明了顯示音量的種類;音量顯示采用遞增柱體,分為6級。緊挨著音量顯示區(qū)的是狀態(tài)顯示區(qū)。這部分包括Server狀態(tài)信息顯示區(qū)、Call狀態(tài)信息顯示區(qū)、當前通話狀態(tài)信息顯示區(qū)和號碼輸入顯示區(qū)。底部是菜單顯示區(qū)。從左到右分別為:選擇上一通話、選擇下一通話、呼叫轉(zhuǎn)接、呼叫保持、增大麥克音量、減小麥克音量、增大揚聲器音量、減小揚聲器音量、電話會議。

4.3 功能測試
    (1)注冊

    注冊過程如圖7所示。BF533網(wǎng)絡(luò)電話和SER服務(wù)器共交換了兩條消息:一條是目標系統(tǒng)向服務(wù)器發(fā)送的REGISTER請求消息,另一條是服務(wù)器發(fā)送的200 OK消息。

    (2) 呼叫過程

    呼叫過程如圖8所示。BF533網(wǎng)絡(luò)電話(BP)先是向SER服務(wù)器發(fā)送了一條INⅥTE消息(M1),要求與遠端客戶機(RC)進行對話。SER馬上回復(fù)一條100 Trying消息(M2)表示正在嘗試連接。然后SER將INⅥTE消息加入相關(guān)的Record—Route和Via頭部域以后成為消息M3,發(fā)送給RC。RC回復(fù)一個100 Trying消息(M4)給SER,然后再發(fā)送180Ringing(M5)給SER,表示正在響鈴中。SER將M5中它的Via和Record—R0ute頭部域去掉以后,成為消息M6發(fā)送給BP。在RC接受本次呼叫以后,它發(fā)送一個200 OK(M7)給SER。SER去掉Via以后,發(fā)送M8給BP。收到M8以后,BP發(fā)送ACK(M9)給RC。之后,雙方之間的通話就建立了起來。當會話結(jié)束時,BP發(fā)送BYE(M11)給RC,之后,RC返回200 OK(M14),這次通話就結(jié)束了。(被叫過程和呼叫過程相似。)

    (3)呼叫轉(zhuǎn)接

    該過程是通過擴展的SIP信令REFER來完成的,交互過程如圖9所示。當BF533網(wǎng)絡(luò)電話要將它和遠端客戶機1(RCl)的通話轉(zhuǎn)接到遠端客戶機2(RC2)時,BF發(fā)送REFER(M1)給RCl,該信息中Refer—To字頭標明了RC2的URL,之后RCl回復(fù)202 Accepted(M2)給BP表明接受轉(zhuǎn)接。隨后,RCl和RC2之間會有類似于通話建立過程的信令交互INVITE(M3),100 Trying(M4),180Ringing(M7)、200 OK(M10),RCl會通過NOTIFY將轉(zhuǎn)接狀態(tài)告知BP,最后RCl回復(fù)ACK(M13)給RC2建立通話,同時其與BP的通話就斷開了。

    (4)呼叫保持/恢復(fù)

    呼叫保持并沒有專門的信令,而是將INVITE信令體SDP中的Connection Information(c)參數(shù)設(shè)為空(即(IPV4)0.O.O.0)來實現(xiàn)的。 BF533網(wǎng)絡(luò)電話遠端客戶機遠端各尸機回復(fù)200 0K接受保持,如圖10所示。同理,呼叫恢復(fù)就是將c參數(shù)恢復(fù)原值,過程與呼叫保持相同。

    (5)電話會議

    會議功能是在Blackfin 533上實現(xiàn)的,將不同Port的語音數(shù)據(jù)混合并發(fā)送給目的Port,即可讓參與者聽到多方的聲音。通過測試,各項功能均已實現(xiàn),而且通話質(zhì)量良好。

結(jié) 語

    本文提出并實現(xiàn)了一種基于Blackfin的SIP網(wǎng)絡(luò)電話解決方案,介紹了整個系統(tǒng)的構(gòu)成,包括硬件方案和軟件方案,并展示了相關(guān)的功能。由于采用層次化設(shè)計,并提供了豐富的API接口,因此該方案有較強的可拓展性。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉