当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于oSIP的嵌入式SIP终端的研究与实现

摘要:分析了开源SIP协议栈oSIP的运行机制。在oSIP基础上,设计实现了一个基于S3C2410A微处理器平台,使用WinCE操作系统的嵌入式SIP终端
关键词:SIP协议;SIP用户代理;oSIP;嵌入式系统;ARM

1、  引言

目前,IETF的SIP协议(Session Initiate Protocol, 会话初始协议)已获得业界越来越多的关注和支持,正逐步成为下一代网络(NGN)中的核心协议之一[1]。SIP协议相对简单、易于实现、可扩展性强、更适合IP网络,被广泛的用于VoIP系统的组建[2]。oSIP及其扩展eXosip作为开源的SIP协议栈,以其结构简单、功能丰富、易于移植等优点成为在嵌入式系统上构建VoIP应用的首选。本文分析了oSIP协议栈的运行机制,设计实现了将oSIP协议栈移植到嵌入式操作系统并以此为基础开发嵌入式SIP客户端的方案。

2、  oSIP协议栈

2.1 SIP协议

SIP协议是一个用于建立、更改和终止多媒体会话的应用层协议。现在的协议文本是IETF于2002年7月发表的RFC3261。SIP分别从用户定位、用户状态查询、用户能力查询、会话建立、会话管理五个方面实现对多媒体通信的控制。作为一种信令控制协议,它需要和IETF的其它协议如SDP、RTP、RTSP和SAP等协同工作。SIP会话中的媒体交换可以使用任何传输协议,但工程上一般都以RTP(Real-time Transmit Protocol,实时传输协议)作为传输协议。

SIP采用C/S模式的工作方式,包含两类元素:SIP用户代理(User Agent, UA)和SIP服务器。根据用户代理在会话中扮演的角色不同又可分为用户代理客户机(User Agent Client, UAC)和用户代理服务器(User Agent Server, UAS),前者发起呼叫请求,后者响应呼叫请求。

2.2 oSIP协议栈

oSIP是遵循IETF标准,使用ANSI C编写,源代码开放的SIP协议栈。oSIP主要有下列优点:

(1)结构小巧简单,只有400K左右,适合在嵌入式系统上应用;

(2)可移植性好,已被成功的应用于Solaris、HP Unix、VxWorks、Windows和GNU/Linux[3] (2.2.16和2.4.7)等系统中;

(3)工作稳定、兼容性强。

oSIP主要由解析模块、工具模块和状态机模块构成,其核心是状态机模块[4](如图1所示)。

图1 oSIP结构

解析模块完成对SIP请求和响应进行封装与解析处理。解析模块又可分为SIP解析、SDP解析与URL解析。

工具模块主要提供一些处理工具用于对话管理和SDP协商。

状态机模块负责对某个事务(如注册过程、呼叫过程等)状态的维持及处理,并在特定的状态下触发响应的事件或回调函数。根据RFC描述中关于SIP协议事务层的定义,oSIP

协议栈有4种状态机:客户端邀请事务(ICT),客户端非邀请事务(NICT),服务器端要求事务(IST),服务器端非邀请事务(NIST)。前两种状态机是由客户端发起的,后两种状态机是由服务器发起的,这4种状态机涵盖了SIP的各种事务类型。其中ICT(如图2所示)是SIP客户端中最常见的事务。

图2 ICT状态机状态转换图

图2中,cb_ict_xxx_xxx表示oSIP中ICT状态机回调函数,当ICT从一种状态到另一种状态时oSIP协议栈将调用此函数。

oSIP专注于SIP底层解析,这使得它具有很高的效率。但另一方面,由于没有提供高层的SIP会话控制API,使得上层应用在调用协议栈时很破碎,降低了易用性。为此oSIP的开发者们又在oSIP的基础上开发了eXosip。eXosip是oSIP的扩展,它部分封装了oSIP协议栈,使得它更容易被使用。eXosip实现了作为单个SIP终端的大部分功能。

3、  嵌入式SIP终端系统体系结构

3.1 嵌入式SIP终端的功能

嵌入式SIP终端是一个运行在嵌入式操作系统上的SIP用户代理,主要包括SIP电话的注册、呼叫、接听、挂断等功能。它直接与用户交互,接收输入信息,进行格式检查,根据用户的动作初始化SIP消息,同时得到本地语音媒体接口信息,形成SDP描述,完成UDP或TCP封装。

3.2 系统软硬件平台的选择

为选择合适的软硬件平台,我们收集了大量相关资料,经过反复比较并结合现有实验条件做出了如下选择:

(1)嵌入式处理器种类繁多,我们选择了三星的S3C2410A微处理器。该处理器基于ARM920T内核,主频最高为203MHz。是一款高性价比、低功耗、高集成度的CPU,专为手持设备和网络应用设计,能满足嵌入式系统低功耗、高性能、小体积的要求。同时,S3C2410系列处理器已得到广泛使用,技术资料丰富,这也是采用S3C2410平台进行开发的有利条件。此外,我们还选用了带有的触摸屏的SHARP L35T23 3.5”液晶显示器作为系统输入/输出设备。

(2)嵌入式操作系统方面,考虑到GUI界面开发的难易程度,我们选择了Microsoft的Windows CE.NET 4.2。WinCE 4.2版本在内核、实时性和网络支持等方面做了很大的优化和增强,同时还为基于WinCE的嵌入式系统的开发提供了强大的工具——Platform Builder 4.2(PB 4.2)。这些特性有助于我们快速开发嵌入式系统。

(3)在开发工具的选择上,我们选用了与Windows CE.NET 4.2同时推出的Microsoft Embedded Visual C++ 4.0(eVC 4.0)。这个开发环境和VC6.0十分类似,易于掌握,同时还包含有许多WinCE专用的标准开发工具和远程调试工具。

3.3 系统体系结构

我们设计的嵌入式SIP终端系统总体结构如图3所示:

图3 嵌入式SIP终端系统体系结构

整个系统分为3个层次:

(1)系统平台层:包括硬件平台及运行在其上的嵌入式操作系统,这是整个系统的基础。

(2)协议栈层:运行SIP协议栈,为用户程序提供调用。RTP模块我们采用了开源的jrtplib。jrtplib采用C++编写,可以方便的移植到WinCE系统上。移植jrtplib到嵌入式操作系统不是本文的重点,具体做法在此不再赘述。

(3)用户程序层:负责接收用户的输入,根据用户请求类型调用协议栈层功能,同时实现oSIP的回调函数,并将结果反馈给用户。

4、  嵌入式SIP终端的实现

4.1 系统平台层实现

本系统开发使用的硬件设备都直接向设备供应商购买,但由于嵌入式系统是软硬件高度结合的系统,还需要根据硬件条件定制一个WinCE平台。在PB中可以定制出满足各种不同需求的CE系统。我们使用设备供应商提供的BSP,利用PB平台创建向导新建了一个WinCE映象文件并将其下载到开发板中固化。

4.2 协议栈层的实现

oSIP协议栈在设计之初就考虑到了满足嵌入式操作系统的的特定要求,这使得只需做很少量的修改(主要是需要加入一些针对WinCE的头文件)就能将oSIP移植到WinCE系统中。

另外,WinCE的API中没有time()函数的实现,我们需要自己实现这个函数,代码如下:

#ifdef _WIN32_WCE

SYSTEMTIME t;

#endif

……

#ifdef _WIN32_WCE

  GetSystemTime(&t);

  now = (int)((t.wYear-1970)*365*24*3600+t.wMonth*30*24*3600+t.wDay*24*3600+t.wHour*3600+ t.wMinute *60+t.wSecond);

#else

  now = time(NULL);

#endif

完成必要的修改后,重新编译就可以得到能在WinCE系统上使用动态链接库。

4.3 用户程序层的实现

在系统启动过程中,用户程序首先根据用户配置对系统全局变量进行赋值操作,然后向oSIP协议栈注册回调函数,并启动数据包监听线程。一旦接受到数据包,则调用协议栈功能生成相应事件并判断该事件的处理事务是否存在,若存在则将事件放入该事务中,否则生成新的事务,启动事务执行线程。同时根据用户动作生成相应事件交由协议栈处理。

oSIP通过状态机回调函数与用户程序通信,向用户程序通告事件的发生及事务状态。用户程序调用oSIP协议栈API发起oSIP动作(添加事件,事件处理等)。

5、  结束语

本文提出了一个基于ARM9核心的处理器平台,以oSIP协议栈为基础的嵌入式SIP终端设计方案,并就嵌入式系统平台搭建、协议栈移植、SIP用户代理的实现等问题进行了讨论。测试结果表明,根据该方案实现的嵌入式SIP终端系统能实现预想的功能和性能。有理由相信,随着SIP协议的广泛应用和嵌入式技术的不断发展,嵌入式SIP终端将具有美好的前景。

本文作者创新点:本文讨论并实现了oSIP协议栈在WinCE系统上的移植和应用,提出了一个嵌入式SIP终端的系统分层结构同时指出了上述分层结构中各层次在实现时要注意的主要问题。

参考文献

[1] 司端锋,韩心慧,龙勤等.SIP标准中的核心技术与研究进展[J].软件学报.2005 16(2).

[2] 刘志军,王风著,张孟辉等.软交换技术协议SIP及其在VoIP中应用[J].微计算机信息.2006,09-3:169-172

[3] 卢华,王保保.oSIP协议栈的研究及应用[J].电子科技.2006.2.

[4]  libosip Documentation 2.2.0.http://www.gnu.org/software/osip/doc/html/

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

经过几十年发展,嵌入式技术已经用在了我们生活中的方方面面,但是嵌入式始终都带有小众,专业性强的属性,让很多非嵌入式领域的同学望而却步。近十几年的发展,物联网覆盖了越来越多领域,包括了家居,商业,工业,农业等领域,不仅吸引...

关键字: 嵌入式 物联网 技术

随着IT技术飞速发展,互联网已经进入了“物联网”时代。物联网中需要的大量设备不在依赖人与人之间的交互产生联系,更多通过协议、通信、程序设计等方式连接到一处。即 “物联网”的目的则是让所有的物品都具有计算机的智能但并不以通...

关键字: 嵌入式 物联网 计算机

2019年上映的《复仇者联盟4:终局之战》无疑是漫威和超级英雄粉丝心中的剧痛,该片中最受观众喜爱的钢铁侠为了打败灭霸,一个响指也夺走了自己的生命。影片最后,复联成员们还为钢铁侠举办了一个葬礼,一众英雄出席让人泪奔。钢铁侠...

关键字: 漫威 HELLO TI OS

上海2022年10月17日 /美通社/ -- 近日,第17届中国研究生电子设计竞赛(下简称:研电赛)全国总决赛评审工作圆满完成。今年,来自全国63个高校的114支参赛队伍报名了TI企业命题,创下历史新高。并且,...

关键字: TI 德州仪器 OS 模拟

最近看到APP上,给我推送了很多类似的回答,借此机会,也想着重新审视一下自己的学习历程,以及结合自身和大牛,分享一些学习经验,希望对大家有所启发和帮助。

关键字: APP 嵌入式 C语言

(全球TMT2022年10月13日讯)Bossard柏中推出的亮灯拣选系统(Pick by Light and Put to Light)帮助客户减少寻料和补货时间。这种“摘果式”灯光拣选系统采用LED信号灯引导物料员...

关键字: SAR 亮灯拣选系统 OS LIGHT

亮灯拣选系统将成为SmartBin Cloud云智能料盒和SmartLabel Cloud云智能电子标签的组成部分,引导客户快速准确地找到物料。 上海2022年10月13日 /美通社/ -- Bossard柏中推出的亮...

关键字: SAR 亮灯拣选系统 快速定位 OS

万物智联时代,嵌入式技术及其应用的形态将更加丰富和多元,同时也将日益呈现深度物理融合、混合架构共存、群体智能协同、网络安全攸关等诸多新的计算特性。显然,经典的嵌入式系统体系结构、软硬件技术和开发方法都已很难应对新趋势下的...

关键字: 嵌入式 物联网 计算机

物联网是新一代信息技术的重要组成部分,是互联网与嵌入式系统发展到高级阶段的融合。通用计算机经历了从智慧平台到互联网的独立发展道路;嵌入式系统则经历了智慧物联到局域智慧物联的独立发展道路。

关键字: 嵌入式 物联网 计算机

今天,小编将在这篇文章中为大家带来工控主板的有关报道,通过阅读这篇文章,大家可以对工控主板具备清晰的认识,主要内容如下。

关键字: 工控主板 嵌入式 主板

嵌入式软件

15715 篇文章

关注

发布文章

编辑精选

技术子站

关闭