Home > 电话会议新闻动态 > 技术文档 > 基于SIP的嵌入式VOIP终端研究与实现

基于SIP的嵌入式VOIP终端研究与实现

2014/04/29 meeteasy

1、引言

VolP(Voice over Internet Protoco1)技术,是在以 IP(internet Protoco1)为网络层协议的计算机网络中进行语言通信的技术,通常所说的网络电话即为IP电话,也可称作VolP电话。VoIP可分为软件电话和硬件电话,软件电话就是在电脑上下载网络电话软件,购买网络电话卡,通过耳麦和对方手机、固话进行通话。目前网络电话中使用的主流协议 有两种:H.323协议、SIP(Session Initiation Protoco1)协议。H.323协议的技术比较成熟,有助于软件供应商开发出性能稳定的设备,消除不同供应商互操作中出现的问题。SIP被认为是一种轻量级协议,因为它使用的简单文本命令可以被终端设备生成和分析,且只使用6个主要指令管理呼叫控制信息。相对于H.323协议而言,SIP的开发更为简单,拥有丰富的扩展功能,且为下一带网络(NGN) 的核心协议,因此SIP已成大势所趋 。

2、VOIP系统

IP电话主要是依靠因特网来传输数据的,因此各终端要直接或间接连接到网络才能相互通信,个人PC或其他的固定终端可以直接通过网线连接到网络,而移动终端则可以通过WiFi等无线通信技术来与网络相连,当然通话的时候要尽量到信号强的地方去,以达到最佳通话效果。网络中的各个终端 必须到指定的服务器上注册,这样各终端才能识别对方。为了让IP终端能够与传统电话进行通信,因特网要通过代理服务器与公共交换电话网(PSTN)相连,再经过公共交换电话网服务提供商的服务器。因特网中的终端就可以与传统电话进行通信了,系统的总体框架如图1所示。

系统的总体框架

3、终端硬件平台实现

一个典型的移动VOIP终端系统应该能有效的完成语音的编解码,提供必要的存储设备来储存数据,网络接口,还有触摸屏以便用户与用户进行友好交互,如图2所示。

系统的主要框图

系统处理器采用基于ARM9内核架构的芯片, ARM内核芯片采用的是精简指令集,由于其高性能、廉价、低功耗等特点在移动计算领域取得了很大的成功。平台采用的是三星公司针对移动PDA所设计的基于ARM9内核的处理器芯片s3C2440,主频为400MHz,最高可达533MHz,足以满足系统需求。Flash芯片可以使用三星公司的NAND FLASH 芯片,也可以使用东芝、现代的FLASH芯片。移动终端通话过程中的数据是通过网络传输的,所以终端必须要有以太网接口,典型的接口芯片有 DM9000以及RTLS019AS,而后通过RJ一45接口与网络相连。当然为了移动方便可以接上无线网卡芯片,通过WiFi无线接人网络,以达到随时随地通信 的目的。语音信号要经过编码才能在网络中传输,当然也要经过解码才能通过听筒播放出来,编解码芯片采用飞利浦半导体公司的UDA1341音频编解码器,通过它来实现编解码系统。市面上的触摸屏 有很多种品牌,可以从中选出适合自己的型号,接人到系统中。

4、终端软件平台的实现

软件平台的实现主要有三个方面的内容,包括整个系统平台的搭建,PJSIP协议的移植及软终端 的实现,图形用户界面(GUI)设计。通过移植开源的嵌人式linux操作系统,可以减少开支。移植过程包括网卡驱动、声卡驱动、触摸屏驱动等各种驱动程序的移植,幸运的是在下载的linux内核源代码中, 大部分的驱动程序都已经包含在其中,且大多都是 按照一定的模式来移植的,故可节省大量的开发时间。

4.1 系统平台搭建

目前嵌入式产品都采用宿主机/目标机的模式。在宿主机中安装了桌面linux操作系统,如fedora、ubuntu等。然后配置开发必须的服务,包括网络文件系统服务(NFS),简单文本传输协议服务(TFI1P)等。接着就是安装交叉编译器。由于最终设计的程序终是要在目标机上运行的,故不能使用宿主机上的原有编译器对程序进行编译,否则编译出来的程 序将不能在目标机上运行,这时就需要交叉编译器了。目前在网络上有针对arm-linux的交叉编译器可以下载,当然也可以使用特定的制作程序来制作自己的交叉编译器,如crosstool-ng、ptxdist等。制作交叉编译器的时候要注意添加对嵌人式应用二进制接口(EABI)的支持。

4.2 PJSIP移植

PJSIP是实现SIP协议的众多开源协议栈中的一种,代码全部由C语言来实现。由于其支持的平台很多,代码占用空间很小,系统资源使用率低,扩展性强等特点,非常适合在嵌人式系统中应用,且官方网站中提供了大量的开发文档,为开发人员进行开发提供了便利。

首先从PJSIP官方网上下载源码包,并解压出来。进入PJSIP根目录,修改build.mak文件,添加对开发平台的支持:

export MACHINE—NAME:=arm
export OS—NAME:=linux
export CC—NAME:=gcc
export HOST—NAME:=linux
export TARGET—NAME:=arm-linux
export CROSS—COMPILE:=alT/l-linux-

依次设置了目标机的处理器、宿主机的系统、宿主机的编译器、宿主机的名称、目标机的名称以及交 叉编译器。

然后运行命令:./configure-host:aim-linux &&make dep&&make。运行结束后,基于目标平台的嵌入式PJSIP库就建立起来了。

VOIP软终端的实现。实际上PJSIP源代码中提供了实现SIP协议的PJSIP协议栈,以及PJM-DIA媒体栈,用来实现更多功能的VOIP电话。此外它还提供了一套供多媒体用户代理程序调用的更高层次的应用程序接口(PJSUA API),这种接口把各种信号和多媒体功能结合起来,可以更容易调用, 同时提供了SIP账户管理、好友管理、在线提示、即时信息等功能。使用这套API来开发嵌入式VOIP电话,编写过程中把必须的头文件和库文件路径添加到相应的搜索路径中。程序的主流程图如图3所示。

程序的主流程图

4.3 图形用户界面设计

Qt是一个跨平台的C++图形用户界面开发软件,使用Qt开发的软件可以在任何支持的平台上编译、执行,在这过程中不需要修改源代码。Qt的授权模式分为商业版和开源版,使用商业版开发的软件的源代码是不共享的,而开源版的程序必需遵循GPL协议,总的来说就是使用静态链接的代码必需开源,而动态链接的代码则可以不开源 。使用Qt开发软件,必需要深入理解信号与槽机制(signal&slot),这种机制提供了任意两个Qt对象之间的通信机制。其中信号是在某种变化的情况或动作下产生,而槽就是接收并处理各种信号的函数。 信号和槽机制的常见连接方式为:

QObject::connect(Objectl,SIGNAL(signa1), Object2,SLOT(slot))

实现的VOIP电话用户界面主要有三个选项页面,其中第一个页面是拨号页面,实现数字拨号及接听电话等功能。第二个页面是高级选项页面,提供麦克风及扬声器音量调节功能。最后一个页面实现的是对电话终端的运行进行监控。

5、结束语

讨论嵌入式VOIP终端的实现方法,包括硬件平台的实现以及软终端的设计。对实现SIP的PJ-SIP协议栈进行了深入描述。为了使终端与用户能够进行友好交互,设计了图形用户界面。经过测试, 终端通信的SIP信令符合RFC3261标准,达到预定要求。故协议栈的移植及软终端的设计是成功的, 这为深人理解嵌人式IP语音通信、即时信息的实现以及进行视频通信奠定了基础。

IP电话, PJSIP协议, SIP协议

如没特殊注明,文章均为好会通科技原创,转载请注明来自 http://www.meeteasy.com.cn/archives/2835.htm.


copyright 2004-2013     粤ICP备12061155号-1

Sitemap|XML|RSS|隐私政策|EN|