IPTV机顶盒网络通信接口软件的设计与实现_图文

电子科技大学 硕士学位论文 IPTV机顶盒网络通信接口软件的设计与实现 姓名:蔡进 申请学位级别:硕士 专业:信号与信息处理 指导教师:刘钊 20090519

摘要

摘要

IPTv是互联网技术与电视技术结合的产物,它将两者的优势集于一身。口1'v 最大的特点是使电视图像业务在高速互联网上的应用成为现实,用宽带平台整合 有线电视资源,为用户提供更多的多媒体信息服务的选择。碑1-v这种在互联网时 代更为灵活的传媒方式对于未来电信运营商、内容运营商、rr服务提供商的增值 都有着巨大的影响。Ⅲ1v具有非常鲜明的特点,它能与用户互动并根据用户的选 择配置多种多媒体服务功能,包括数字电视节目、可视m电话、娱乐、教育及商 务功能。口TV技术是一种全新的集中式电信和广播技术。它能通过具有QoS控制 的有线和无线网等宽带内容进行管理、控制和安全输出,它能够将这些应用从业 务平台发送到具有机项盒模块或相似设备的电视、PDA、移动电话或移动电视终 端为消费者提供服务。 本文在分析了IPTv业务及PTv机顶盒的基本定义及其当前国内外市场现状 和发展状况后,总结了Ipl.V机顶盒的业务要求。通过研究口Tv机顶盒的业务需 求以及相关文档,对IPTv机顶盒的软硬件环境进行了选择。在硬件方面选取了
C-NOVA 9700 sPARC MPEG-TS视频解码芯片以及丢包率小的sMSC

络芯片。在软件方面选取了具有良好实时性的Vx蚍嵌入式操作系统。在实现
网络芯片驱动的时候利用了VXWbd(s提供的MUX接口API,提高了系统的健壮 性。口TV机顶盒需要对从边缘服务器传送到用户的口数据包进行解析,本文采用

LAN9115网

了DⅦ.口标准,即在UDP的下层封装了主要用于传输实时数据的础口和RTCP
协议,这两个协议配合使用,能以有效的反馈和最小的开销使传输效率最优化,

这样就能提高视频数据传输的稳定性。同时,考虑到口Tv机顶盒的DI泓(数字
版权管理),本文还实现了条件接收系统中的CSA(通用加扰算法)并进行了测试。

关键词:mTV,机顶盒,VxW6rks,R1下,通用加扰算法

ABSTRACT

ABSTRACT

m’Ⅳis

me product of me iIltemet technology alld television teChnology a11d it

Combines me adV觚tages of tlle both.7111e most promiIlent featIlre of IPTV is mat
television images at pro、,ide
userS on

high—speed‰et

0n

bllSine8s appHcations become reali够t0

wim more selection 0f muItimedia bmadband cable

in内册ation

ser访c懿bV
to

resources

integration

platfo眦.PTV’s
h嬲∞onnous

more fIexible approach

media南r
operalorS, it
can

nle mture of teleCOIll】【nulliCations IT service pr0Vider intefact wim
uSerS

iIllpact


0n叩eratorS,content

of砌ue-addcd.口T、,haS
di酉tal

ve珂distinctive岛at娜路锄d

and in accordallce wim me uSe,s seleCtion t0 tcle、,ision

c0曲911re a Wide捌[19e


of multimedia

services,iIlcluding

progr锄s,vide0


phones,

entertailllTlent,education龇ld business fIlnctions.IPTV te c_mlology is

new cen仃alized nle cable and of tlle

telecoIll]【m商catio璐a11d

broadcasting tecllIl0109y

QoS C0曲.ols it tll】∞ugll
and

whleSs nc觚otks
ou勺put,and it
can

such嬲broadballd cont∞t

management,con们l


sec嘶ty

s铋t meSe applications董bm

business

p】atf0吼to

t11e module with
0r

tlle set—top box

0r

s曲ilar

ta晌al C0nsumer
SMSC
91 1 5 is

equipme鸱tel鲥sion,PDA,mobile
MPEG-TS

phone

television

seIvices. is Choscll勰video decoder cllip,meaIlwhile,

C-NOVA 9700 SPARC

chos饥嬲n酏啪rk

cllip.On nle

So胁are

side,VxW6订(s,an

eXcellent
arc

real-time enlbeddcd
provided by

op酬ing

system,is Chosell.MUX

iIlte嘲ce

APIs,w11iCh

VxWbfks,are

used for
are

net、怕rk chip

dri、惯iInpl锄eIl乜mon.口TV
serv既DVB P

STB will

觚alySis口data
t11is

packet Which

s哪怕m甜ge

s纰d矾is

adoptedin

diss酣ation,wIlich encapsulat髓R1吧a

ve哆uSe如l protoC0l向r real.time data

traIlsmissioll'in UDP packets.Vide0 and Audio data仃mlsnlission will be stably by
uSing RTP and RTCP C0印orately At nle end of廿1is IPTV set—top box

dissertation,conSid刚ion

to the

DRM(Di百tal Rights

MaIlag锄ezlt),CSA(Cornmon S∞锄bling

Algo打【hm)in Conditional Access

Syst锄is implemented.

Keywords:IPlV

set?top

box,VxWbrks,R1卫CSA

II

独创性声明
本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明 确的说明并表示谢意。

关于论文使用授权的说明
本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 (保密的学位论文在解密后应遵守此规定)

签名:奎

垫。

第一章引言

第一章引言

1.1研究背景与意义
PTv(hltenlet Protocol

1’ele、,ision)【l】【2】是近年来才出现的互联网协议电视,简

称网络电视。口Tv是数字技术、计算机技术与消费家电产品日益密切结合的产物, 是各类数字信息内容依托宽带平台共同发展的结果。PTv既不同于传统的模拟有 线电视,也不同于正在兴起的数字有线电视。其基本原理是利用宽带网络的基础 设施,以家用电视机或计算机作为主要终端设备,集互联网、多媒体通信等多种 技术于一体,通过互联网协议向家庭用户提供包括数字电视在内的多种交互式数 。.字媒体服务的技术。用户可以有两种方式享受PTV服务:(1)计算机+宽带网络; (2)电视机+PTV机顶盒。这种应用有效地将电视、通信和计算机三个领域结合 在一起,将大大促进三网融合及下一代网络的进程。 ⅢTV的优势在于实现了接收端和发送端真正的互动,它不但能接收广播信号, 而且也能实现用户与提供商(SP)的互动。通过mlv,用户不仅可以收看实时的 电视直播节目,也能按照自己的意愿进行视频点播,同时还可以非常容易地将互 联网浏览、电子邮件收发以及多种在线信息咨询、娱乐、教育及商务功能结合在 一起,在未来竞争中处于优势地位。 机顶盒(set.Top Box)作为数字电视(DTV)辅助设备是从20世纪90年代 后期欧美国家试播数字电视和高清数字电视(HDTv)开始的。它的主要作用是使 用户能够用原有的模拟电视机收看数字电视节目和高清数字电视节目,即提供A/D 信号转换功能,通常把这类机顶盒称为数字电视机顶盒。数字电视机顶盒具有网 络环境特征和条件接收功能。图1.1展示了典型pTv系统结构【3J及IPTv STB所
在位置及作用。

1.2研究现状
由于目前PTv及PTV STB的标准尚未统一,所以IPTv STB市场呈现出百 花齐放的状态。主要表现在以下几个方面:

电子科技大学硕士学位论文

Ⅵewers HOme

圈1.1典型砰Tv系统架构

(1)嵌入式操作系统的选择。目前主要有3种主流的操作系统:windows

cE、

Linux以及vxworks。wlndows cE牛要用于高端机顶盒上,对机顶盒与计算机等

设备带来了联网E的方便,但价格不菲。“nux虽然是开源,但支持的cPu种类 没肯vxworks多,同时调试工具也比较少,J r发周期比较长。所以本文选择实时 性和稳定性都比较好,开发周期比较葡的vx、№rks作为IPTv sTB的操作系统。 (2)视频压缩标准。当前主要的视频压缩标准有MPEG-2、MPEG-4、H
264

以及我固自主研发的Avs。H 264虽然在码率和压缩比上优于MPEG.2,但目前支
持H 2“的解码芯片还不够成熟,所以木课题采用支持MPEG.2 MP@ML的成熟 的视频解码芯片c—NOvA970仉

第一章引言

(3)网络协议栈的选择。目前主要有两种协议栈可供口TV STB选择。一种

是由ITU.T的DⅦ-IP协议栈,另~种是由cisc0、S眦、P艋ips等公司联合制定
的ISMA协议栈。由于ISMA需要管理更多的RTP会话以及I/O

Bu脑,所以本文

采用DⅦ.口协议栈进行实现。
1.3本文主要研究工作
本文对基于VxW6rl娼的DTV机顶盒系统进行了研究和讨论,重点研究并开

发了基于vx‰嵌入式的网络芯片驱动、实时视频传输协议以及条件接收系统
中的加解扰算法。本文的组织结构安排如下: 第一章简要介绍本课题的背景、意义和研究现状; 第二章介绍了口TV STB原理框图、主要软/硬件结构、各芯片的特性、vxwrorks 实时操作系统,并且搭建了口TV机顶盒的开发调试环境; 第三章系统研究了sMsC

LAN9115网络芯片,并基于vXWb缸提供的MuX

层API开发了相应的驱动程序以及进行了相关的调试; 第四章分析了STB协议栈,详细研究了口TV机顶盒网络传输协议中最重要 的R1限(实时传输协议),在vXw.0r1娼上实现了该协议并进行了测试; 第五章介绍了口TV条件接收系统,CSA算法的作用及流程,并在vxw6rks
系统上进行了实现及测试;

本文最后对整个课题进行了总结和展望。

1.4本人的工作
本人在硕士生学习期间完成了基于VxW-orks的口Tv机顶盒部分驱动及功能 的设计和实现。该机顶盒能在VxW.orks上正常工作,并支持RTP协议以及条件接 收系统。具体内容包括:
>方案论证、芯片选型;

>搭建口Tv机顶盒开发及调试平台;
>SMSC L~N91 15驱动程序的开发;

>RTP协议在VxWbrks上的实现; >通用加解扰算法的实现; >硬件及软件的仿真测试

电子科技大学硕士学位论文

第二章I PTV机顶盒系统架构

机顶盒设备是由硬件和软件两部分组成,不同档次的机顶盒所采用的系统平台 不同,软件架构也不同,从而它们所实现的功能也不同。在硬件结构上基本存在 三种结构的平台,即基于专用芯片架构、基于多媒体数字信号处理器(DsP)架构 和基于x86架构的平台。软件结构大多采用层次化、模块化结构,也有采用中间 件结构。本章将介绍PTV机顶盒的软硬件结构,并对T0mado开发环境进行配置。
2.1

IPTV机顶盒的硬件结构

2.1.1典型IPTV机顶盒硬件结构
机顶盒的硬件结构由核心控制单元、媒体处理单元以及各类接口组成,如图
2.1所示【4】。

图2.1口TV硬件典型结构

核心控制单元一般采用嵌入式系统处理器芯片,可以运行实时操作系统。媒 体处理单元一般根据机顶盒成本选用ASIC专用解码芯片或数字信号处理器,也有 采用软件解码实现的。IPTV机顶盒接口比其他电视机顶盒要丰富得多,网络接口 根据网络接入方式的不同可配置成高速以太网接口、ADSL接口或无线局域网接 口,甚至EPON或电缆接口。媒体播放接口基本配置有复合音视频端子和S端子,



第二章口Tv机顶盒系统架构

较高配置可有YPbPr、YCbCr和数字音频输出接口。控制接口是指用户操作控制 机顶盒的接口,一般以红外遥控器为主,也有采用红外遥控键盘或WiFi技术的。 除以上基本业务应用所必需的接口外,可根据业务需要配置USB接口、串行接口、 Z接口、智能卡接口等其他扩展接口。 从图2.1可见,机顶盒功能的强弱与核心器件的选择有直接关系。目前的IPTv 机顶盒主要基于三种结构: (1)基于专用芯片的结构(SoC+ASIC) 专用视频图像处理芯片内部除了处理器以外,还集成了一些智能模块,如音 视频输入输出等,有些还集成了图像压缩、硬件加速模块。从本质上讲,专用视

频压缩芯片和通用视频处理芯片都属于SOC(sySt锄on chip),差异是前者带有固
定的压缩模块、固定的处理方式和固定的微码,后者需要产品开发商开发视频压 缩算法程序。 传统的基于ASIdSoC结构的机顶盒,由于其全硬件芯片的实现方案使得运营 商无法实现软件的有效升级,另外其网络适应性也有较大问题。但由于基于这种 结构的机项盒成本较低,在口Tv业务起步阶段,一般由业务运营商向用户免费提 供机顶盒,选用专用芯片结构的机顶盒,在保证基本业务的前提下,能够使业务 运营商节省运营开支,对业务推广无疑会起到很好的作用。 (2)基于多媒体数字信号处理器的结构 基于多媒体处理器技术的mTv机顶盒,采用了高性能数字信号处理器和嵌入 式系统芯片作为硬件平台。DSP主要用于视频和音频的解码处理,嵌入式实时操 作系统芯片用来控制处理从各种接口来的数据以及运算需求。采用多媒体数字处 理器结构可以很方便地实现MPEG.2、MPEG.4视频和音频处理、H.264视频处理, 同时还支持其他用于DTV的编解码标准。考核PTv机顶盒的首要指标就是其对 媒体格式的支持能力。因为到目前为止,用于IPTv业务的媒体格式还没有统一标 准,各运营商也处于测试选型阶段,因此基于多媒体数字信号处理器结构的机项 盒可以灵活编写不同编码或直接做成双解码形式。 嵌入式系统是计算机、通信、半导体、微电子、语音/图像/数据传输处理等技 术与具体应用对象相结合的产物。一般来说,嵌入式系统由嵌入式芯片、嵌入式 软件、嵌入式操作系统及嵌入式系统开发工具等四部分组成。嵌入式芯片包括嵌 入式微处理器、嵌入式微控制器、嵌入式数字信号处理器以及嵌入式片上系统, 随着RISC(精简指令集计算机)技术和微电子技术的迅速发展,嵌入式芯片的功 能越来越强,体积越来越小。


电子科技大学硕士学位论文

嵌入式实时操作系统与桌面计算机操作系统不同,它不安装在硬盘中,而是 固化在存储器中。嵌入式操作系统结构紧凑,功能相对简单,资源开销较小,目 前主要有三种:、Mndows CE、Linu)【和VXWbrks。、胍ndows CE主要用于高端机顶 盒上面,对机顶盒和PC等设备的联网带来了方便。但费用不菲。对于中档机顶盒 产品,选用“nu)【操作系统更为合理。据市场调查公司S仃ategy Anal蛳cs发布的

一份报告,全球机顶盒市场上,LiI嗽操作平台已成为IPTV机项盒的主要选择。
因为LinuX平台不但可支持许多高级功能,例如录像与P传输,并且非常经济, 不需要许可费。但Linux的开发时间较长,调试工具比较少,所支持的CPU种类 也比较少。在本课题中采用Vxwbrks操作系统。 (3)基于X86的结构

如下优势:首先它可以对不同格式的文件进行编解码,如MPEG.2、MPEG.4、嗍
等,使基于这种嵌入式平台的多媒体音视频设备可以处理各种各样的片源。其次
w试dows CE操作系统有一整套集成的多媒体功能和极为丰富的应用程序,使得开

对比基于RISC架构CPU的嵌入式系统,基于x86架构CPU的嵌入式系统有

发口TV机顶盒的周期更短,适用于开发高级的IPTV机顶盒。该操作系统固有的 桌面兼容性,使机顶盒开发商可以轻松地使用为Windows XP准备的大量应用程序 来扩充口机顶盒的功能。
基于X86架构的机顶盒由于内嵌Windows CE实时操作系统,从而具有较齐

全的应用软件,维护成本低,可以轻松地与PC资源共享。由于这种机顶盒产品开 发成本高,虽然功能强,可与PC媲美,但只能面对高端消费群体,至少在初期对 于一般消费者不会有很大吸引力。

2.1.2本课题所采用的硬件结构
本课题综合考虑了芯片价格、性能指标、开发周期、前后兼容等方面后,采
用了C-NOVA 9700
SPARC

MPEG—TS(见附图2)作为视频解码芯片,网络芯片

则选用丢包率小的sMsc L小9115(见附图2)。c-NOVA9700【5堤专门用于机顶 盒设计的高性能视频解码处理器。它包含机顶盒设计所需要的所有元素:sparc处
理器、MPEG.2 TS解复用、MPEG.2视频解码器及AC.3音频解码器、PCI同步、

2个智能卡接口以及NTSC/PAUSECAM接口。SMSC LAN9115主要用于解析网络 数据包,并且在减少数据丢失方面表现良好,所以非常适合用于IPTV STB设计。 本课题以这两块芯片作为开发平台。本文的PTV机顶盒硬件框图如图2.2所示(实



第二章口Tv机顶盒系统架构

物图见附图1)。由网络发出的TS流经过SMSC9115的处理和解析,将TS流的有 效负载传送给C—NOVA 9700进行解复用和解码播放。

图2-2本文的口Tv STB硬件结构

2.2

IPTv机顶盒的软件结构
mTv机项盒作为客户端产品,除了具有良好的硬件平台外还需要软件系统的

配合才能够实现口Tv业务功能。机项盒的软件大多采用分层结构【6】,一般分成三
层:应用层、中间解释层和操作系统层,每一层都包括诸多程序和编程接口,如
图2.3所示。 n蟠放/视频点播
浏览器
EPG

扩展应用 应用层 下载应用程序

内置应用程序

中间件4丹
中间解释层 中间件适配层

操作系统(肌玎d钿博CE、三切锻、玢肋,.鼢…)
操作系统层 模块处理程序以及接口驱动程序 图2.3口Tv机顶盒软件结构


电子科技大学硕士学位论文

图2.3中划分了机顶盒软件的三层结构,其中操作系统软件包括实时操作系统 及机项盒硬件的驱动程序,重要用于完成对硬件设备的操作。中间解释层的主要 功能是将机顶盒应用程序翻译成CPu能识别的指令,去调用硬件设备完成相应的 操作。应用层可以分成内置应用程序和下载应用程序两部分,实现诸如TV播放、

视频点播(VOD)、EPG、Dl蝴、游戏下载等业务应用。
2.3

VxW-o她嵌入式操作系统
VxW甜(S是美国Wind mver System公司推出的一个运行在目标机上的高性

能、可裁减的嵌入式实时操作系统。它以其良好的可靠性和卓越的实时性被广泛 地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域,如卫 星通信、军事演习、弹道制导、飞机导航等。

Vxwbd(S操作系统有如下一些针对实时嵌入式系统设计的特剧7】:
(1)强实时性:V则%rks在80486 66MHz下的任务切换时间、系统调用时间 和中断相应时间都在微秒数量级,如果CPU频率更快的话,这些性能指标会更好,

而且更重要的是VxW-orks在设计时保证了系统相应时间的确定性。另外,VxWo凼
支持基于任务优先级的抢占调度和丰富的任务间通信机制,可以保证同步事件和 异步事件并行处理。 (2)微内核设计:Vxw|0r1【s采用微内核设计方法,操作系统的基本功能由
WiIld Kc=nld提供,其他系统功能以系统组件的形式存在,保证了系统的可配置性 和可裁减性。

(3)可裁减性:VX‰适应嵌入式系统多样性的特点,提供了高度的可裁
(4)可移植性:操作系统可以认为是提供了系统功能函数的函数库,VxW.orks

减性,系统最小可以裁减到8KB,这种裁减还可以做到基于函数级的裁减,即系 统的函数功能如果在应用中不使用的话,就可以将该函数对应的代码裁减。

在设计的时候,这些函数库只与目标机CPU的指令集相关,与硬件板设计无关, 所以操作系统具有很好的可移植性,与硬件相关的程序完全由BSP(板级支持包)
提供。

(5)可靠性:vxw6rkS经过将近20年的市场应用的验证,操作系统本身是 高度可靠的,另外构造一个高可靠性的系统是由整个系统设计来保证的,vxw.orks 操作系统为了支持软件可靠性设计,还提供了分布式消息队列和异常处理等机制 支持系统的冗余设计和容错设计。

第二章口.Ⅳ机顶盒系统架构 VxWbrks是一种多任务实时操作系统,从系统角度看,任务是竞争系统资源 的最小运行单元。Vxw.od!【s的每个任务拥有一个任务控制块TCB,主要用于记录 任务的状态、资源和参数,主要内容包括:任务的程序计数器、处理器的通用寄 存器、局部变量和调用函数时使用的堆栈、标准I/0、延时定时器、时间片定时器、 内核控制结构、信号处理程序、调试和性能监视。

创建任务的函数主要有三个:t破Sp蝴哪,taSkIIlit()和taskA以ve()。使用
taskSpawnO函数来完成任务的创建和最基本的任务的资源分配、初始化和激活动 作。taskhlito创建的任务处于挂起状态,必须使用taskActive()进行激活。在本课题 均采用taSkspawn()创建任务。taskSpa_wnO函数原型如下【S】:

缸taskSpawn(char幸name,int priod坝硫optiollS,int stackSize'FUNCPTR en妒t'
int

ar91,缸a啦….int arvlO)

在该函数中可以指定任务的名称、优先级、堆栈大小、任务函数的入口地址以及 最多10个入口函数参数。若任务创建成功,则返回任务的ID。 VxW6fks作为一种多任务操作系统,还必须能够对数据同步和互斥进行高效 处理。二进制信号量是一种通用信号量,开销较小,如果没有其他特殊要求,使 用二进制信号量是最佳选择。创建二进制信号量的函数原型如下:
SEM._JD seIIlBCreate(int optioIlS,SEM-_】B-S Tf盯E iIlitiaJState)

Options参数决定任务在二进制信号量上的排队方式。当一个二进制信号量的状态 处于不可用时,所有请求它的任务都将被阻塞起来,并在该信号量上排队。所以 创建一个二进制信号量时,必须指定这些任务的排队方式:基于任务的优先级
(SEM Q PRJORnY)或是按照F正O(SEM Q FIFO),例如在本文中的二进制

信号量创建如下:SemUdp=s钮圆Cr∞te(SEM Q PRIORJTK SEM EMPn[,)。关于 二进制信号量的使用将在第四章实现RTP协议时进行阐述。
2.4

Tomado开发环境的建立
TomadopJ是由Wind鼬ver推出的嵌入式实时领域里最新一代的开发调试环

境。Tomado给嵌入式系统开发人员提供了一个不受目标机资源限制的开发和调试 环境。T0mado包含三个高度集成的部分:运行在宿主机和目标机上的强有力的交 叉开发工具和使用程序;运行在目标机上的高性能、可裁减的实时操作系统 VxW.or】b;连接宿主机和目标机的多种通信方式,如,以太网、串口线、ICE及
ROM仿真器等。


电子科技大学硕士学位论文

T0mado是专门为解决嵌入式开发人员所面临的诸多问题而设计的。对于不同 的目标机,T0mado给开发着提供了一个一致的图形接口和人机界面。在嵌入式系 统工具发展历史上,Tomado是第一个实现了当目标机资源有限时开发工具仍可使 用且功能齐全的开发环境。另外,所有工具都通过一个中央服务器处理与目标机 的通信,所以无论连接方式是Ememet,还是串口线、IcE仿真器等调试通道,所
有工具均可以使用。

本课题将使用Tomad02.O for sparc版本作为开发调试环境,对口TV机顶盒的 驱动程序、R1T协议、MPEG.2视频播放以及加解扰进行仿真和调试。在本节中首
先设置口Tv STB的开发环境。

(1)本课题中,将Tomado安装在C盘的根目录下,然后在环境变量中添加以下 变量及相应的值: 组
用户变量

变量 W玳D
BASE HOST


C:\110mado

用户变量WIND 系统变量

n俾E

x86.will32 HOST

P删

%wIND BASE%\HOSl、%WIND

n俾E%\bin

(2)配置Tomado
1.选择”T00ls,’.>”Ta昭et Server,’->”C0nfigure…”,新建一个名为MuShu的Ta珞et Server,并选上’’Add des谢ption

2.在喇SerVer
Sen,er

to

meIlu”;

P中写入宿主机的口地址192.168.1.106,在Target IP中

写入口TV机顶盒的口地址192.168.1.150;

3.在”协get serVer Propert矿’中选择”Back Erld,’以及”wdbqo’,并且把”Timcout,’
设置为10秒,把”Re.眄’设置为5秒;如图2.4所示;

4.在’№et

Prop啷僻j选择’’Core file and syIllb01s”,在”file path,冲加

入”C:\cware\tomado\ta玛et\proj\MuShu\deVKenlel-128nlbit\DevelpmeIltj(enlel~xW.0r ks";如图2.5所示; 5.在”1kget
Server

Prop积歹’这选择”Memory

Cache

Size,,,指定缓存大小为

4096KB,如图2—6所示。 (3)配置超级终端

1.运行”开始”.>”Pro簪锄s'’.>”Tomad02”.>”VxW6rks

COMl”:

2.打开V)【worksl属性设置对话框,选择”COMl”,把比特率设置为115200, 数据位数设为8,无奇偶校验,停止位为l,无数据控制流。
(4)项目空间配置
lO

第‘章IPTv机ⅡI盒系统架构


打开工作空州井选择”c:、cwardtomad叭‘哗t\Pr0J\Mushu、mu小u wsp”,

在’弧works”属性页中打开”c:kwareuomado\t8唱ef\p叫蝴ushuhushu wsp”,并在
其上点击右键:

2在”DEFAuLT_BOOT-LINE”巾写入:
”In(qO)host:vxwo『ks
廿l=mushu仁0x08”:
h_192 168 l 106 e=192 168 l 150
u=Ⅵ【user

Dw=wdcome

3.选择”H盯dware”?>”Bul】d AJn项目经过编译后利用s“alApp将vxCorebin

下载到机顶盒中运行。 (5)S耐aIAD口配置 s肌alApp是一个开源的用于下载bm文件到nash的程序。在soRware选项
中勾选”IncIude soflw种”,并在+bln的路径中选择:

”c:咖arehomadoⅥ3rget审叫州ushu坩evKc丌1el?128mbl岍“elopmellLKemel\vxcorc
bln”,如图2-7所示。在端口设置中把比特率设为与T0mado一样.为115200。重

启机顶盒即可生效。 田墨墨墨E墨曩窭墨孽霪葱鑫露嚣’

r”Et‰7”

型型

TⅫt


#汕匝丽而石五鬲正茁j霭圃
R日nd r

s~bq"‘枷n m…5mm]] Fo?h☆h_T州口f^咄
f;

s呻?

r^11跏lo】r




smd:

0Ⅵ?q-m

s9打…?T“‘tm:t

sy-bd T?M

T”州s…h啡叫五汪了————]
hul“l●h女r"…t

:《2.5配置、'xwo^s慨上“
f”pt r



h?c)

Re一”!

s”w口"-rt#=iii五■—]
0-Wt?‘)



I,o

D?£“i

P≈呲&口1n?阿iF一
阿2.6%:置缓存R)、小

一so女v●一————————————————————一
Tu出Ⅱ-?,IP^ddr?1192:68 C懈4“Lln●

陬曩翠蕊琢聂酿可啊


l删

p Inclu“s。h{re

jn“…忸m

厂oownl。adto

阿面磊谪面面一!
R^M{。r

d“u9q n口

一 剧2.7设置bin文t{:

[互]垃!I!!:!『!:!|
幽24设置主机!,机项盒IP地址

电子科技大学硕士学位论文

2.5小结
本章主要对本课题的PTV机顶盒的硬件和软件结构进行了说明,在硬件方面
主要由C.NOVA 9700视频解码芯片和sMSc9115网络芯片构成;在软件方面选择

了实时性好的VxworkS操作系统,并对T0mad0开发环境进行了相关设置。有关 SMSC9115驱动程序和软件部分的具体实现将在第三章和第四章详细阐述。

12

第三章SMSC UN91 15网络驱动

第三章SMSC

LAN91

15网络驱动

本章将详细讨论基于Vxw-orks实时操作系统的口Tv机顶盒的网络驱动的开 发。首先介绍SMSC

L蝌9115网络芯片的特性,然后介绍VxW6rkS提供的网络驱

动程序接口API,最后对该芯片的驱动进行实现和测试。
3.1 SMSC

L玳9115简介
L蝌9115是SMSC公司推出的专门用于开发嵌入式应用程序的一款功
802.3 1 oBAsE.T和802.3p 1

SMsc

能齐全的10/100单芯片以太网控制器【10】。该芯片能提供任何16位多媒体应用程序 的最佳性能比,并且与正EE 00BASE.TX标准兼容。

U蝌9115将MAC与PHY进行高效的集成,并且拥有较大的传送和接收数据的
FIFO来适应各种应用程序。此外,LAN9115具有较大的缓冲区,使得在内存资源 使用上更加高效,图3.1为LAN9115的系统框图。

以太网

XlAL

图3.1 SMSC

L悄9115系统框图

LAN9115主要用于嵌入式应用程序、分布式音频系统、IP机顶盒以及VoIP 设计等网络产品。LAN9115的一个特性是可以减小或消除网络数据传输时的丢包 率,这在视频传输中是非常关键的,否则视频传到解码端的质量无法保证。如果 接收FIFO达到满状态,LAN9115会自动根据流量控制发送相应信息给发送端来

电子科技大学硕士学位论文

调整传输速率。所以本课题选用该芯片作为IPTV机顶盒的网络芯片是非常合适
的。

3.2

L州9115内部结构
LAN9115的内部结构如图3.2所示。

图3-2L州9115内部结构

下面重点介绍U姒9115是如何进行数据发送和接收的。 3.2.1发送数据操作
当数据准备进行发送时,待发送的数据将会被写入到TX FIFO中并处于等待 状态。每个数据包可能被分到多个缓冲区中,每个缓冲区将以两个双字的TX命令 开始(TX

Co咖land’A,/’B’)。TX命令指示LAN9115处理相应的缓冲区。在TX

命令中的数据包长度指定了相应数据包的长度。对于一个给定的数据包,所有缓 冲区中的数据包长度字段的值必须相同。如果实际数据包长度与TX命令中的数据 报长度字段的值不同,TX将返回T)(E标志位。 在将传输数据和Tx命令写到Tx FIFO之前,主机必须通过TX
FIFO INFO

寄存器来检查TX FIFO的空间使用情况。主机必须保证TX FIFO不能溢出并且TX 状态不能为TXE。主机首先将TX‘A,/’B’命令写入,然后才能把需要传输的数据写
到TX

FIFO中,图3.3为乙蝌9115数据传输流程图,图3-4为TX缓冲区数据结

构。
14

第三章SMSC L蝌9l 15网络驱动
序31


1XC咖maIId‘A’ TxC咖m锄d‘B’
传输字段DWO砒)o的偏移量

传输字段DwOIm甩的偏移量 偏移量+传输数据DOw砌)o

偏移量+传输数据DOWl①疗+填充位

填充字段(可选)

图3.3 UN9115数据发送流程

图3_4似缓冲区数据结构

TX数据段开始于TX缓冲区中的第三个字段,位于两个TX命令之后。数据 段的第一个字节所在的位置存储在TX

Co蚴and‘A,的Data Start O凰et字段中。表
Stan

3.1说明了数据段第一个字节的起始位置与Data

O侬et的对应关系。

表3.1数据段起始字节位置
D砒a start Of话et【1:o】 11 lO 0l oo

传输数据段的第一个字节位置

D【3l:241 Status

D【23:161

D【15:81

D【7:01

此外,L蝌9115还拥有TX
段。如果1X
TX StatuS Status

FIF0用于存储发送数据包后的返回状态字

FIFO处于满状态,数据传输将被挂起,当C-NOVA 9700读取
Status

FIF0并且该FIFO未满时,数据发送重新开始进行。TX

FIFo可

以通过TX配置寄存器TX CFG中的T)(SAO位进行设置。图3.5是一个LAN9115

发送数据的例子。在这个例子中,一个111字节的以太网数据包将被传输,该数据 包被分到3个缓冲区中进行传输。 Bu侬旧:7字节的数据包偏移量,79字节的负载数据和16字节填充字节;

15

电子科技大学硕士学位论文

Bu脑l:O字节的数据包偏移量,15字节的负载数据和l字节填充字节;
Bu侬砣:10字节的数据包偏移量,17字节的负载数据和5字节填充字节;
写入Ethernet
3l

controller


卫i£Qm殛and:△: Bu舵rEnd Padding=I
Da诅S诅rtO仃妃t=7 F{rst

Se锄ent=l

Last Se2ment=0 Buf话rSize=79

卫《£Qm也星nd:B:
P扯l(et Lcngtll=llI

】毯£Qm也a卫亟:△:
Bu仃erEnd Padding=l DataStartOf话et=O FirstSe2ment=0 Last Se2ment=0

Buf诧rSi砧=15

卫‘£Q皿堑篮d:B:
P∞ketLen舀h=11I

】毯£Qmmand:△:
Bufj融r End Paddjng=l DalaStartO伍辩t=10 Fifst Se2ment=O Last Segment=1 Buf凫r Size=17

Ix£立也皿堑坌:旦:
Packet Lcngth=lll

图3.5

L埘9115数据发送示例

第三章SMsC

u蝌9115网络驱动

3.2.2

L蝌9115接收数据流程
Data FIFo

当LAN9115接收一个以太网数据包时,MIL首先将数据装载到RX
中,然后载入RX

status字段。和发送数据一样,LⅢ9115也为接收状态单独用了
FIFO

一个Rx

StanlS

FⅢO。接收数据和接收状态可以通过RX

INF寄存器读取。

图3.6为LAN9115接收数据流程。

当IⅨ数据包从IⅨData FIFO中读取时,接收状态字段也能从IⅨSt籼FIFO 中读取,接收数据将以一种特定的格式进行读取。图3.7为IⅨ缓冲区数据结构及
读取顺序。当停止接收数据时,必须将MAC控制寄存器中的慰(EN位清零。如

果IⅨ‰FIFO或IⅨData FIFO溢出时,将会发生传输错误,REX标志位被返
回。
读取顺序3l 接收数据DWoⅪ)o偏移量


接收数据DWORD"偏移量 偏移量+DwoRD0


最 后
__—-





个 数







_。—●

DWORD疗



个 数


DWORDO填充字节



DWORD,l填充字节 图3.7 lⅨ数据结构及读取顺序

图3.6 UN9115接收数据流程

3.3

VxW|orks对网络驱动的支持
Vxworl【S为了使网络驱动和网络协议的开发更为高效,采用了一种机制把数

据链路层和协议层分离开,即增加了MuX层。图3.8说明了MI『X层的位置。 MUx层是数据链路层和协议层之间的接口,不过MUX并不是一个新的层。

17

电子科技大学硕士学位论文

在两台主机之间并不存在所谓的MUX层协议来实现通信。肌Ⅸ接口只关心自身
与所在协议栈的协议层和数据链路层之间的标准化通信。由于MUx接口的存在, 协议或网络驱动程序无需了解相互之间的内部机制。
IP+ICMP

S缸e锄s
MUX

其他用户服务

以太网

硬件底板

CSLIP

其他硬件支持

图3.8 MU)(层在网络实现中的位置

当添加网络驱动设备到MUX接口时,必须调用函数muxDeVL0ad()来实现。 如果在e11dDevTbl[】中命名了驱动程序装载函数,则网络初始化代码会自动完成设 备的添加。在内存中,驱动程序装载函数必须分配并生成数据结END OBJ和
NET NET

FUNCS。数据结构Do OBJ为MIⅨ接口提供了对设备的描述;数据结构
FUNCS则为MUX接口提供了指向驱动程序中标准的MUX接口函数的指

针,如xStart()、xReceive()等。图3.9说明了VxW|orks提供的MUX层的API与网 络驱动函数的调用关系【ll】。
,,‘“^上一,c

…,.n…r^^,Ⅳ、 yLu““\,
~…n…('●.。●,、
,,‘“^i/‘yuI“,‘\,

-smsc91 15三D口吠)

m纵眈v踟zD础)
…~n…Co.一/、 ¨ll^^L’‘voIuP\' …..D...:-../、—? ,,l“^』~(‘,c¨‘‘~J一 …..a~,Ⅳ、 ”?“^u?,?“\,

’J嬲c9115踟肠础)
-smsc91

15&口,-攻)

卜s脚sc9115&似)

卜册c9115&咒吠)
卜Jmsc91 1 5^纪缸纠比MⅪ必)

肌掰础Ps细懈砌()?
肌娥M∞.,纠比驴DPⅨ)
聊zⅨMC舀.,纠da拗d故) 聊“x^加[1口.,朋cI:办GP必)
一…..r..?,,、 …‘‘“1”o”\,
,”,Iv矗一dr胃ny,”f、 ’7¨‘^01¨¨’1
V’¨‘\,

卜s肌s毋115慨纠蒯秘拟)
◆smsc9115^犯幻纠劬G叫)
卜s聊sc9115如c以)

’删sc9115彳矗跏乃删()
2万fw,.

MUx

图3.9 MUX层API与网络驱动函数调用关系

第三章SMSC

L悄9115网络驱动

3.4基于VxW.o舾的SMSC LAN9115网络驱动

3.4.1添加网络设备(END)到VxW.o溉
将END放入VxWbrkS系统镜像后,由于VXw.o幽允许生成多于一个的网络
设备,必须建立一个jfj}defiIle定义分组表,从而将这些设备配置成不同的特性设备

组【121。这个设备列表是c11dDeVTbl口,定义在系统目录t舡g引src/confi加spn锄e/
configNet.h中。所以首先在configNet.h添加设备定义:


con69Net.h

幸/

托e丘ne LN_LOAD

FUNc-ELDⅨl 1 5

smsc91 1 5Load
“l:82600300:13:13:2:2300” l

托efine LN--LOAD-sTRING』LINⅪI

托e缸eLN-B町OAN
其中LN
‘L,N BUF LOAD FUNC LOAD STRING

ELINKll5定义了是SMSC9115的装载函数的入口地址,

ELINⅪI定义了smsc9115Load()中的初始化字符串,LN

LOAN定义了设备的单元号。

然后把SMSC911 5添加到设备描述表中:
END

TBL—ENTRY

endDeVTb 1口=

( {O,LN—LOAD.FUNC,LN二LOAD--STRING LN二BU『F—LOIAN,NULL,FALSE), {0,END_TBL-END,NuLL,O,NULL,FALSE) )

完成这个步骤后,就可以重新生成包含了新的驱动程序的VxW6幽镜像。在
系统重启该镜像时,系统会按顺序为表中的设备调用函数mu)【DeVhad()来装载设 备,在本课题中只有一个网络设备即SMSC LAN9115,故mu)【DevLoad()将调用

哪c9115Load()来装载该网络芯片。
3.4.2

VxW_orks中内存池结构及建立

netI≥ufLib㈣可以用于建立专用于接口驱动程序的内存池以及对内存池的管
理。在netBufLib中,数据是以簇的形式存在的。网络栈的元素使用mBlk和clBlk 两种数据结构与这些簇的引用指针进行交换。Vxwbrks堆栈使用netBufLib来管理 其内部系统和数据内存池。同样,提供的网络驱动程序也使用netBufLib对其数据 内存池进行管理。这样就有利于驱动程序与MUX共享缓冲区。
19

电子科技大学硕士学位论文

netBufLib内存池使用rnBlk结构、clBlk结构和簇缓冲区进行组织。netP001hlit() 调用将所有这些池连接为一个池,而新连接成的池以M 结构来组织。
(1)簇
CL

CONFIG和CL

DESC

簇的有效大小是2的乘方,最大可为64KB,对于一个特定内存池,簇的大小 是否有效取决于CL DESC表中的相关内容。
(2)mBlk和clBlk

netBufLib使用mBlk和clBll【结构对簇进行跟踪,内存池中的每个簇需要一个 相应的clBlk结构,clBlk跟踪有多少mBlk共享其底层的簇,如图3一10所示。dBlk 之上是InBlk结构,该结构存储到一个clBlk,也可以存储到另一个mblk的连接。 通过mBlk的链接,可以获得任意数量的数据。

NULL

数据包l

图3.10 ne£Bu也ib内存池数据结构

第三章SMSC

L悄91 15网络驱动

lI出lk结构是访问存储池中数据时要访问的第一个对象。因为mBlk只是一些 通过访问clBlk而可以访问的数据的引用指针,网络层不通过内部缓冲区之间的复 制就可以交换数据。每个mBlk结构为数据报内的数据以及新数据报的起始数据存
储独立的链接。

由于mBlk是通过dBlk对簇中数据进行引用的,所以复制一个lnBlk时不必 复制簇中的数据。例如,图3.10中的n也像A是mBlk l的一个副本。该副本的创 建并不要求对底层簇进行复制。不过,mBlk结构的复制会引起C1Blk中外部引用 指针计数的增加,其中clBIk对底层的簇进行管理。如果使用nctBu凡ib释放,则 mB墩被释放到内存池中,而底层的clBlk中的引用指针计数就会减少。如果该计 数减少到0,即没有mBlk引用簇,则clBlk和簇也被释放到内存池。 建立内存池是通过调用netP001Init()实现的,调用之前必须对内存池中需要的 存储区进行分配,然后引用netP00lIllitO中指定的CL DESC和M 构中的存储区。CL DEsC和M
CL CL

CoNFIG结

CONFIG结构为netP001hlit()提供定义存储池

要用到的存储区指针、结构计数、缓冲区大小以及缓冲区引用指针。

CL

CONFIG表只有一行,行中的元素指定存储池中clBlk和mBlk的数量

以及一个由起始地址和大小定义的预先分配好的存储区。而这些结构的数量类似
于网络系统存储表中指定的NET

MM BLK和NET

CL

BLKS的值。指定的c1Blk

的数量必须等于存储池簇的数量,而mBlk的数量至少应等于簇的数量。在所提供 的指针引用的已分配存储区应该足以容纳给定计数中指定的所有dBlk和mBlk结
构的数量。
CL

DESC表将簇的数量和簇的大小以及存储区联系起来,这个存储区是由一

个起始地址和大小确定的。虽然在clDescTbl口和sysClDescTbl口中不需要提供存 储区起始地址和大小,但需要所有创建的CL DESC中提供的这些信息。为网络驱 动程序建立CL DESC表时,必须指定簇的大小,该值必须与底层设备的MTU的 数量相接近。例如在本文中设置为1524字节(如图3.11),即以太网MTU加上一
些备用部分,如下所示:
为}define

SMSC9 1 1 5-BUFSIZE

ETHERMTU+ENET—HDRj之EAL_SIz+6+4
∥设置mBlk和clBlk数量

M CL CONFIG smsc9115MclBlkConfig={

∥mBlk数量
256,

clBIk数量
128, NULL,

O)

CL._DESC smsc9115ClDescTbl[】-{
SMSC91 1 5 BUFSIZE, O,NULL,
21

//设置簇的大小
0)

电子科技大学硕士学位论文

图3.11 SMSC9115驱动程序内存池

当驱动程序需要为数据报设置缓冲区时,要在已建立的内存池保留一个适当 大小的簇缓冲区,然后将簇与池中的l证救和clBlk结构连接起来。创建mBlk/C1Bll(/ 簇内存池的主要步骤如下:

(1)调用netC№terGe的、netClB啪etO保留一块簇缓冲区和一个dB墩结构;
(2)调用netClBlUoi《)将clBll(结构与喊有数据报的簇连接起来; (3)调用netMblkCUoin()把rIlBlk结构连接到clB埘簇结构。

3.4.3相关数据结构和MUX API
图3.12说明了在编写驱动程序时几个数据结构的关系。

NET FUNCS smsc9l 1

5Lo删1

smsc9 ll 5Unload() smsc911 5Sta呱) gmsc9115StoD smsc9115Send()
smSc91l 5MC髂俄ddrAdd()

smsc911

5MCastAddrG明)

smsc9l 15MCaStAddrDel() smsc9 ll 5Ioctl(1

p∞ketDataGet()

图3.12 SMSC9l 15驱动程序中的主要数据结构

第三章SMSC L~N9115网络驱动
END

0BJ是MUX与网络接口驱动程序之间结构换的头部。驱动程序对该结

构进行分配且对该结构在smsc9115Load()中的一些元素进行初始化。DEv--oBJ则

MUX用来存储设备名以及控制结构。此外,NEUUNCS中存储了驱动程序各主
要函数的入口地址。
3.5

SMSC9115驱动流程实现 SMSC9115装载流程

3.5.1

在系统启动时,vxw.orkS内核用户将启动任务对网络进行初始化。M1ⅨAPI m啊【DcVLoad()将会自动调用SMsc9115驱动程序中的装载函数Sln.sc9115L0ad()。

函数sIIlsc9115LoadO会生成描述驱动程序的数据结构啪OBJ。在函数
FUNCS的引用,而且在数据结构NET FUNCS中按照驱动程序的进入配给 函数进行内存分配。在函数muXDeVLoad()装载完驱动设备后,muxDevstartO将会

smsc9115LoadO提供的数据结构END OBJ的信息中必须有一个对数据结构
NET

执行驱动程序中的smsc9115StaItO。图3.13是SMSC L~N9115启动装载流程示意 图。下面重点描述SMSc9115网络驱动实现过程。

图3.13 SMSC9115装载示惹图

在网络接口能够用于接收或发送数据之前,smsc9115Load()必须将设备装载到 Mux中并进行一些初始化设置。这个函数应包含用以区分物理接口的设备号、中 断向量和寄存器映射的内存地址。

smsc9115L0ad()根据Ⅳ匆MD成m幻cDZ乃D厶钒的建议采用了双行程算法来编
写。MUX会在装载时调用该函数两次。第一次函数的初始化字符串为空,此时该 函数会检查空字符串并且返回复制进字符串中的设备名。第二次调用时,将实际 的初始化字符串传给smsc9115Load(),此时函数返回该指向数据结构END
OBJ

电子科技大学硕士学位论文

的指针并分配存储区。图3.14为SMSC9115装载的详细流程图。

图3.14 SMSC9115装载详细流程

下面对上述每个模块实现进行说明。 >分析初始化字符串 该初始化字符串是在configNet.h中定义的LN
LOAD STRjNG

ELINⅪI的值,

即“1:82600300:13:13:2:2300’’。其中每一项的意思分别为:设备号、LAN基 地址、中断向量、中断级别、偏移量以及初始化配置参数。用这6个参数初始
化SMSC911 5的部分参数,并将Int锄a1 PHY的地址设为0xFFFFFFFFH。 >识别芯片型号

这一步主要是为了确认所用的芯片型号为9115,因为sMsC公司除LAN9115 外还在该系列中生产了9112、9116、9117和9118,并附带测试字节顺序
(ENDIAN)。图3.15说明了芯片型号识别流程。

>初始化芯片内存 初始化芯片内存是为前面提到过的内存池分配空间,即对mBlk、c1Blk和cluster 进行初始化。所需的分配内存由下面公式计算:

Mm乱cl=NmB‰×ⅢBLK—sIZE+4●+Nc瞰k×KLBLK—sIZE+4泌


cl哪cr=Ncl。竹xtSMSC9、、5一B乙FSIZE+q+4.

其中必。削和朋0函船分别为将要为mBll(/ClBlk和簇分配的内存大小,^k占,七、

M删I和M加柳分别为mBlk、clBlk和簇的数量,坳己K觚ZE、C三丑EK勉E和
鼢舔C19JJ『J B【识S!,ZE分别为mBll【、clBlk和簇内存池的大小。图3.16为内存分配

第三章SMSC乙蝌91
流程。

15网络驱动

失败 芯片

图3.15 SMSC9115芯片验证流程

图3.16 SMSC91 15内存池初始化

>设置耵(/IⅨ中断控制
SMsC9115中断控制主要通过寄存器INT STS(58H)进行控制。

在发送状态下,当Vxw6r1(s接收到中断时,它会触发在函数netJobAdd()中注 册的中断服务程序smsc9115SeIldPackets()。这个中断服务程序以最小量的工作来 完成将本地硬件设备中的数据帧传递给内存。函数netJobAdd()会将该中断服务函 数放入Vxwbrks的系统任务tNetTask的工作队列并且产生一个信号量来唤醒

tNet协k。在tNetTask被唤醒后,它会从队列中取出函数和相关变量,然后在自己
的上下文菜单中执行函数直到队列中的函数都执行完成。在本驱动程序中,通过 sysIIl认ttaCh()调用netJobAdd()并注册中断处理函数,如下所示。
typedef Void(枣isrRtIo)(int);

typcdef s劬ct isrLink


isrRm
t n11:

电子科技大学硕士学位论文
int

鹕;

stmct isrLirll【串Ilext;

)isrLilllcj;

Static

isrLink-I

sysEndIsrLiIlk=


(V0id宰)smsc9 11 5Int,
0, NULL 产rtrl木/ 净铽g粤| 产next,I/

); 在smsc9 11 5L0ad()中调用sysm渔ttach(pDrVC仃l->ileVd,&sySEndIsrLiI出,TRUE) 注册中断函数smsc9115111t()。图3.17为中断处理程序流程。

要薪配鼍黧己卤量:≥凡中断错误 N夏至多/
中断配置寄存器,Ⅳ7'C硒、、>竺
.L y

,出峤睾磐;呈



FlFo藕%瓠 I』V



执行接收中断服务函

接收数据报

o lNT RDF

、‘一=—/

数HondlefRxiSRO

s搬c9i

15lle娟

币赫 —2-=/




执行发送中断服务函

发送数据报
smsc9 l i

。烈1,lDF2

数№以lerTxISRQ

5Se以P口cl【etsO

lⅣ
图3.17 SMSC9115中断处理函数

>初始化LⅢ 在这个步骤在中将完成检查设备是否准备好、设置L悄9115、设置GPIo和
初始化中断向量等几个功能,如图3.18所示。 在初始化LAN的过程中,根据SMSC9115手册的建议必须在设置GPIO 之间确保EEPROM装载完毕,这点至关重要,否则驱动程序将出现错误。
>初始化PHY
CFG

对PYH进行初始化主要是为了检测是否存在外部PYH,并进行IIltenlal和
Extenlal

PYH的切换,如图3.19所示。

第三章SMSC L~N9115网络驱动

图3.18U峨初始化流程

Exlerndi PHY

启用成功

图3.19

PHY初始化流程

>初始化IⅨ和TX
TX:

设置HW』FG中的FX.FIF-sZ位(TX FIF0的大小):

设置FIF叫T(68H)中的TX

DataAvailable

Levels,若TX FIFO中的空余部分超过

电子科技大学硕士学位论文

该值,则发出TDFA中断;
设置INT EN(5CH)寄存器中的TDFA
INT

EN位(TDFA中断使能);

设置TX CFG(70H)寄存器中的.TX ON位(传输使能)。
RX:

设置RX CFG(6CH)寄存器中的阳①OFF位(I己X >初始化SMSC9115设备数据结构

Data

Packet的偏移量);

设置INT EN(5CH)寄存器中的RSFL玳T EN位(RSFL中断使能)。

这一步的主要作用是将SMSC9115设备与smsc9115xxxx()驱动程序函数相关 联,并对其进行初始化。

3.5.2在VxWbrks上实现SMSC9115发送/接收数据
当上层数据到达TX

FIFO时,VxWbrks将调用MⅨAPI函数mu)【Selld()来传

输数据报。muxSeIld()会自动调用smsc9115Send()进行数据发送处理。图3—20说明
了SMSC9115发送数据的流程。

图3.20 SMSC91 15发送数据流程

第三章SMSC L~N9115网络驱动

其中A锄幽和A锄招由下式计算:

A锄姒=(&棚旷&o】【03观)>>16 I删.蜘J删确洳fl&九观口力;
戤锄妇=&玎比e玎<<16 I鼢记e雄;
当处于接收数据状态时,接收中断服务程序会调用在netJobAdd()中注册的 smsc9115RecV()进行数据接收,并组织为VxW.orks MuX层建议的簇的形式。图3.21 为SMSC9115接收数据流程。

从尼r删中读取数据






接收数据为空?

—\—/
lⅣ ,

接收完毕

从M明绫取
czBlk和mBik

将埘B腩和

ciBl阮沁ste矗毫嵌
l将接收数据写入肌占伍

————。————]

将c络缓和c?矧盯连接}-—J



结构中

图3-2l SMSC9115接收数据流程

3.6运行及测试
首先对VxWodcs系统开发环境T0mado进行设置,见第二章。然后将驱动程 序进行编译,生成.cbin文件并通过串口线下载到机顶盒中,如图3.22所示。启动 VXw6rks系统及机顶盒,将VLc作为发送端传输MPEG.2 TS流,利用S嘶a1App
观测SMSC9115驱动程序的运行情况,如图3.2l所示。

藿麓匿琵隧霪瑟瑟蕾——F磊z薷rs
Elap5ed筘赢胃Rema.n-ng:筘蒜F n螂hPut F篇丽。|
15内存基地址;

图3.22.cbin文件下载到机项盒中

从图3.23的实验结果可以看到,驱动程序在芯片初始化、I/O控制、发送和接 收数据等方面均能正常工作。部分数据含义如下:
dwLar圆aSe is 87c00000:SMSC 91
The TEST Byte is The

6000600:基地址中的值;

END认N

is

9000900:字节序寄存器值;

电子科技^学硕士学位论文
LAN9115

identl6cd,dwIdRe间x01150002:sMsc 9115验证成功;
set

MacAddress】s

bvdef轧l¨o 0x007 01loF90lo:MAc地址为ox007们10F9010;

dwTxcmdA=Ox303c,d、VTxcmdB=0x3c003c:得到Tx的两个命令值;
numPackdReceived=1.DPackd=0x11b87694:表示收到包的个数和地址:

+smsc911xHandleRcvInt:调用接收中断服务程序;

』一*到剑到
10.Do otDl u;ln

1sHsc}-s~91 HLo“s…… lsHsc+…c9IlHI octl lsHscsetHaq,va】一34,i IsMsc?+…c9liHsetMo do IsMsc:The…crl5 IsM8c{…cDeh re】M^c lsMsc.…(aRe0 M^c cR=0Hi o002000 lsM8c.-…c9iiHsetMo de IsMsc…c911H14ctI lsMsc+s~9“H8tan IsHsc:一:c9il Hs“m{…ess lsMsc…sc9l HIoctl lsHsc Ge㈣ lsMsc:?…c9¨HIOnI lsHsc:…sce¨HIoctI
1 9 DHl 004000‘ l



cR=oHl 0040008

lsHsc:Gec^ddress



ls



j一主包2二二刖型则
lsMsc:dvTHcm d^=0#003c
lsMsc 1sHs



lsMsc-5…9 rlteTochm lSHsc-s…9 HsendPac kets 10Msc…f c9i1 Hst“ JsHsc:+s…,l HMca;t^ddm“ lsHs…uIbca ad dre…d d…e00
L1 Hw L1 l st

c=-,_s…ess

dvTHcm dB=0H3 c003c





{sMsc+setMub castAddres5Llst IsMsc?+OetMul6castBlt

isMsc+co…pu№crc lsHsc ulhn日t扣6

lsMsc.一co…tec,c
lsMsc{T{ble=0#0

JsMsc.-洲utl…口k
lsMsc…HIcMu……tR805【o卜oH80000000.
Iu[H
cM ut『cos口e口sll 20H0

dwB『t10He0000000

lsMsc?H^sHH=o“o,H^sHL=0He00000



图3—23 sMsc 9115一苍片驱动样序运行情况

在vLc发送端,将Ts流扣包为uDP包进行传输,sMsc9Il 5网络芯片驸动
能昭币常运行,Ts流能够在终端的电视机E播放。

第三章SMSC LAN91 15网络驱动

3.7小结

本章通过对SMSC9115网络芯片的研究,结合VxW.0rks闭Ⅸ层的网络驱动
接口API,实现了SMSC9115的装载、发送、接收等驱动程序,最后利用VLC和 S砸乩呻p两个工具对驱动程序进行了测试,SMSC91 15芯片能够正常工作,TS流
能够正常播放。

电子科技大学硕士学位论文

第四章基于V×Works的RTP协议实现

完成流媒体的压缩编码以后,流媒体如何在网络上有效传输是一个需要考虑的

重要问题。网络环境是复杂的,酞锄et一直都是以“尽力而为”为目的的,在网络
拥挤的情况下,没有办法保证流媒体文件的及时有效传输。虽然数据缓冲技术可 以缓解数据实时传输的压力,但是单纯依靠数据缓冲技术依然无法满足顺畅欣赏 网络媒体的要求。确保流媒体文件高效快速传输的技术,成为迫切的需求,RTP 协议,即实时传输协议,是为在Intemet中保证流媒体高效、实时传输的技术体制。 当然,网络传输技术的应用也可以大大缓解带宽的压力,特别是对于高清直播电 视的需求。本章将重点研究并实现RTP协议。

RTP协议是针对hltenlet上多媒体数据流的传输协议,由IETF作为RFCl889 和RCF3550两个版本发布【14】【1 51。R]rP被定义为在一对一或一对多的传输情况下工 作,其目的是提供时间信息和实现流同步。RTP的典型应用是建立在UDP之上, 但也可以在TcP或ATM等其他协议之上工作。RTP本身只保证实时数据的传输, 并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制, 它依靠其伴随协议,即I盯CP协议提供这些服务。RTCP负责管理传输质量在当前 应用进程之间交换门控制信息。RTP会话期间,各参与者周期发送RTCP包,包 中含有已发送的数据包数量、丢失的数据包数量等统计信息。因此,服务器可以 利用这些信息动态的改变传输速率,甚至改变载荷类型。 RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最优,所 以特别适合传输网络实时数据。下面分别为RTP协议和RTCP协议进行介绍。
4.1.1

RTP协议原理概述

在进行音频、视频传输时,可以产生两个R11P会话,即音频和视频分开传输。 而对于每一个会话都有2个不同的端口用来传送R1甲实时数据和RTcP控制信息。 这样做的目的是因为接收者可能由于带宽限制,只能够接收音频数据,或只想接 收一种数据。在本课题中,将音、视频用一个端口进行传输。在I玎P协议中,I汀P
32

第四章基于vXwrorl(s的Im协议实现

的有效负载是位于RTP首部之后的,图4_l为Im首部格式。




bit

o-l



3 CSRC

4.7



9一15 Payload Typc

16-3l Sequencc Number

VelsioII

Padding

Count

eX圯nsiOn

MarIccf

固 时间戳(TilIl嚣taIIlp)
lU甲



同步源标志(ssRC)


酋部 贡献源标志l(CSRC) ………●●■… 可 贡献源标志n(CSRC)







下l艏f上卞1艏上



图4.1 KrP首部格式

前12个字节为RTP首部的固定字节,在混频器插入时才出现贡献源列表,这 些字段的含义如下: >Ⅵ:rsion:定义了RTP协议的版本号,目前的版本号为2。 ≯Padding:当该位设置为l时,表示该数据包末端包含若干个填充比特,填充 比特不是有效负载的一部分。填充字段的最后一个字节指明可以忽略多少个填 充比特。填充比特可用于某些具有固定长度的加密算法,如下章所要重点讨论
的CSA算法。

>eXtellsion:若该位设置为1,则表明在固定首部后还有一个扩展首部。扩展首 部格式如图4.2所示。
> CSRC

Count:指明了贡献源列表中CSI℃的数量,若超过OxOF,则按OxOF

计算,当没有混频器插入时,该位为Ox00。 >Marker:该位用来在比特流中标记重要事件,如帧边界。

>Payload聊e:定义了负载的格式,在本课题中由于是传输MPEG一2 TS流,故
该位为0X2l。
>Sequence

Nul】曲er:RTP包的序列号,每发送一个R]曙包,该序列号加1,接

收端可以根据序列号检测丢包率和重建包序列,序列号的初始值是随机的。

>Timest锄p:该值记录了R1rP数据包中第一个字节的采样时间,时钟频率依赖
于负载格式,并在描述文件或RTP负载中进行描述。 >SSRC:同步源标志,用于识别同步源。该标志被随机生成,以使在同一个RTP 会话中没有任何两个同步源具有相同的SSRC标志。 >CSRC:贡献源标志,CSRC列表中包含此RTP包中所有的贡献源。若贡献源

电子科技大学硕士学位论文

多于15个,则仅识别15个。cSRC标志符由混频器插入,并列出列出所有贡 献源的SSRC标志符。例如语音包,混合产生新包的所有源的SSRC标志符都 被列出。混频器的工作原理如图4-3所示。
bit O-15 由上层协议定义的标志符 16.3l 扩展首部附加信息长度

扩展附加信息l

RTP扩展首部
………………

扩展附加信息一

图4.2I汀P扩展首部格式

M.6—6半之
娩。t Ⅸ:47f

划j …l
@2

◇酯
舱坫l

◇№
数据格式:SSRC(CSRC)





E5:45 l

图4.3混频器工作原理

第四章基于vXWrorks的RTP协议实现 4.1.2

RTCP协议原理概述

I汀CP是RTP协议的控制协议,它向会话中所有成员周期性的发送控制包, 使用与数据包相同的传输机制。R1汜P提供以下四个功能: (1)基本功能是提供数据传输质量的反馈。反馈可能对自适应编码有直接作用, 并且p组播的实验表明它对于从接收端得到反馈信息以诊断传输故障也有决定性
作用。

(2)IHCP为每个lm源传输一个固定的标志符,称为规范名(CNAME),由于
当发生冲突或程序重启时SSRC可能改变,接收者要用CNAME来跟踪每个成员。

接收者还要用CNAME来关联一系列相关I∞会话中来自同一个成员的多个数据
流,例如同步语音和图像。 (3)前两个功能要求所有成员都发送l玎cP包,因此必须控制速率以使础呼成员 数可以逐级增长。通过让每个成员向所有成员发送控制包,各个成员都可以独立 的观察会话中所有成员的数目,此数目可以用来估计发包速率。 (4)R1rCP还有一个可选的功能是传输最少的会议控制信息。在某些松散控制会 话中,成员可以不经过资格控制和参数协商而直接加入或退出会话。
I玎CP协议共包括5种数据包类型,可以传送不同的控制信息,: >SR:发送者报告,描述作为活跃发送者成员的发送和接收统计数字:

>I淑:接收者报告,描述非活跃发送者成员的接收统计数字;
>SDES:源描述项,其中包括规范名CNAME; >BYE:表明参与者将结束会话;
>APP:应用描述功能。

图4-4为I玎CP数据包的基本结构。
bit O.1 2
Padding

3-7 Rcc印ti伽
COum

8.15
P∽l∞t Typc

16-3l L蜘gtlI

Vc体i∞
RTCP

数据包结构

发送此包的SSRC标志符 RTCP负载(SR、RR、SDES、BYE、APP)

图4-4RTCP数据包结构

>Ve稿ion:与R1rP协议版本相同,目前版本号为2:

>Padding:填充字节,作用与RTP中相同;

>Rec印tion聊e:各个源的l浪项的数量,可以为0;
35

电子科技大学硕士学位论文

>PacketType:I盯CP数据包类型,定义如下:
ellum

RTCP—P:ACⅪ玎”佃E{
SR=200,RR=201,SDES=202,BYE=203,APP=204

); >Lellg吐l:RTCP数据包的长度,以4字节为单位,但不包含第一个4字节长度,
可以为0;


SsRC:发送此I玎CP包的源SsRC标志。 一个会话参与者包的平均发送时间间隔丁应当和所在会话组中人数成比例,

这个时间间隔称为计算时间间隔。它由若干状态参数计算得到。算法如下: 1.如果发送者人数S会话总人数的25%,则r取决于此参与者是否是发送者,否 则发送者和接收者将同意处理。R1瞪的描述文件可能有两个独立参数(S,R)去顶发 送者与非发送者。此时,25%和75%只要换成S/(S+R)和剐(S+R)即可; 2.如果尚未发送过I玎CP包,则将最小时间间隔焉伽设为2.5s,否则为5s; 3.决定性的时间间隔乃=maX(瓦。,以×c),甩和c的确定如图4_5所示: 4.Z=乃×允,其中见一U(O.5,1.5); 5.r=r/化一O.5)≈Z/1.21828,补偿时间重估算法,使之收敛到比计算出的平均 RTCP带宽小的一个值。

图4.5参数n、c计算流程

这个算法产生了一个随机的时间间隔,并至少把25%的l玎CP带宽分配给发 送者,其余的分给接收者。若发送者超过会话总人数的25%,该算法将把带宽平 均分给所有参与者。 当收到一个参与者的I盯CP包时,若其SSRC不在成员列表中时,将其加入 SSRC列表;若此参与者确认有效,就把列表中成员的值更新,对每个有效的RTP 包中的CSRC执行相同的过程。
36

第四章基于vxWrorks的R1限协议实现

每收到一个I盯CP复合包,此参与者接收和发送的l汀CP包的平均大小

avg』cp_-size更新为pack吣ize/16+avg』cp-size木15/16,其中packet_Size是刚收
到的I玎CP复合包的大小。当包传输的发送时钟到时,参与者将计算下一个RTCP 包将要发送时的参与者人数,如图4—6所示。主要计算参数如下:
last

渊tT:当前时间;
neXt

rtcpT:l玎CP包发送的最后时间;

nc机:估计的下一个I玎CP包发送的时间;

i11itial:如果程序还未发送过RTCP包,则标记为僦se; cm曲mers:会话成员人数的当前估计;
pmeInbers:next

rtcpT最后被重新计算时,估计的会话成员人数。

图4-6发送时钟到时操作流程

4.2

IPTV机顶盒协议栈
目前业界有两种协议栈标准可供选择,一种是DVB推出的DvB IP协议栈【1 61,

另一种则是ISMA2.O标准。IsMA仅是为了Intemet上的流媒体服务而做的标 准,因此其目标是互联网上的低码率点播节目和低并发率。DVB IP则是媒体 行业通用的标准,其目标是基于宽带的数字视频广播,并且支持多种基本媒

电子科技大学硕士学位论文

体流和多种媒体编码标准,已经有十多年实际的大规模普遍性应用,得到全 球广播行业和互联网行业的一致认同。而ISMA的历史相对较晚,且在行业 上的认同度较低,也没有大规模的部署案例。故本课题采用DvB IP标准作 为IPTV机顶盒的协议栈。 DVP口的协议栈如图4.7所示,其中R1阳和l玎cP协议是建立在UDP之上的, 原因是视频传输流量大、持续时间长,而且具有很高的实时性,如果用TCP协议 传输,将导致比较大延迟,对于用户来说是不可忍受的。而UDP在数据传输的实 时性上优于TCP,且本课题采用的网络芯片可弥补UDP在丢包率上不足。本课题 是基于VXWbd(s系统进行实现,图4.7中的黄色部分是VXw.orl(S已经支持的协议, 包括IP、TCP、UDP、IGMP、DNS和DHCP协议。在本课题中采用的VxW|0rks矗” sparc操作系统,尚不支持RTP和RTCP这两个在视频传输中最重要的协议,所以 本文主要对这两个协议进行了实现(绿色部分)。
应用服务(Scrvice o侬:^ng) Ne坩orks
Provisjoni ng ID
age

SD&S DNS

s?黟箨I
黪缪9
7?:.j j

一彩i9鼍燃

i+,一’‘
,谤

m DVBST


荔MPE昏2TSE缸.
、哆 RTp。,7 叛;够,鳞::。彩锄;“,彩, UDP

R飘:彰
^趣
t,

.’致

DHCP

NTP SNTP

RTSP

H11PS

H下I甲

一:1

IGM口

,。一§‰,僦


TCP

TCP





DscP

物理层&数据链路层&HNS Etllemct&HNS 1394……

图"DVPm协议栈示意图
根据DVB IP协议栈,在本课题中将RTP数据和I汀CP数据封装在UDP包中
进行传输,如图4.8所示。
IP首部 数据包 20字节 8字节 至少12字节 188+刀字节 UDP首部 RTP首部 MPEG.2TS负载

p首部 控制包 20字节

UDP首部

RTCP负载 至少8字节

8字节

图4.8 R]四和R1℃P数据报传输格式
38

第四章基于Vx‰的砌瞪协议实现
4.3基于VxWorks的RTP协议实现
4.3.1

VxW.orks对网络协议的支持

在Vxw6rks系统中,网络协议子层允许网络协议通过MUx层发送和接收数 据报。网络协议在使用驱动程序发送和接收数据报之前必须绑定到驱动程序上,

调用MD(API函数nm)圆iIld()可以将网络协议绑定到网络驱动程序上。M1『X使用
提供给绑定函数的协议类型将协议区分出优先次序,这些协议类型还决定协议能 看见的数据报类型。MUX
PROTo

SN』u江类型的协议能够看见协议所绑定的任

一驱动程序处理的所有数据报,MUX PI的TO PROMIsE类型的协议只有在绑定 到一个驱动程序的所有其他协议都有机会处理数据报时才能看到数据报,而 MUX一.PROTo OUTPUT类型的协议能看到离开的数据报,却不可能看到来的数据
报。

和第三章讨论的驱动层一样,网络协议层也是以IIlBlk簇的结构为数据报的发 送和接收分配内存池。将协议添加到Vxwrorks中,必须实现协议层的4个API函
数,MUX与协议层函数调用关系如图4-9所示。

L所z砌f,斌)
s幻c七勋甜,如w欣加() 肋c掀c氓铆()?一
J触c危D加旭加()..卜

一所娥洳6加吠) 一m缎次P卯舰()
一m搬酷m,.()

蜊戤&甩吠)

一彤蹴揪嚣幼馊似)

◆聊缎朋C弧纠枷P7()
◆优“x膨C矗F厶4比f}么d故)

◆优纵批纠抛,() ◆聊删姗册()
◆所娥面c碳)
\Protocol

图4.9 MUX层API与协议层函数调用关系

将网络协议绑定到驱动程序必须使用muxBindO,在这个函数里面有协议层4 个函数的入口地址。这个函数的原型如下:
39

电子科技大学硕士学位论文
void.mllxBiIld{

char.pN锄e,
int

∥interf-ace n锄e ∥llIlitnlmlber

1lnit’

BCIoL(幸stackRcvRnl)(void幸,long,M_BLK二—D,LIi—HDR』FO?,Void事),
ST觚,S(?stackShu“虫)Ⅵ,rlRtll)(void?,Void?),
S尉(兀7S(奉stackR-est础Rm)(void?,void?),
void(奉st芒LckEn.or】良m)(、,0id?,void?),
longtype,

∥protocol锣pe

cha—pProtoN锄e,∥protocol n锄e
void宰pSpare,

∥usually仰U



在这4个API中,有关数据报传输的stackRcvR缸10最为重要,将重点讨论。

ⅦⅨ层使用该回调函数将驱动程序接收到的数据报转发到协议层,这个函数的原
型如下:
BOOL

stac鼢R衄{
∥-曲珊by mu)【Bind()
//protocol

void奉netCaLllbackId,
longtype,

type

M-BLKjDpNetBu£

//ne向mrk data

void木pSpareData//姐y data pointer )

4.3.2在VxW.orks上实现I盯P数据传输
在本节中将对如何在vxw甜【S上利用R1rP协议传输MPEG一2 TS流进行详细 讨论。下面对RTP和I盯CP协议的实现进行介绍。 首先,在rtp.h中定义相关的结构体如下:
typedef stmct tagI玎PHEADER

∥l玎P

fixed header


uint32 version:2; uint32 padding:l; uint32 extension:1;

∥must be 0x02

uim32

csrc

Coum:4:

第四章基于vxW-orks的R即协议实现
uint32 marker:1; uint32 uint32 uint32

pa),loadjype:7;

∥for~口EG.2,it

lT嘣be Ox2 1【17】

scqu铋ce:n瑚曲er:1 6;

thestamp;

uint32 ssrc;

)I盯PHEADER;

然后对R1曙数据的发送进行实现,流程如图4.10所示。对于将要发送的数据,

必须先进行封装成为Im格式。在Im首部中有3个内容是要动态计算的。一是
贡献源列表,在发送端应该设置好,该列表添加在R1’P固定首部之后;其二就是 某些视频流为了一些特殊的功能,可能会有RTP扩展头出现,这也必须进行指明, 否则接收端无法识别,从而导致解码错误;三是为了进行加密而使用的某些算法 要求字节补齐,例如下一章将要重点讨论的CSA算法,从而出现填充字节。在实 际的发送过程,还必须建立RTP会话的上下文,包括发送字节数量、发送包数量
以及所用时间等。

一是~



圣~ 撮[嚣
一射;

含~ 有~

~首一



葡一nl



图4.10 RTP数据包发送流程

4l

电子科技大学硕士学位论文

在利用RTCP协议传输控制信息时,通常以RTCP复合包的形式出现,即一个 UDP包中包含多个类型的RTCP数据包,如图4_11所示。
被加密时出现

图4-1l RTCP复合包的格式

以接收数据为例,当接收到uDP数据报时,首先判断RTCP数据报是否被加 密,然后通过RTCP首部中的payload t),pe字段分别对其后的每个I玎CP包进行识 别和处理,具体流程如图4.12所示。



图4.12 I盯CP复合包接收流程

这里将与RTCP相关的结构定义如下:
struct RTCPHEADER

//RTCP header


uint32 verSion:2; uint32 padding:1; uint32 uint32

rec印tiorl』ount:5;
packet_type:8;

uint32 lengch:16;

42

第四章基于Vx‰的R聘协议实现
);

m11)【BindO进行绑定。该函数将注册添加新协议到Vx呲系统所必须的四个函
数,见图4-9。其中stat敞cVI№O负责接收网络数据报,对于实现视频传输最为重
要,其流程如图4.13所示。

为了将R1rP和RTcP协议绑定到Vxwbrks系统上,必须使用MIⅨ层的API

\、丫

入的是否为IP数据

利用netBufLib将数据J
转换为非簇的形式

忽略或错误处理

分离出IP首部、UDP首 部以及RTP固定首部

IP首部20字节 UDP首部8字节 R,rP固定首部12字节

继续读取4个字节


迦唑竺多
土二
继续读取 l∞gm?4个字节 继续读取 15+4个字节

ⅣrP有效负载

图4.1 3 stacl承cvR恤()实现流程

该函数的主要作用是将由驱动层传入的数据报进行层层协议分析,从而得到有 效负载。由于IP层和uDP层首部均为固定长度,所以主要是对RTP层的首部进 行判断。另外,从MUX层传入的数据是按照mBlUclBll(/簇的形式组织的,所以 为了得到能够进行视频解码的数据必须使用netBufLib对传入数据进行重组。
43

电子科技大学硕士学位论文

4.4在VxWrorks上实现MPEG TS传输
4.4.1

TS流传输流程及实现

要在vxW-orks上进行MPEG.2 TS流的传输,首先需要加载网络驱动和协议栈,

包括Vxw.orks支持的(例如UDP)和新添加的协议(例如RTP)。对于网络驱动 部分,在第三章已经详细描述过,在机顶盒上电或复位时,会自动加载网络驱动。 而新添加的协议需要调用删ⅨBindO进行绑定后才能使用。

图4.14MPEG.2TS传输流程

第网囊丛r vxwo^s的RTP悱议实现

韭木谍堰巾.传输MPEG.21 s流的时供持店功两个任务,分别处理接收到的

数据报(udpsessionc嘲cc)以及时视频流的播放控制(Da诅pa小Th心ad)。
DmaPa山11l心ad的优先绒高十udpscssloncrcale.但I坷为没柯信号节而处于挂越状

态,直到udpse蚓oncmIc任务}皇!测到c.NO~A 9700的榴关寄存器具有足够空叫
时才释放该信号量:”j DalaPathTh化ad的缓;中K达到 写入c—N0、-A 定的比例的时候.将数据

9700的解复j玎器D㈣x巾,提!髓}}{桃颠和齿频信号进插放。这样可

以高技的完战Ts流的传输插放。黼4—14为传输MPEG.2 Ts流程。
4 4

2Ts流传输及播放测试
在vxworks机顶盒E进行视频传输涮试之前.必须先将测试环境设胃好,有

关T0mado的设咒参见第二章。对下c源代码,必须酋先编译出cbin文件通过半 口线下载到机顶盒中,并利用scnalApp进行视频传输的观测。在进行传输测试时, 用开源视频软件vLc作为服务器端,机顶盒作为接收端。对vLc的配段如下,
选择”文件”_)'’打丌-罔络串流”,然后进行如图4.1 5的设咒。

自#a法——…
Fm

r"


m阿叠五F——一#口厨=『~爿 ≈±广————————一 FI~爿
r.:: r r,

H弼TS r.…

r—r.-

r.

r:,

图4.15 vLC锐频传辅设置

由于在在接收端.机顶盒无浊自动抓包,斩以只能在程序中添加打印信息, 利}}I丁omado的虚拟控制台(Ⅵ咖al console)观察Ts流的传输情况。为了启动虚
拟控制台,首先在Tomado做如图4.16的设霄。
TⅡ;et

s…h。,“4’…r1~d M…t一…


F h“r

ct

T”‘“扣


芦crt^t e coni。h!lⅡ女

ted…ct

T。#n S

阿4.16虚拟控制台选项吐苜

启动vxwo^s系统和机顶盒.控F÷‘启动vxwo咄s的shel】.并柱其中输入
g”jptv运行程fF,如圈4?17所示。

电子科技人学硕士学位论文

C印"19ht

1 99

5一¨99

V1nd R1口er

Svst雠
1s

Inc

“十C。nstruct一/Dest~t—Strategy
一’gLlpt叫
圉4.17Ts传输程序的起始命令

AUToMATIC

在虚拟控制台中Ts流传输状志如图4.18所示。在实验中,截取了一个IP包

的部分Ts包来分析。从图4—18中可阱看到,每个盯P包拥有多个Ts包负载,
每个Ts包均以Ox47作为|一J步标志头,以这个Ts流为例,每个Ts包的第三个字 节0x45表明浚Ts包为视频流,ox“为音频流。c-NOvA 9700以改字段对Ts流 进行解复用。此外,每个RTP拥有个序列号.这样可以对网络传输的丢包率进 行计算.并且可以向发送端提供反馈信息。图4.19为在传输Ts流过程中发送的 发送者报告(图中oxc8字段),可以看到传输Ts流时的丢包率均为0,达到了在
电视机上播放的效果。

至垦坚蜜垦曼曼曼曼蔓曼舅垦窦量璺曼曼墼邈鬯鲨:羔=型型 B日05¨b 38…o
P H#ddc r:d5 DP

…‰舢
”ddl“g 蓝Rc

Hnad":lB

……n:2

F甄i至弘碴L_m。更曼!坐璺
4d c9 04

8”’垃05


d2∞5

3f#6


o'

一一一~
co

a日01

B^co

a8

01

6q

?1

:燃&二Ln哮£“


-J

n— ext……:false

,¥“#j口

…hBr:fdlse
es

CmInc:0

萎盎2:2;嚣P


t; {0 }0 i,4




c【


4 9 9



5 ..2

———————————————————J
8l asf718 b0 2e 25ie{d 4^]IIe 32 5c 56 4b 0l 44 78

11122S2263一
59 c日3b 8c e4 b8 3b,9 93 28,4 B8f5

f嘲蒜目i§;。。
::¥£E,《g≈.∞≠i
641c 3日,6 92 03l



ddlc/t■bc

a1



q4le af 2 5 af 4 8 83 55 75
ce

e8日1 9l

34畦cb盯9d
d4

cBf7 02i5

7}a
Bf 3


4 6 3

8i t!ai 2fl
c a

48∞dc c6 bdlslb d’f7 2c”23 d8 6c
dl B2 09 b2 73

84,'36 3e 5d
46 59

32I d7f^【 30,8【
da s0

8,u
2S
c1

B6,2‘6n cef,40帅3l 39【
bⅣ96
B,6c 43l 33 e7 481^h1 dq c2 c7fl 97

8^cc cO 00

4…11日F
32
ae

0f

80f8

de 6e

Be靠84

08

00

01




3l



e}2

4l}^1


7, Sf

bid

4S

b;2 a3…a
14

cel,8日aql’b3f5 3{93 8e12 d'cO 58 35 87 9a 90 3B

7f”46

73’{7 0q{51B 31 62 b0 bf a6 33 34

t7

B0日日0日毗1日23。'b 0S cf 2e 84 74 62 dd e4 eb,2 50盹75 a{b4
38fS 93 8 eB,,81 fh 4 0 d


9…
dd 61

6q

2e 75 5 b


3d19 8c日c

3e

69

7716 4a

93


71 h

79

9c

e'9f

e21 h

93 b 3 8 0

8^a5。ae 7 2

d4铀
7 8

l 4 2

7f 2



c11

2 S

轧州明嘏

2日2

0日d

帕竹呻扑



抽蚰叭¨

S#

”叫卧佣





钟明呻‰ %%”一卯 ∞曲‰腑

5_E

”_霎盯佃



∞吡沁帕
!l●

幽4.I 8利川vInual consok观察Ts流的RTP传输

第四章基于vxworks的RTP坍议实现

哑鸯笔
昀“呻


二j旦j刭
。驺匣

越型地面

蛆呻 :搴呻

拈¨

匕J_L
U∥

圈}19传输Ts流时的发送者报告

5小结
本章首先分祈了DVB IP协议栈以及vxworks操作系统对网络协议的支持.

并利用MuxA PI在Vxworks上实现了RTP,RTcP协议。在此基础上,对MPEG.2

Ts流进行了传输测试,实验结果证明Ts流能够在vxworks机顶盒上以RTP协议 方式正常传输。

电子科技大学硕士学位论文

第五章条件接收系统中的加解扰实现

本章讨论了PTv机顶盒中的条件接收系统,并重点研究了条件接收系统中的 通用加扰算法(csA),并将其嵌入到口T、,机项盒中,使机顶盒的功能更加完整, 并进行了传输测试和相关问题的讨论。

5.1条件接收系统原理及组成
条件接收CA(ConditionalAccess)系统是一个综合性系统【18】,系统涉及到多 种技术,包括加解扰技术、复用技术、智能卡技术等,此外还涉及到用户管理、 节目管理、收费管理等信息管理技术。 条件接收是数字电视加密控制的核心技术保证,为数字电视的运营管理提供 了必要的技术手段,使拥有授权的用户合法性的使用某一项业务,而未经授权的 用户不能使用这一业务。 条件接收系统是基于MPEG.2和DvB标准开发设计的,并符合广电总局制定 的数字电视广播接收系统规范。图5.1为条件接收系统的原理框图。

M咂G.晒——叫加扰器卜———————叫解扰器卜一一卜MPEG一稻

厂——]加扰劂£厂——]

控制字发生器
EcM

节目参数J控制字

节目参数I控制字

脒——H
授权 ———T‘

图5.1条件接收系统原理框图

条件接收系统的核心是对控制字(Cw)传输的控制。在采用MPEG.2标准的 数字电视系统中,与节目条件接收系统相关的有两个数据流:授权控制信息EcM

第五章条件接收系统的加解扰实现

和授权管理信息EMM。由业务密钥(SK)加密后的CW在ECM中传送,ECM 中还包括节目来源、时间、内容分类和节目价格等节目信息。对CW加密的SK在 EMM中发送,SK在传送前要经过用户个人分配密钥PDK的加密处理,EMM还 包含地址、用户授权信息。 目前的加解扰算法主要有三种,即DvB组织提出的CSA算法、ATsc组织提 出的3DES算法以及ISDB组织提出的Multi.2算法。本文采用了与DVB标准兼容 的通用加解扰算法(CSA)进行实现。

5.2通用加解扰算法及实现
通用加解扰算法【19】f20】(Common
Scralnbling

Algo订Ⅱ1111)是一种安全性很好【21】

的加解扰算法,主要由两大模块组成,即流加密模块和块加密模块。将这两个模 块进行级联构成整个加扰模块,加扰和解扰互为逆过程。图5.2为解扰模块流程图。

图5.2 CSA算法解扰模块框图

两个运算模块采用同一个64位公共密钥Ⅸ。这个密钥与生成的控制字C驴相
关,是加解扰的关键。在解扰算法中,首先把经过加扰的朋字节稻包的有效载荷

分成若干8个字节块(踢),而裕包的有效负载程度很可能不是8的整数倍从而
导致最后一个字节的长度不足8字节,通常把最后一个字节块称为剩余块
(Residue)。

Header为4字节的TS包分组层与ad印tion field字段,将不被加解扰。对于其

后的负载,每8个字节为一组(.溉)与(ca)进行异或产生中间变量(慨)。然
后再进行块加密操作,即佃;与由慨.1产生的块密钥进行异或,从而得到解扰TS

电子科技大学硕士学位论文

流数据,送到C.NOvA 9700进行解码播放。

5.2.1流加密模块
流加密模块由两个反馈移位寄存器和一个组合器构成,如图5.3所示。

图5-3流加密模块流程图

其中P、Q、C为l位寄存器,其余寄存器均为4位。流加密模块以两种模式 进行操作,即初始化模式和操作模式。初始化模式用于流加密模块的初始化设置, 操作模式则在每个时钟周期中产生2位的伪随机码,经过32个周期后产生出64

位的C8。流加密模块利用公共密钥C定和加扰嬲流负载的第一个字节进行内部寄
存器的初始化,即把所有寄存器清零。然后把公共密钥cK=‰,畸,…,‰,根据式(5.1) 装载到两个反馈移位寄存器彳=‰∥…,口9,,和君=60∥…,岛。』(o≤/≤3)中:

au={乞¨7三丢多,包,,={乞2“件7:丢?

c5.?,

弟五苹条件接收系统的加解扰实现

在初始化模式中,将通过式(5.2)得到反馈移位寄存器的输入:

cⅥ,=髓荔嚣王=鬟
(5'4)给出:


伶2,

在操作模式中,反馈移位寄存器A的下一位和更新后的寄存器值由式(5.3)和

f瓯oX,

操作模式 (5’3) (5.4)

‰=1Z。x。D。L,初始化模式
彳’=(瓦,口o,…,cz8)
反馈移位寄存器B的下一位和更新后的寄存器值由式(5.5)和(5.6)给出:

反={乏耋乏三;,。厶,荔篡茬蓑式 166


o岛o y o厶,初始化模式

V叫 c5.5,

6i:={125÷,,。}2::。。:。6k’'。、p 2=: 【(加,(跣),%,…,魄),p≠o
D^2≮ ”

f5.6l V叫 (5.6)

寄存器鼠y、Z、P、Q是由7个S.Box产生的。7个S.Box见表5.1,计算
规则见.表5.2。
表5.1流加密模块中的S.Box
输入
o(》000 0000l 000lO Oooll ooloo oolOl 00110 oolll
01000

& lO 00 0l Ol lO 11
1l

s2
ll 01 00
10


10


ll

& 】O 00 oo
01

& 00
0l


00

输入
10000 1000l 10010 1001l 10loo
10101

品 00
ll

岛 ll 0l

岛 01
ll

& Ol 00 ll 0I lO ll 00 lI 00
Il

岛 10 ll lO oo 00
ll

& lO ll oo
lO


01 oo ll Il oo Ol 01 10 10 1l 01
oo

00 0l
IO

01

ll

lO “ oo lO 0l IO ol 10 oo 0l ll 00 00 1l

10
ll

10
lO

ll 00 lO 10
Ol


ll

00 0l 1l oo lO 10 lO oo Ol lO 00 ll
lI

lO 11
ll

lO
1l

ll
lO fl

0l 10
10

ll oo 00 01
ll

1l 10 00 10 00 00 Ol lO 10 0l
li

“ oo 0I
OI

1l OI
Ol

10110 lOlll 1lOoo llool llOIO 1101l llloo 11lOl lIll0 11lll

Ol Ol 0l 00 ll
lO

oo 11 10 lO oo
Ol

00 Ol 11 10 01 oo 00 0l
10

10 oo 0l ll
ll

oo 00
Ol ll

01 lO 10 00 lI 01 0l Il
00

lO Ol Ol
lO

0100l OlOlO 010ll 01100 01101 0llIO 011“

0l 00 ll 11 00 10 oo

00
0l

10 00 0l 10 10 0l


lO Il

ll Ol
10

0l 00
10

ll Ol 00 lO

00 1l ll 00

10 ll oo lO

01 00 11

OI ll

10
01

0l

01

01

5l

电子科技大学硕士学位论文

流加密模块在组合器中计算每个时钟的两位伪随机码,寄存器E和F的值由 式(5-7)进行更新:.

cE,F,’={:;:::z+c%2。,:i:
表5?2工K Z、P、Q寄存器计算规则
Sl
口3.O

c5-7,

口0.2

口5.I

口6,3

口8.0


口8.1

&,o &.o &.o

岛.o &.o
S1.o

&.1 &.1 &,l

&.1 岛.1 岛.1

& & & & &
S1

口1.1

眈2
口1,0

口5.3

口6.O
口4,3
a32

饥3
砚.3 鳓上 眈.1
口12

砸.1
口1j


口52

口o-1
口32

口7.o



口5.0
口4.0 口6.1

口7,l

口82
a8.3



曲1
sln

口3.1

%.2
口7工

口2.0

口7.3



而寄存器D由式(5.8卜(5一12)确定:
D=EoZOB叫

(5-8) (5-9) (5-10) (5-11) (5—12)

骘甜=62,。0岛.。o 66,:o 68.3 噬Ⅲ=吃.00岛.。0如.30岛,:

召r=64.,o 67,:o岛,。o 64,。
彤埘=嚷.:0 65,,0吃,。0 67.。 流加密模块的产生的两位伪随机码由式(5.13)确定: 印-[(皿0 D3)“1】+(D00 DI)

(5一13)

最终经过32个时钟周期,流加密模块由公共密钥CK与加扰数据船生成中间变
量IB供块加密模块进行解扰。

5.2.2块加密模块
块加密模块的作用是根据公共密钥CK和由流加密模块产生的中间变量馏生

成解扰数据伽(如图5-4所示)。生成56字节密钥K由式(5—14)和(5-15)确定:
磕。'63=‰.….63 《f'....“f+63=p(《(卜I)'.一.“卜I)o oxofofofofofofofof
52

(5?14) (1≤f≤6) (5-1 5)

第五章条件接收系统的加解扰实现

其中p是对密钥进行重排,重排的对应规则如表5.3所示。然后根据式(5.16)进行

56次迭代运算,计算出解扰数据伽。
com臻册Key

图5_4块加密模块流程图 表5.3密钥重排规则
, O 17 l 35 2 8 3 6


5 48

6 28

7 20

8 27

9 53

lO 61

ll 49

12 18

13 32

14 58

15 63

p(f)


4l

16 23

17 19

18 36

19 38

20 1

2l 52

22 26

23 0

24 33

25 3

26 12

27 13

28 56

29 39

30 25

3l 40

『p(f)





32 50

33 34

34 51

35 11

36 21

37 47

38 29

39 57

40 44

4l 30

42 7

43 24

44 22

45 46

46 60

47 16

p(D



48 59

49|50


51

52 lO

53 5

54 9

55 43

56 3l

57 62

58 45

59
14

60 2

6l 37

62 15

63 54

p(力

}55+42

烈&,…^^卜‘二暑嚣嚣轰冀畿暑蕊尹垆八归约’仔峋
s7

os2

o八&0足),s4,墨0盯(&o后),s6)

r~7

其中%,’’.,岛即为流加密输出数据线,?..,冯,而/和盯的对应法则由表5—4和表5.5
给出。

电子科技大学硕士学位论文
表5—4/对应法蛆U

淤节


Oxol Ox02 Ox03

Ox∞
O,【3A oxE8 0xBE

Ox01 o'【EA O)‘27 Ox7A 0x69 O,【AB OxAl 0x19 Ox0A Dx3D oxC3 Ox9E O,【5D OxFC OxF7 OxD3

0,【02 Ox68 Ox6l 0x6D OxEF O’【AC OxF9 Ox42 O×9A 0】【E7 Ox34 Ox4D 0x37 Ox81 OxEO

蚴 喇
O'【FE 0,c9s Ox47 Ox03 Ox4c Ox4F Ox79 0x13 o,【33 0)coc 0xCI Ox4E 0xFI Ox2E OxDD 0,【2A

Ox0S OxE9 O,【36 Ox5l Ox48 Ox6A


ox88 OxE5 0,‘8F Ox4A O,【2F 0'【c5 0,(96 0,cc2 Ox2B 0,‘25 0x6F 0x75 0x76 0,【B3 OⅪ07 0,‘2C

0,【07 OxlA 0x70 O,‘F3 Ox84 0'【3C 0,‘56 OxF6 0x5E Ox4B OxA4 Ox5F 0,【D6 0'c9l 0'‘20 O,【F4 OxFA

Ox08

Ox09 0'【CF Ox06 Ox5B 西【B4 0,【D4 O,【39 o,正C OxlF o,【57 0xC7 0,【D7 Ox77 Ox0F O,【A6 Ox4l o,‘89

0xoA oxEl Ox82 Ox67 OxIO OxDS 0x93 OxlE Ox32

Ox0B

oxOC 0xBA 0x17 0,【cD 0)【Dc 0,【D0 Ox65 Ox53 O,【9C Oxl5 0)【90

Ox0D OxE2 0,【A3 Oxl3 O,【F5 0)【C4

0x0E O'‘33 0x26 Ox08 O,【5C Ox63 0xE4 OxDE 0x73 OxBC Ox50 Ox6B o)c02 Ox78 o,【AE Ox8B 0x9B

Ox0F Oxl2 Ox49 o)cC9 0’cC6 0x62 Ox58 0xBB Ox30 OxOE 0xoo 0,【05 OxB7 Ox60 O,【3l OxB9 oxCO


0)cA2 o'【CC Ox3F O)【3B OxE3 Ox8A Ox5A o,—b OxIC O,【3E O'【A7 o)c7D OxlD 0,【D3 0x8c


Ox7C o,【BD


Ox05 0’【06 0x07


Oxl6 Ox7I 伪【6C Ox7E Ox29 OxEB o】‘99 Ox8E 0,【F3 0)【Dl 伪【FB

蝴 删
0xcE Ox85 Ox35 ox40 0xED Ox74 o,【BF OxAO Ox7B 0x55 0xFD

0,m
OI【EE 0)【9D OxlB Ox44 0'‘8D ox23 0)【Ol 0)‘22 0x72 0'【52

Ox“ O“5
OxA8 伪【E6 Ox6E 0xDF

Ox傩
Ox09 0’‘oA Ox0B 0xoc 0’【oD Ox0E 0,coF


0】‘2D 西【D9 0%ll 0,c09 OxB5 0xCA 0,‘AF

Ox盯
OxB8 0xDA 0,【D2 o,【B1 O—堪 仍“3 0x80


0,【23 Ox2l Ox24 o)‘(’8 OxDB Oxl4 0,c66

0)【跖
0xFO 0xF2 0x59 Ox0D OxB2

o】【∞
OxCB 0】【9F Ox54 OxA9

0,出D



仍【髓
OxOB

其中水平方向为低字节,垂直方向为高字节。
表5.5盯对应法则

紊泞
0)‘∞
Ox0I

Ox∞
O)【lⅪ

OxOl Ox02

Ox02 Ox80 Ox84 0】cco

Ox03 OxS2 Ox86 0,【C2 OxC6 Ox83 Ox87 OxC3 0】【c7 Ox8A Ox8E OxCA oxCE Ox8B Ox8F OxCB OxCF

o,【舛
0】‘20 0,c24

0)【05 o,【22 0)‘26 o,【62 0)【66 0x23 0x27 Ox63 Ox67 0,c2A 0x2E 0】‘6A Ox6E Ox2B O'‘2F 0x6B 0x6F

o,c06 伽【AO OxA4 OxE0 oxE4 OxAl 仍【A5 OxEl 0,【E5 0xA8 0,‘AC 0xE8 0xEC OxA9

Ox07 0,【A2 OxA6 o,【F2 o)【E6 OxA3 OxA7 o)‘E3 OxE7


OxlO Oxl4 0)c50 Ox54 0)【1l 0x15

ox09 o,‘12 Oxl6 0,c52 ∞c56 Oxl3 Oxl7 0,【53 0,【57 DxlA OxlE Ox5A Ox5E OxlB 0xlF 0,【5B Ox5F

Ox0A Ox90 o,‘94 西cD0 OxD4 Ox91

0,c0B Ox9口 0,【96 0,【D哩 0】‘D6 0,c93 0,【97 0,【D3 0,cD7 Ox9^ 0)c9E OxDA 0,【DE 加c9B o,【9F 0,【DB 0)【c’F

仍cOC Ox30 o,【34 Ox70 Ox74 o,dl

Ox0D

0xOE

OxOF OxB2 OxB6 OxF2 0xF6 0,【B3 OxB7 OxF3 o】【F7 0'【BA 0)【BE oxFA 0,【FE 0xBB 0xBF OxFB OxFF

妇02
Ox03 Ox04

删 删
Oxol Ox05


O,【316 0x72 Ox76 O,【33 0】【37 Ox73 Ox77 0x3A 0,‘3E Ox7A Ox7E Ox3B o)【3F 0)‘7B Ox7F

Ox鼬
o)出4

0】粥
0,【42 Ox46 Ox03 Ox07 Ox43 Ox47 OxOA Ox0E Ox4A


0“l
0“5
Ox08 OxOC Ox48 Ox4C ox09 o,【OD Ox49 Ox4D

0x∞
Ox64 0,‘2l 0,【25 ox6l Ox65 ox28 ox2C 0)‘68 o,【6C 0)【29 0x2D Ox69 Ox6D


oxF4 0xBl

0】【“
Ox8l 0x85 o】cCl oxC5 Ox88 o)‘8C 0xC8 OxCC Ox89 0x8D o,【C9 oxCD

Ox∞ ox∞
Ox07 ox08 Ox09 Ox0A Ox0B OxOC o,‘oD Ox0E OxoF


OxDl o,【D5 0x98 0)【9C OxD8 西cDC 0,c99 ox9D OxD9 OxDD

ox”
Ox7l Ox75 Ox38 Ox3C Ox78 Ox7C Ox39 0'【3D 0x79 Ox7D

岫5
OxFl OxF5 0xB8 o)【BC 0xF8 o)【Fc 0'【B9 OxBD o'‘F9 0】‘FD

O妤1
o'【55 oxl8 OxlC O,【58 0'【5C Oxl9 oxlD 0x59 O)【5D

0,认A
oxAE 0xE^ OxEE

O“E
0’coB OxOF Ox4B Ox4F

伪晴B
0xAF 0)‘EB 0】【EF

O,出D
o,【E9 0xED

其中水平方向为低字节,垂直方向为高字节。

5.3基于CSA算法的条件接收系统测试
5.3.1 MPEG.2

TS流解扰流程

网络数据包流经过协议层的解析后得到被加扰的MPEG.2 TS流,此时若没有 公共密钥进行解扰将得不到原始视频数据,所以未经授权的用户无法看到发送端

第五章条件接收系统的加解扰实现

发送的视频流。一个完整的MPEG.2 TS流解扰流程入图5.5所示。
加扰船流

解码播放 图5.5 MPEG.2 TS流解扰流程 MPEG.2

TS包的前4个字节为传输流的分组层信息,不能被加扰。与加解扰

相关的分组层字段主要有同步标志位syno”e(1bit)、调整字段控制位

电子科技大学硕士学位论文

ad印tion』eld_connDl(2bit)以及加密控制位仃.舭spon_Sc脚nbling.印n仃Dl(2bit)。下面
分别对这3个字段进行介绍【冽:
>syllc

byte(同步标志位)

该值固定为Ox47,起到同步TS流的作用。在解扰Ts流时,必须首先找到该 标志位才能取得有效负载。
>adaption field

coIltrol(调整字段控制位)

该字段用语指示本传送流分组头部是否跟随有调整字段和有效负载。在进行 解扰时,若无有效字段将不被解扰;若存在调整字段,则必须确保调整字段不被 解扰。调整字段控制值如表5.6所示。
>traIlsport scrau匿lbling

con仃Dl(加密控制位)

该值用于指示传送分组流有效负载的加密模式。在空分组及未加密时该字段 应设置为oo;若传送流被加密,该字段由应用程序设置为01、10或11。加密控 制值如表5.7所示。 当TS流解扰完毕后,C-NOv久9700将对TS流进行解码和解复用,形成可以 输出的视频流和音频流进行播放。
表5.6调整字段控制位
ad叩tionjeldjontrol 值
oo 01 lO 1l

表5.7加密控制位
tro燃portjcrambtingjomrol 值
00 01 10 1l

描述 为ISO/IEC未来使用保留 无调整字段,仅含有效负载 仅含调整字段,无有效负载
调整字段后为有效负载

描述
未加密 用户定义 用户定义 用户定义

5.3.2实验结果及分析
如果TS包中没有调整字段,在解扰时只需将TS包的前4个字节去掉,对剩 余的188.4=184字节解扰即可。由于184正好是8的倍数,所以在CSA解扰算法 中没有SR项。而如果TS包包含调整字段,则可能有残差项SR。下面对这两种情 况分别进行实验及讨论。 a、TS流中不包含调整字段 选择一个没有调整字段的原始TS流,部分TS包如图5.6所示。

第五章条件接收系统的加解扰实现
固.qh F:、测试序列、Ts流序列、曲c-9T25.t=(104858胬:l∞) 圈巨亘Ps工,s工

冒逗鲴PIDs。5

total

;白凰P功0】c0000(0),39T(0.71%)=>P^T
i由.、囵P功0,【0020仨12),50924(91.3魄)=>iso/iec I∞18—2以“o {宙翊P工D 0x002l∞),2742“.9络)=>iso,iec 13818—3姐dio i由.i蛋P工D ox003260).39-r(0.Tl鼍)=>P稿T l宙亘基P功oxlfff(8191),1316眨.36鼍)=>HVLL 宙,l函Packets,55TT8 total
0 l 2




0x0J

0x0

OX0 0 2 0
0 X0 0 2 0 OX 02O 0

0x0,0x0 0'c0.0x0

0 O



4 S 6 T

0x0,0x0
OxO,0x0

0 X0 0 2 0
0 X 02O 0

0】c0,0x0

0 XO 2 0 0
nXO 2 1 0

瞅q
O。'0

oxl

0x0,0x0 0x0,0,c0

O譬0a20
0 X 020 0

口口口口口口口口口



呶呶呶呶吮咄如呶阪 盯盯盯盯盯盯盯盯盯

嘛呶蚴蚴蚴蚴嘶呶蚴0

咴k阪阪呶嘶蚴呶嘲仉m∞仉仉仉仉m仉

~呶 呶眈呶 瞻阪呶]~U¨』q“J叫¨■叫¨■

瞅呶阪呶眩呶阪瞅喊

图5-6部分无调整字段TS包

其中~个TS包(packet 5)的数据如下:
47 00 20 10 07 60 51 29 c9 d8 33 86 13 48 40 3b f8 84 1a 1b b9 29 2ff3 fc bc 22 50 40 03 oo ob cO 18 90 c0 70 00 72 59 6l
aa

3c 08 1d 76 01 Offl cl 07 6 48 co 82 05 20 15

91 30 19 be 5c 49 72 0b 80 Oc 46 90 6d 80 40 19 88 64 22 10 6e fb 63 77 21 06 48 08 49 bf7f88 ba a4 7d 70 01 10 08 40 16 80 9c 00
ec

e7“fd

03 24 74 90圆6a eo 50 06 38

b4 25 1c 34 afb7 08 fd ba b8 af76 c1 oo ob 40 11 80 84 0l f8 0e 83 08 65 bO 15 fd d0 1a 58 61 65 62 d2 84 7c f8 23 fc b6 f7 98 04 3ff7 04 lfbb 04 d0 Od 00 3a 20 81 82 Od 9c 03 30 de 08 1f82 43 Oc 00 50 03 oe 39

在可课题中的公共密钥设置为:
CK=0000011111100000000l10110000001011001001111000000100010111101llO

该TS流经过加扰后的数据如图5.7:
密I函PIcket毛2T88∞totd }口0:吸4T,0】【0,0如,0xo,0】【0020, 卜口l :0x4T,0x0,0x0,0x0,0x0020, 扣、口2 :cbc4T,0砒0旭0x0,cbc0020, b口3 :0x4T,0】【0,0】c0,0x0,0x0020, 卜口4 :阪4.r.0x0,0x0,0x0,0】c0020, 争…口5 :0x4。r,0x0,0x0,0x0,0x0020, p口6 :0x4T,0】c0,0xo,0x0,0】【0020, ≥口7 :0】c47,0,c0,0】c0,0x0,呶0020, 卜口8 :0x4T,0,c0,0x0,0x0,0bc0020,
;….

L L

3 4 5 6 T 8

b“b“b

阪呶吸眩呶阪呶阪呶 b“

眩呶吲呶呶呶弧呶嘁9■b

图5.7无调整字段加扰结果

其中packet5被加扰为:
57

电子科技大学硕士学位论文
47 00 20 98 8a 4b ob 8d 29 df 80 fd 46 d4 a1 05
ec ec ec

f4 6c 79 e3 06 3d 09 19 94 48 b5亿Of 33

23 89 d4

ca

58 14 a9 39 77 Oc 3l 93 e9 6d 7e 01 3f4c dd 26 7b 40 20 e3 88

cO c6 22 53 9c 89 a1 d1 46 a9 43 8 36 97 9d bc侈07 a7 68 90 72 52 8c 76 f9 a6 75
aa

aO 3e 64 01 a6 5f6a 5d 13 01 89 52 51 68 11 8c b5 32 7c 79 c5 91 a7 c8 1f2b 7a c8 96 53 ob c9
cc

d0 fe 09 b5 62 db el d2 39 c6 98内a7 a5
cc

Oe“b6
13
ee

e2

ac

Offa 41

ce

63

7c 82 dc 66 79 26 d7也fb 9fde 67 1b 97 1b 3l 80
ee

c3 70 7a 8d 92 69 11

12∞ce

f8 f4 b1 a4 73 Cb 7e

39 27 82 c0 2b 72

将该加扰的TS流传送入mTV机顶盒,启动VxWbrl【S系统对其进行解扰播放 正常,解扰数据和原始数据一致。 b、TS流中包含调整字段 选择一个包含调整字段的原始TS流,部分TS包如图5.8所示。
:cbc4L

0】c0,嘁0x0.蝴.0】c0,0xl,0xd
oxe

:ox47,oxo.oxo.o】【0.ox0020,oxo,l ox3,l

:0】c4T,0x0,0】【0,0x0,0x0020,0x0,0x1.0xf

:0,c4T.0x0.0x吼010,0x0020,0x0,0x1.漩
:0x4T,0x0,0x0,0】c0,0x0020,0x0,0xl,0x3

:0x4T.0x0.0x0,0】【0,0】【0020.0x0,帆l,0x0 :0x47J 0x0,0,c0,0】【0,0x0020,0,c0,0】cl,0xl

:0x47,ox0,ox0,ojc0,o鼍002l,oxo,Iox3,l 口口口口口口口口口 佑坞"培均∞烈缆约
:0x47. 0x0,

oxb 0x4

0x0,0妯,O蚓0020,Ox0,

0x1.

图5.8部分含调整字段TS包

注意,第16和22个TS包包含有调整字段,将会导致残差项的产生。根据 CSA算法,若有残差项出现,必须首先将残差项补齐为8字节,但CSA算法并未 给出如何补齐残差项的方法。所以在本文中将对这个问题进行讨论。 (1)将残差项不足8字节的部分用O补齐
以第16个TS包为例,经过加扰的数据为:
47 00 20 be 05 lO 01 55 d7 52 fc 35 Cb eb b4 06 2e 6a 41 e7 03
ce Cc

f7 64 79 c7 4f3b 96 91 32 56 d5 30 81 74 9c 01 74

f8 c8 7a af∞63 d5 2a e5 8e bd 16 Ofdc 9fba 2f 8f32
cc

2b 93 95 07 1e ad b2 9c 39 94 c1 7c 98 5d 4a f3 9e a8 72
5l cl
ea

5f61 7l fd 60 6d f7 81 6e

86 c9 18 04 73 e9 f6 71 dd

ae

48 80 87 5d 8b 58 d8 Oe 20 f4 03 56 f6 a9 3b 8b

5fc4 65

a4“5e

44 76 65 Cd cf 96 1a da dc 6d a7 90 9c 53 64 db 55 6d Oc a2 56 7fef

73 52 35 6b 14 eb 2d 05 80 4e 8b 75 16 ao 85 60 35 c7 25 76 2e 88 8a 8b 70 7e 9f 73 dO 7c e2 8f9b 5b lf2a 96 2ffa 0b 2a c0

可见该TS包有5个字节的调整字段,所以有效负载长度为188.5.5=178字节,最 后的残差为2孔cO,故残差项Slb{2a,c0,oo,oo,oo,00,00,OO)。解扰该TS流得到
58

第五章条件接收系统的加解扰实现

JF确的数据。
(2)周期延拓补齐

仍然以第16个Ts包为例,则残差项sR=f2≈c0,2钆co,2^co,2≈c0}。对其 进行解扰播放偶尔会出现方块,如图5—9所示。

图5.9解扰方块效应

从实验结果可知,对于有残差项的Ts包,只能选择补零对齐的方式,向不能

采用周期延拓的方式。

54小结
本章主要研究了机顶盒中条件接收系统的加解扰算法,并进行了实现。由于 csA算法的加解扰互为逆过程,所以在这一章中重点讨论了解扰算法。但在实际 工作中也对加扰算法进行了实现。在解扰算法中,关键是要获取Ts包的有效负载 长度,并对残差项进行补零对齐,这一点在csA算法中井未明确。在实际加解扰 过程中还必须考虑加扰控制位、同步标志位等传送流字段的影响。

电子科技大学硕士学位论文

结束语

本文在实时操作系统Vxw.orks上研究了PTV机顶盒的软硬件结构,重点在 网络驱动、网络协议和条件接收系统加解扰算法进行了设计。综合应用嵌入式编 程技术、VxW_or】I(S MⅨAPI接口、芯片驱动技术、网络协议技术等,开发了基于

VxWb幽操作系统的口Tv机顶盒。该机顶盒能够解析基于DⅦP协议栈的
MPEG.2 TS流,支持RTP实时传输协议,且丢包率很小,完全不影响视频播放质

量。此外,它还支持对Ts流的解扰,实现对用户的权限控制。 本文完成的主要工作包括: (1)分析ⅢTv机顶盒的软硬件结构,完成网络控制芯片的选型:
(2)对T0mad0 VxW-0rkS集成开发环境进行了深入学习,并搭建了ⅢTv机顶

盒的开发平台;
(3)根据VxWorkS MlⅨ层的API编写了SMSC9115网络芯片驱动程序; (4)基于DVB IP协议栈,重点研究了RTP协议,并将RrP成功绑定到VXW|0rkS

中,实现了TS流按照RTP协议的传输。 (5)讨论了机顶盒的条件接收系统,重点研究并实现了通用加解扰算法。 本课题利用C-NOVA 9700为VxWbll(s系统的SPARC CPU和MPEG.2解码芯 片,通过SMSC9115网络芯片的网络数据报的解析得到TS流的有效负载,从而完 成硬件解码播放。在网络传输过程,本问选用了R1T实时传输协议,保证数据视 频流传输的实时性。另外,本文还在MPEG.2 TS流进行解码之前进行了解扰控制, 对用户的权限进行管理提供了条件。 IPTv是一个比较新的概念,在本课题完成之时时,有关IPTV和IPTV机顶盒 的标准都尚未出台,希望本文能够给以后从事相关研究的老师和同学提供有价值 的参考资料。通过对本课题的一点一滴的探索,使我在很多方面都受益非浅,增 强了我独立思考和解决问题的能力。由于时间和水平所限,对于口TV机顶盒的许 多功能都还有待完善:
(1)DVB

IP协议栈尚未完全实现,本文仅实现了RTP协议,其余附加协议

可以更好的支持口TV机顶盒功能,例如I玎SP协议、SD&S协议等; (2)改用支持最新编码格式H.264的解码芯片可以增加带宽的利用率。

致谢

致谢

衷心感谢我的导师刘钊教授,我的成长与刘老师的教导、培养息息相关。刘老 师严谨认真的治学态度,宽广渊博的专业知识,平易近人的为人风格使我受益非 浅。从刘老师那里,我不仅学会了许多知识,更重要的是学到了精益求精、学无 止境的治学精神。在本文完成之际,我要对我的导师刘钊教授表示深深的敬意和 最诚挚的感谢! 深深地感谢王帅老师(博士)、已经毕业的成苗硕士、吴士奇硕士、张永东硕 士、梅平硕士、吕超英硕士、王良军硕士,同届的段鹏硕士、张霍硕士、罗鉴珂 硕士、蒋虎硕士、邹鑫馨硕士、田广合硕士以及正在美国S姐Diego攻读博士学位 的陈虎博士。难忘与他们相处的美好时光,感谢他们经常在学术问题上与我进行 讨论,促进我学业的进步和提高。在此,对他们一并表示感谢。 另外,还要特别感谢肖忠博士、林辉硕士,感谢他们对课题的支持和对我的帮
助。

我的成长离不开电子科技大学老师的培养和教导。感谢电子科技大学给予我知 识和帮助的各位老师以及与我一起学习成长的各位学友。 我特别要将最诚挚的谢意献给我亲爱的父母,我将永远感谢他们的鼓励和无微
不至的关怀。

最后,感谢所有曾经帮助和关心过我的人们。

61

电子科技大学硕士学位论文

参考文献

【1】Gilbert

Held.Und咖凼I喀D1V

AueIbach Public拍。璐,2006

[2】G啪rd O’蹦scoll.N懿t G铋e豫_tion口Tv Senri嘲And Technolo西髂.晰ley-B1ackwell,2008
【3】W懿SiIIlpson,Ho啪m Ghcllfield.PTV And htemct
Video.F0∞I Pr鼯s,2007

【4】金伟.PTV机顶盒现状与趋势的研究.电信科学,2006,第三期,28~3l 【5】C.NOVA.AViA_固.9700 Set.T叩Proc懿sor vohme 3,Funcdonal

Des呻tion.2003

同季伟,葛振斌。何青,陈春明.口Tv关键技术及应用.机械工业出版社,2007

[7】邝坚.T锄ad0厂弧Works入门与提高.科学出版社,2004
【跚Wind RiVer.Ⅵ测’od【s

Prog跚嬲er’s Guide 5.4.1999

【9】Wind硒vcr.T0lmado用户指南.清华大学出版社,2004
【1 0】SMSC.LAN911


Highly E伍ci钮t

Sin醇eoip 1 o/1 00 Non-PcI Em锄et C0n订0n%2007

【11】Wind黜v盯.VxWorkS网络程序员指南.清华大学出版社,2003 【12】吕佳颜,杨志义,於志文,王灵敏.Vxwod【s增强型网络驱动程序(END)的分析与实现.计 算机应用研究,2005年第4期:200 ̄202
【l 3】Wind砌V既Net、)l,orl【Protocol T00lldt Uscr’s(hide
5.4.1 999

【14】H.Schulz血ne,GMD Fol(I塔etc.IUP:A T舢sp0哦Protocol f.0r Real—Time Applicatio船.RFC
1889,1996.1

【15】H.Sdml蕊me,C01蚴lbia Univ哪姆如.RTP:A T眦spon Protocol for Real-T妇e
Applications.I强C3550,2003.7

【16】Mf Sch萏衙.DⅦ-P Starldardisa60n.2006.5
【l 7】ETSI.T啪sport of MPEG2
2007.3
TS B舔cd DVB SeⅣices
oVer

IP BaLsed

NeMod口.TS

1 02 034,

【18】吕树民,李海林,钱蒙东.浅谈数字电视条件接收系统.内蒙古科技与经济,2004年第
19期:81—82 【19】Ralf-Philipp Weinma胍,Kai Win.AnalySis
oftlle DVB Common

Scr锄bling

Algorithm.

【20】麦胤,陆明莹.DVB通用加扰算法的研究及实现.通信技术,2007,No.1l,v01.40,297~299
【2 l】Wei“,Dawll Gru.Sec晡够Anal)rsis
IIltenlational Symposium 0n of the DVB COIrlmon

S删ing

Alg确恤n.First

Data,P—Vac),锄d E-Commerce,ISDPE2007:271 ̄273

[22】钟玉琢.运动图象及其伴音通用编码国际标准——MPEG.2.清华大学出版社,1997
62

附录

附录

下面是【Pw机顶盒与sMsc9115实物图

附图IⅡrrv机项盎实物圈

附图2c.NOv^9700和sMscLAN9115实物凹

电子科技大学硕士学位论文

攻硕期间取得的研究成果

参加项目:
2007.07 ̄2007.09

JPEG静止图象压缩系统 基于BillDCT的自适应分块的图象压缩算法 基于VxW6d(s的口TV机顶盒系统

2007.1眦008.02
2008.02 ̄2009.02

论文发表:
Cai JiIl'Liu Zhao.An

Image CoII】【pression Algorithm Based

on

Adaptive Block
on

P砒ition

aIld BiIlDCT.Proceedings of me Second

Int锄ational

Symposium

Test

Automation&hls觚lIllent撕on,voI.2,p.770 ̄p.773

IPTV机顶盒网络通信接口软件的设计与实现
作者: 学位授予单位: 蔡进 电子科技大学

本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1463520.aspx


相关文档

IPTV 机顶盒系统设计与实现
IPTV机顶盒软件系统的设计与实施
一种IPTV机顶盒的软件在线升级方案设计与实现
IPTV机顶盒与终端管理系统接口要求-最实用的规范
IPTV机顶盒升级方案的设计与实现
IPTV机顶盒与终端管理系统接口要求20080908
一款IPTV机顶盒的设计
基于STb7100的IPTV机顶盒设计与实现
基于EM8620L的IPTV机顶盒的设计
基于EM8620的IPTV机顶盒设计
电脑版