回传型机顶盒网络模块的实现及其应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
回传型机顶盒网络模块的实现及其应用
潘荣凯;王裕如;李卫华
【摘要】提出了基于STi5105芯片的回传型机顶盒网络模块的软件、硬件设计方法,实现了基于IPQAM的双向互动业务,总结了嵌入式浏览器中间件和VOD点播中间件的集成要点.测试结果表明,软件、硬件设计正确,嵌入式浏览器中间件和VOD点播中间件性能优良,运行稳定.
【期刊名称】《大连工业大学学报》
【年(卷),期】2009(028)001
【总页数】3页(P54-56)
【关键词】回传机顶盒;嵌入式浏览器;双向互动业务
【作者】潘荣凯;王裕如;李卫华
【作者单位】大连大显网络系统股份有限公司,辽宁,大连,116023;大连工业大学,信息科学与工程学院,辽宁,大连,116034;大连大显网络系统股份有限公司,辽宁,大连,116023
【正文语种】中文
【中图分类】TP335
0 引言
随着广播电视的全面数字化,传统的电视媒体在技术、功能上逐步与信息、通信领域的其他手段相互融合。
国内有线电视数字系统正在由传统的单向广播式向双向交
互式发展,很多地方正逐步开展多功能交互业务作为新的收入增长点,为电视观众提供增强电视、付费电视、直接的营销广告、个人电视记录和点播节目、时移节目等互动业务。
目前,针对各地市场开展互动电视业务的需求,各主要机顶盒方案提供商纷纷推出自己的IPTV机顶盒整体方案。
这类IPTV机顶盒方案适合在网络带
宽达到2 M以上的地区展开双向互动业务[1],而在网络带宽无法保证的地区,实现双向点播等业务的主要手段是通过IPQAM。
与IPTV不同的是,IPQAM方案只有节目的EPG网页是通过互联网络获取的,而节目码流则通过有线下发,因此IPQAM方案对网络带宽的要求就小很多,一般达到100 kbps即可[2]。
作者正是采用这种设计理念,提出了一种基于意法半导体的STi5105 DVB-C/MPEG-2解
码芯片的回传型机顶盒回传模块的硬软件实现方法,并总结了嵌入式浏览器中间件和VOD点播中间件的集成要点。
1 回传硬件的选择
STi5105是意法半导体公司2006年推出的针对DVB-C/MPEG2机顶盒的一体化
解码芯片,采用ST20 CPU内核和OS20嵌入式操作系统。
STi5105本身没有TCP/IP网络收发部件,笔者经过评估选择了Davicom公司的DM9000网络芯片作为网络数据收发部件。
DM9000芯片的数据收发速度与其他同类产品相比只快
不慢,且独具的AUTO_MDIX功能(自动识别交叉线和平行线)是同类产品所没有的。
另外,DM9000芯片结构简单,只有40个管脚,数据线和地址线可复用,
体积小,使硬件设计较为简单,而且价格合理,是一块性价比很好的网络芯片。
2 网络协议栈和网卡驱动
STi5105的软件开发基于OS20实时操作系统,与Windows和Linux以及其他
成熟的嵌入式操作系统不同,它自身不包括TCP/IP网络协议栈,需要自行移植。
从减少成本的角度考虑,笔者决定移植开源的网络协议栈,并最终选择了性能稳定、占用资源较少、易于移植和扩展的LwIP。
移植工作主要包括实现LwIP的操作系
统封装层和调试DM9000网络驱动。
2.1 LwIP的操作系统封装层及进程模型
LwIP的作者在设计之初就考虑到了协议栈在不同平台的可移植性问题,因此定义了专门的文件用于封装操作系统的底层接口,实现任务创建、任务之间通信以及定时器等方面的功能。
LwIP协议栈的每一层都在一个进程当中,这样TCP/IP协议栈就和操作系统內核分开了。
而应用层程序既可以是单独的进程,也可以驻留在TCP/IP进程中。
如果应用程序是单独的进程,可以通过操作系统的邮箱、消息队列等和TCP/IP进程进行通讯;如果应用层程序驻留在TCP/IP进程中,则可以利用內部回调函数口(Raw API)和TCP/IP协议栈通讯。
对于OS20操作系统来说进程就是一个系统任务。
值得注意的是,如果应用程序使用单独的进程,那么LwIP将涉及多任务通信,此时必须把LwIP源码中定义的TCP/IP主任务的优先级设置为在所有LwIP相关任务中最高,否则协议栈将不能正常工作。
在集成浏览器的测试过程,当用遥控器在网页上操作过快时会发生死机的现象。
经分析发现是因为浏览器的http协议栈与LwIP的TCP/IP协议栈运行在不同的进程当中,快速切换网页时浏览器的http协议会关闭某个已经打开的socket,并释放这个socket上的所有资源(包括信号和队列等),而LwIP的TCP/IP进程仍会从socket去接收或发送数据,结果造成操作系统访问已经被删除的资源从而崩溃。
解决这个问题的基本思路是实现浏览器所在进程和LwIP所在进程之间的同步,从根本上防止操作系统去操作已经被删除的对象。
下面以信号量为例介绍实现二者同步的方法。
首先定义一个管理信号的数据结构:
typedef struct LwIPSemCB_s{
struct LwIPSemCB_s* next;
semaphore_t* pSem;
u32_t op_count;
}LwIP_Sem_CB;
#define MAX_LWIP_SEM
200 /*定义信号数组*/
static LwIP_Sem_CB LwIPSemCB[MAX_LWIP_SEM];
初始化时将所有可用信号串成一个单向链表:
for(i=0;i<MAX_LWIP_SEM-1;i++){
LwIPSemCB[i].pSem=NULL;
LwIPSemCB[i].next=&LwIPSemCB[i+1];
LwIPSemCB[i].op_count=0;
}
LwIPSemCB[i].pSem=NULL;
LwIPSemCB[i].next=NULL;
LwIPSemCB[i].op_count=0;
static LwIP_Sem_CB* pUsableSemCBHead=NULL; /*定义指针,指向链表中第一个可用信号*/
static LwIP_Sem_CB* pUsableSemCBTail=NULL; /*指向链表中最后一个可用信号*/
创建和删除信号时,分别对pUsableSemCBHead和pUsableSemCBTail进行操作。
实现同步的方法是在LwIP的操作系统封装层函数每次发信号或等信号开始调用底层操作系统接口之前,先把LwIP_Sem_CB 数据结构中的op_count值加1,底层操作系统接口返回后再将该值减1;而在删除信号的时候,首先判断
op_count是否为0。
如果为0,说明该信号当前未被操作,可以立即删除;否则,说明当前信号正被操作不能立即删除,此时将信号记录到一个数据结构中作为消息
发送给另外的任务,另外的任务反复去查询,当该信号的op_count为0时再去
删除该信号。
2.2 LwIP中的字节对齐问题和网卡驱动
多数平台对字节对齐都有要求,ST20平台也不例外,那就是,short类型数据所
占用的内存必须对齐到16位边界,int类型和结构体类型的数据所占用的内存必
须对齐到32位边界,如果不能对齐,则对该数据的访问将出错。
LwIP协议栈中
定义了以太网报文、IP报文、UDP报文、TCP报文的包头数据结构,这些包头数据结构在协议栈中被大量使用,如果不能保证数据结构中每个字段都按照上面的规则对齐,协议栈将不能正确访问想要的数据从而不能正常运行。
通过查看这些数据结构发现,只有以太网包头的定义不符合ST20平台的要求,其帧格式如图1所示。
图1 以太网协议帧结构Fig.1 Ethernet protocol frame structure
可以看到这个数据结构是一个14字节的类型,如果直接使用,会导致以太网包头后面的IP包头、TCP/UDP包头等不能正常对齐,通过人为加入2个字节的填充,所有包头都能正常对齐。
修改程序如下:
struct eth_hdr {
u8_t padding[2];
struct eth_addr dest;
struct eth_addr src;
u16_t type;
}
因为为解决字节对齐问题在以太网包头数据结构中引入了两个字节的填充数据,所以在网卡驱动程序收发数据时也要做相应的处理,就是在收数据的时候,人为地在所收数据之前加两个字节作为填充,这样原来的协议栈源代码就可正常访问网络数据包头数据结构中的所有字段了。
发送数据时,由顶层协议填充的两个字节应该被
忽略。
3 Ping包实验和TCP Echo服务器测试
Ping包测试结果如图2所示,机顶盒IP为192.168.127.145,用65 000字节不间断地对机顶盒进行Ping包,时间小于1 ms,TTL为128。
图2 Ping包实验结果Fig.2 Ping test result
TCP Echo服务器实验是用机顶盒作为TCP服务器监听某一端口(此处使用7号端口),用PC上的客户端软件向服务器发送数据,服务器收到后把数据原封不动地
送回客户端。
通过测量不间断地发送上万字节的大数据包所经过的时间,可以大致估算出网络模块的传送能力。
测试中PC客户端软件采用共享软件TCP/UDP调试助手,经测试,用该软件不间断地发送10 000字节,发送间隔设置为200 ms,
可以快速准确地接收到机顶盒传送回来的数据,计算得收发速度至少为781.25 kbps,完全满足IPQAM点播系统所需的100 kbps网络带宽要求。
4 嵌入式中间件和双向增值应用
目前国内针对双向机顶盒的增值应用主要包括个人电视记录和点播节目、时移节目等,其中点播和个人电视记录需要实现点播的厂商和实现浏览器的厂商配合来实现。
目前市场上采用较多的嵌入式浏览器有茁壮的iPanel、佳创的Avit、影立驰的EnReach等;实现点播的厂商,国外有影立驰、思迁等公司,国内有华为等公司。
网络运营商可以通过用户名加密码、智能卡、MAC地址等方式对入网用户进行认证、智能卡认证是不错的认证方式,用户无需了解具体操作细节,只要智能卡中有可用卡点即可使用。
机顶盒在用户进行点播、时移等操作时,自动上传智能卡卡号,服务器为配备了有授权智能卡的用户分配资源。
点播终端负责与流媒体服务器和点播服务器交互,浏览器负责在EPG点播和刻录预约时收取、显示网页。
如果是点
播或时移,当操作成功时,媒体服务器会为用户临时分配QAM调制器播发码流,并将频点和节目号等信息告知机顶盒,机顶盒锁频点,搜索到节目的音视频PID
后播放。
这些浏览器、点播系统的socket接口与LwIP的BSD socket接口差别
很小,封装很方便,值得注意的是select()接口的使用。
5 结论
Ping包测试和TCP Echo服务器实验结果验证了整个软件、硬件的正确性,大致
评估出可以达到的网络收发速率。
改进的LwIP协议栈保证了嵌入式浏览器中间件和VOD点播中间件性能优良,运行稳定。
整个设计满足有线电视运营商开展基于IPQAM的双向互动业务的网络需求。
参考文献:
[1] 李晓乐. IPTV仍需等待[N]. 计算机世界日报, 2007-04-07(13).
[2] 郭权华. EoC技术在广电双向传输中的实际应用探讨[J]. 世界宽带网络,2008,15(10):74-75.。