新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > SIP协议在嵌入式Linux中的实现

SIP协议在嵌入式Linux中的实现

作者:时间:2010-08-05来源:网络收藏

摘要:系统由于本身资源的限制,现有的直接应用于便携设备还有困难。为满足系统中的商用要求,设计出一个简化的栈。首先分析了SIP协议直接应用于嵌入式系统时所显现的不足,然后从协议层次的简化,层次间的快速反应,层次的模块化设计等方面入手,降低SIP协议的存储空间,使其更加简单灵活、扩展性更好,并在嵌入式系统中了SIP协议代码的嵌入式移植和优化。试验结果表明:设计的SIP协议栈所占存储空间小,在嵌入式系统平台下运行良好,满足设计需求。
关键词:SIP协议;嵌入式应用;9平台

本文引用地址:http://www.eepw.com.cn/article/151706.htm

会话初始协议(SIP协议)是一种用于IP网络多媒体通信的应用层控制协议,可建立、修改、和终止多媒体会话。SIP具有良好的互操作性和开放性,支持多种服务且具有多媒体协商能力,能够在不同设备之间通过SIP服务器或其他网络服务器进行交互。同时SIP易于扩展,支持用户移动性,能够充分满足设备对移动性服务的需求,而且SIP简单灵活,计算量小,尤其适合在嵌入式应用环境中应用。因此,将SIP引入到嵌入式应用中,凭借SIP自身的特性可有效提高嵌入式网络设备的互操作性和接入网络的便利性。但SIP协议本身只给出SIP消息的文法定义以及自然语言描述的消息处理,并未给出SIP协议栈的机制。这里讨论在嵌入式终端设备上建立嵌入式Linux系统,并完成SIP的嵌入式,以及代码的嵌入式移植和测试。

1 嵌入式LilIHX系统开发
1.1 建立交叉编译环境
本文使用的是实验室的SYS2410-B开发板。准备好必要的软件包后,建立交叉编译环境实际上就是对cross2.95.3.tar.bz2的解压过程。具体过程如下:
1)在编译Linux之前,先安装交叉编译toolclhain,在/usr/local目录下建立名为ann的目录,进入该目录,执行解包:
cd/usr/local/armtar xjvf/mnf/cdrom/linux/toolchain/cross-2.95.3.tar.bz2
2)编辑/etc/profile,找到pathmunge/usr/local/sbin,在其下面添加一行:
Pathmunge/usr/local/arm/2.95.3/bin这样,内核或其他应用程序均可使用arm-linux-来指定使用该交叉编译器。
1.2 Boot Loader移植
Boot Loader是在嵌入式Linux操作系统内核运行之前运行的一段小程序。通过这段程序可以将内核从Flash存储器拷贝到RAM,并执行内核。还要完成初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态。用烧录软件jflash-s3c2410通过JTAG口向硬件板下载Boot Loader二进制文件,向硬件板Flash中下载引导程序,这样Boot Loader就可以成功运行。
1.3 重新编译内核
从官方网站上下载的内核不能直接在硬件平台上运行,需要根据具体的硬件平台重新裁剪、编译内核,根据硬件平台特性编写相关代码,将Linux移植到平台上。以下是对内核代码的修改:1)修改内核目录树根下的Makefile,指明交叉编译器;2)配置Flash分区,修改arch-/arm/mach-s3c2410/devs.c,用以指明分区信息,该文件的内容建立Nand Flash分区表;修改arch/arm/machs3c2410/machsmdk241-0.c文件指定启动时初始化,kernel启动时依据对分区的设置进行初始配置:3)配置和编译内核,在Linux源文件目录下,执行make menuc-onfig命令,配置内核产生config文件。然后依次运行#make clean;#make dep;#make zImage,完成对内核的编译。

2 嵌入式SIP协议栈的设计与
2.1 嵌入式下实现SIP协议栈
嵌入式环境下SIP协议的开发,主要需要考虑嵌入式系统资源有限的局限性,需根据系统应用的特点,在设计时充分考虑CPU、存储空间等系统资源的利用。由于资源的限制,嵌入式系统一般作为用户终端设备,故这里主要实现协议栈中用户代理(UAC/UAS)的功能。
首先是协议栈的简化。根据RFC3261中定义的SIP协议栈模型可知,SIP是一个分层体系结构的协议。该协议主要由4层组成,底层为语法编解码层(SyntaxEncoding);第2层是传输层(TransportLayer),该层定义网络上的客户机和服务器如何接收请求和发送响应;第3层为事务层(Transaction),负责事务处理;最上面一层为事务用户层(Transaction User),每个SIP实体都是事务用户,当一个事务用户希望发送请求时,就创建一个客户机事务实例以发送请求。
这种协议栈的设计实现方法应用到嵌入式环境中有以下不足:1)协议栈设计层次过多会增加系统堆栈的开销。为了不过多占用堆栈,在系统资源分配时需分配较大的堆栈空间。而嵌入式环境下的空间资源是有限的,SIP模块占用过多的堆栈空间,会造成其他任务空间分配受到限制。2)层次与层次之间的调用会增加系统的延时,降低系统的实效性。而作为用户终端设备,快速响应是设计的重要准则。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭