艾克思威讯科技(深圳)有限公司
STB 软件开发
数字电视机顶盒,由于人们通常将它放在电视机上面,所以称之为机顶盒(STB: Set up
Box)。
因为数字电视节目的开播,对于卫星数字电视,有线数字电视,和地面接收数字电视,这些
都需要电视机里面内置有前端有变频,解调成标准的 TS,MPEG2 解码,可是现有的模拟电视不
具有这些接口,为了让现有的模拟电视用户可以享受到数字电视节目,尽快的推广数字电视,
就有了数字电视机顶盒的产生.
它可以把卫星直播数字电视节目、地面数字电视节目,有线数字电视节目传送到现在
的模拟电视机的用户。通过安装 DVB 数字机顶盒,在我们家里的普通电视机,就能收看
到无论音质还是画面都能达到 DVD 效果一样的数字电视节目,并且还可以享受到 EPG(电
子节目指南)/Subtitle/Teletext 等数字服务。
1 STB 的组成;
现在的机顶盒已经高度整合,系统由前端的 NIM 模块,SOC,存储器和其他的一些输入输出
接口组成,因此现在的机顶盒结构简单、成本比较低。
1, Network Interface Module
NIM 根据 SOC 的命令,调谐到相应的频率, 进行高频 RF 信号的处理,并将相应频点
上面的数字电视信号变成标准的 TS 流送入 SOC;
2,SOC
SOC(system on chip) 是 机 顶 盒 的 核 心, 它 主 要 由 CPU CORE 、DEMUX 、MPEG2
DECODER 、AUDIO DECODER、NTSC/PAL/SECAM 解码器、RGB 编码器和一些扩展接
口等组成。它从只读存储器中读取启动所需的自举程序,将程序和数据存储在随机存储器中。
通过系统总线的传送,微处理器能将有关功能模块有机的结合,完成整个系统的功能。
SOC 完成系统前端 NIM 控制,SI 信息的处理,完成换台,解码、解压缩以及 处理事物
和控制等各项工作
3,Flash 里面存储了 STB 所运行的程序,有的还存储了节目,播放的参数等等
4,SDRAM
系统启动后,将程序搬到 SDRAM 中进行运行;
5,Audio DAC/Video out
将视频信号通过编码输出 DVBS 信号,YPbPr,VGA,S-video
将解压缩后的视频数据传送给 NTSC/PAL/SECAM 解码器。同理,音频解压缩器也能
从控制系统接收到解压缩算法。从 NIM 接收到的被压缩过的声音数据经过解压缩后,即可
变成调制或未调制的立体声信号,再传送给 TV。
1
艾克思威讯科技(深圳)有限公司
2 开发模式
主/从机的模式,我们的工作电脑,PC 就是主机,而机顶盒就是目标板,从机;程序的编辑,编译都
是在主机上面完成,再通过一定的方法如(JTAG,串口,并口,ROMTER)将程序 DOWN 到机顶
盒里面,然后让里面的 CPU 进行执行;机顶盒执行的过程中会通过串口打印程序的一些信息,
从而完成跟踪调试.
例如:1,现有大部分的的机顶盒的开发模式是:
我们的机顶盒通过 JTAG 口与电脑的并口连接在一起,串口与 PC 的串口连接在一起;
开发时,.我们编辑,编译程序,然后通过 JTAG 口下载到机顶盒的内存中,然后让机顶盒执行
程序,通过串口查看打印的信息.从而了解程序运行的情况,进行跟踪调试.
2,SUNPLUS 的 LINUX 机顶盒
我们预先在 FLASH 里面烧写了 BOOTLOADER,启动 LINUX,然后启动 NFS 服务器,
通过 NFS 服务器进行调试.
3 软件架构:
在 SUNPLUS 的平台上面,我们的架构设计如下:
整个系统的组成由操作系统,驱动, 移植层,和 API,GUI,DVB 中间件模块和上层 API 组成,为
了使上层的的中间件模块能够跨平台运行,能够使系统结构清晰,这些模块能够很快的移植一
个程序到另外的平台上.
1,节目表,FE 的管理;
FE,频点的管理,对于一个频点的管理我们采用了 16 位的索引;第一字节在 DVB-S 代表卫
星的索引,第二字节代表频点的索引;
LIST 也分为两层,一层代表索引,指明了各个节目在节目仓库的位置.
有节目的分类排序,删除,SKIP,LOCK,各个字节目表的添加,使用情况.
2,SI 信息的处理(SCAN,EPG,Teletext,Subtitle);
从 DEMUX 出来的数据,只有一个接口:SECTION ARRIVER CALLBACK;在这个函数里
根据数据的 PID 号,TAB 号,实现所有的数据的拷贝,然后向 SI 分析管理任务发送消息,然后 SI
分析管理任务就根据信息的不同,执行相应的函数,例如:SISetionPAT,SITablePAT.在这些函数
里面将相应的数据解析出来,并分配不同的空间.
在我们这里播放一个节目时只存有相应的 FE 和 Program number,所以播放的流程如下:
2
艾克思威讯科技(深圳)有限公司
锁台,分配 CHANNEL ID,分析 PAT 表,确定 PMT 表,SDT 表,分配多个 CHANNEL 去分析;
最后在判断节目是否加密
3,CI/CA 模块的实现
在需要的访问加密的数字电视节目时就需要使用条件接收系统.
4,GUI 部分;
现有的机顶盒采用的是 Microwindows,下一步采用一个可以跨平台的,具有 XML 功能的
设计方案,有同事正在 STARTED;类是的还有 MINIGUI,但是 MINIGUI 现在的版权已经变更
为 GPL 和需要交纳 LISEN 费用的厂家.
6,实时操作系统和操作系统移植层和 API 的实现;
实时操作系统负责本地资源和网络资源的管理,提供基本的操作功能和设备的访问控制。
引入操作系统移植层和 API 的概念是为了可以快速方便的移植到其他的系统上面,并且
是系统的结构清晰,提取所有的操作系统一些共性,写成标准的代码,实现这些代码后,在这里
面我们不用关心 LINUX 线程/进程的不同,PSOS,VXWORKS 这两者之间有什么区别,我们只
要有一个任务的概念就可以了,消息的概念;那么我们的程序就可以完整的移植到其他的操作
系统上面去.
现在我们已经实现并使用的函数包括:了任务的创建,删除,睡眠,挂起; 消息的创建, 发送
消息,获取消息,查询消息;及一些标准的 C 库函数如 MALLCO 等.
条件接收系统设计
有条件接收基本原理
CAS 的组成包括有:用户管理系统 SMS、业务信息生成系统 SIG、节目管理 PMS/SI 编
辑系统、节目调度处理 EIS、用户授权管理系统 SAS、条件接收 CA 等。主要有两大块:
一块是管理用户的 SMS,一块是管理节目的 CA。CA 主要分为两大部分:一是信号加
扰部分,它是通过一个随机码发生器所产生的随机码(称为控制字 CW)来控制加扰
器对信号的加扰;二是加密部分,要使加扰的信号在接收端成功地解扰,接收端也必
须要有和加扰端一模一样的控制字来控制解扰器,所以,要将前端的 CW 传送到接收
端,如果直接传送会很容易被黑客截获而使 CAS 失去作用,为此,要对 CW 进行加密
传送,这种加密是一种多层加密机制,从而增加 CW 传送的安全性,直接对 CW 加密的
第一层所产生的密文称为授权控制信息 ECM,通过复用器与加扰的码流一起传送,ECM
还含有节目类型、节目价格、节目大小等信息,因此 ECM 是面向节目的管理信息。对
CW 加密的密钥称为工作密钥 SK,SK 通常又叫月密钥,每月换一次,每换一次 SK,系
统都要从新对所有用户进行授权。第二层加密是用称为节目密钥 PDK 对 SK 进行加密,
所产生的密文和从 SMS 获取的授权指令通过 SAS 生成的授权信息组成授权管理信息
EMM,EMM 还含有智能卡号、授权时间、授权等级等用户授权信息。这些信息主要是
完成对用户的授权,因此 EMM 是面向用户的管理信息,EMM 对用户在什么时间看、看
什么频道进行授权,它也通过复用器与加扰码流一起传送,以上这些组成了 CA 最基
本的加密系统。
为了防止密钥在传送中被黑客截获,一般采用双密钥法,对每一用户分配一对密钥,
其中一个是使用者本人掌握的密钥称为私有密钥,它只用于解密,通常这个密钥都存
储在用户智能卡中。另一个是公开密钥,它只用于加密,两个密钥通过算法结成一一
对应的关系,只有通过对应的私有密钥才能解开用公开密钥所加的密。这样我们根本
不需直接传送密钥,因此具有很高的安全性,这是一种称为数字签名的认证过程。一
般私有密钥(PDK)都存储于用户的智能卡中,所以在接收端,EMM 的解密是唯一的,
即一个智能卡只能解密与其有关的 EMM 信息,解密后就可以得到用于解 ECM 的所有信
3
艾克思威讯科技(深圳)有限公司
息,再通过解密 ECM 得到 CW,将 CW 送到机顶盒内的解扰器完成解扰工作,这些解密
过程都在智能卡中的解密系统完成。授权采用中心寻址与智能卡共用的方式,其工作
过程如下:
机顶盒检测到 DVB 码流如果是加扰码流,则驱动读卡器工作,将智能卡管理程序调入
中央处理器启动运行,将智能卡的卡号读出。在传送流中寻找 PSI,在 PSI 中找到条
件接收表 CAT,根据 CAT 表中给出的 EMM 包标识码(PID),找到相应的 EMM 信息,然
后将智能卡的卡号与 EMM 内的授权信息中的卡号进行校对,也就是进行寻址比较操
作,如果校对无效,在屏幕上将有提示你还未经授权不能收看的相关信息显示。如果
校对成功则将 ECM 和 EMM 传送给智能卡,在智能卡内调用解密程序(为了增强 CAS
的安全性,整个解密过程都在智能卡里进行),用智能卡中的私有密钥(PDK)对 EMM、
ECM 进行逐层解密得到 SK 并得到 CW,将 CW 送回机顶盒完成对节目码流的解扰(如图
1 所示)。同时将密钥 SK、授权时间、授权等级等授权信息存储在智能卡中,以便以
后对授权的控制,今后的解密和解扰就直接调用卡中的 SK 就可以了,不需要重复执
行授权过程。此时系统只需传送 ECM 就行了(因为一般来说每 5--10 秒 CW 就换一次,
所以 ECM 也要每 5--10 秒发送一次),只有当运营商要更新 SK 时才开始一个新的授权
过程,通常每更新一次 SK,运营商都要用几天的时间(具体可根据用户的多少来确
定)不断发送 EMM 给用户进行授权,如果有些用户由于其他原因在授权期间没有开机,
可通过电话联系,由前端确认后,向该用户发送 EMM。
改变授权有以下方式:
1、 在前端的 SMS 发现某用户时间已到,则向 CA 发出指令关闭授权,通过发送 EMM
来更新 SK 并重新授权。
2、 利用智能卡中储存的授权时间与下行信号中的时间进行比较,如果下行信号的
时间不在授权时间的区间内,则清除授权。
3、 利用智能卡中储存的授权信息与 ECM 中的附加参数进行比较,如果不符合节目
接入条件,则清除授权。
为 给 用 户 在 节 目 订 购 方 面 提 供 更 多 的 选 择 , CAS 除 了 最 基 本 的 节 目 定 期 预 订
(Subscription) 外 还 提 供 了 分 次 付 费 收 视 PPV(Pay-per-View) 、 即 时 付 费 收 视
IPPV(Impulse PPV)和计时付费等多种授权方式,这些授权方式都附于节目上,并用
附加参数来描述(预约类型、PPV 费用、预览时间等),一般,它们像控制字那样被携
带于 ECM 信息中。在智能卡中存有多个私有密钥,每个密钥都对应一种授权方式,每
一种的授权方式都对应一种 EMM
条件接收基本原理示意图
4
艾克思威讯科技(深圳)有限公司
综观整个授权的过程,CAS 的安全性取决于智能卡的保密性,智能卡必须要具有可靠的防
复制性能。
对于不同的节目产品包(由单个或多个节目组成的一个或多个 TS 流),就有不同的 ECM 和
EMM 与之对应,每一个节目产品包对应一个 ECM 和多个 EMM(视订购的用户而定,对于
每一个产品包来说,有多少个订户就有多少个 EMM)。
二、SMS 与 CA 的关系
在 CAS 中,授权工作是由 SMS 向 CA 发出相关指令,由 CA 来完成授权信息的产生和传送,
SMS 是通过 CA 来进行用户控制的,而对节目按照不同的组合打包,生成不同的产品也是
由 SMS 发出指令通过 CA 来完成的。SMS 实际上是一个运营管理软件平台,它提供一个完
整的、有效的管理和支持系统,实现对运营的综合管理。它集用户管理、收费、账务、客户
服务、统计分析、决策支持、客户关系管理等功能于一体,是运营商开展付费电视业务和其
他增值业务不可缺少的工具。SMS 采用三层体系结构:
1、 数据库:存储用户、财务、用户终端设备等信息。
2、 应用服务:根据运营等进行节目产品打包和定价,机顶盒、智能卡的初始化定义。
3、 客户端应用程序:进行用户管理、财务管理、运营策略管理等。
SMS 与 CA 是密不可分的,它将 CA 对节目的加密方式赋予直观的产品形式而面向市场,而
用户的购买,体现为特定智能卡的授权行为。
另外,我国的节目管理是采取多级授权分级管理的办法,这就要求 SMS 与 CA 有统一的接
口和数据格式,各级 SMS 之间具有统一的接口协议(如 IP)以方便联网。
普通用户访问加过密的电视节目有两种方式,第一种为同密技术(CA),各个营运者之间
关于条件接收的商业协议,统一的加扰算法,这种方式适用于 CA 系统嵌入式到接收机的情况;
第二种就是在机顶盒和模块之间定义一个标准接口,通过这个接口实现 CA 功能和更多其他
的专有功能.这就是 CI,多密技术,这个方案允许电视用户使用不同厂商的模块而观看不同厂
商的电视节目.
一种是同密方式,这种方式允许在 DVB 传输的一套节目中携带由不同的 CA 系统生成的多
个 CA 信息给不同 CA 系统的机顶盒用户,在同密方式下,CA 系统设计了一个通用加扰算
法(CSA)系统供 MPEG 复用,所有 CA 厂商可以开发各自不同加密的 ECM 和 EMM,但
都要遵循通用加扰算法。信号源可以由某一个 CA 系统产生的控制字(CW),通过一个通用
的加扰算法系统去控制加扰过程,这个 CW 再由不同的 CA 厂商的加密器产生出授权控制信
息 ECM,会同它们不同的 EMM 和数据流一起复用进 TS 流中。在同密方式中所发送的每项
业务均带有适用于各种不同 CA 系统的加密信息,因此需要有一个同步器来统一时序。在接
5
艾克思威讯科技(深圳)有限公司
收端机顶盒中已集成有 CSA 系统,在智能卡中根据授权信息将 CW 解出来,再送回机顶盒
中通过 CSA 解扰数据。现有的机顶盒都带有 SMART CARD,内置有解扰器,因此在这种模式,
系统实现的成本很低。
下面多密技术的实现
另一种称为多密方式,DVB 多密技术的基本思想是将解扰、CA 以及其他需要保密的专有功
能集中于一个可拆卸的模块(PCMCIA 卡)中,机顶盒(又称主机)功能可以趋于通用化,
其中只包含调谐器/解调器、MPEG-2 解码器、解复用等必须的设备,具有接收未加扰或已
解扰的 MPEG-2 视音频、数据的功能,在主机和模块之间定义一个标准公共接口(Common
Interface, CI)进行连接和通信。这种方案的好处在于,同一机顶盒可接收任意 CA 系统加
扰控制的节目,当选择更换 CA 时只需换用相应的 CA 模块,机顶盒可以保持不变。一般机
顶盒扩展有多个公共接口,可同时与多个 CA 模块相连,并自动或在人机交互的基础上识别
哪个 CA 模块应处于工作状态。采用多密技术,从用户角度讲,不会因购买一家 CA 的机顶
盒而与此 CA 绑定死,用户还有选择其他 CA 服务的可能性,同时 CA 系统的更新升级也十
分方便。
这是一个典型的单模块实现接口,多密标准里面是可以实现多个模块的接口的.
实现多密的系统里面,需要在主机和 CAM 之间定义两个公共接口:第一个接口是 MPEG2 TS
流接口,他包括物理层,链路层,传输层,高层次;,另外一个就是控制命令接口用以传输模块和机
顶盒之间的相关命令,它一共定义了六层:物理层,链路层,传输层,会话层,应用层;
当然,一个特定的主机设计可以同时支持多个模块,这时 TS 流接口的连接应采用雏菊链
(Daisy-Chain)形式,而主机必须同时保持与所有各个模块之间的单独的命令接口。
2.2 命令接口分层
命令接口载有模块中的应用和机顶盒主机之间通信的信息,在模块端和主机端的命令协议基
本对称。命令接口在逻辑上可采用分层结构,以使得设计、实现更加容易,层次结构如图 2
所示。
6
艾克思威讯科技(深圳)有限公司
图 2 命令接口分层
物理层协议主要负责与硬件相关的操作,包括:模块的连接和拆除、读取/设置模块状态、
模块的初始化、发送/接收数据等。
链路层协议主要完成两个任务,一是拆分和重组 TPDU(Transport Protocol Data Unit)信息
包,以使其适合物理层初始化时协商达成的缓冲区大小,二是多路复用来自各个传输连接的
数据包。如果有 1 个以上传输连接当前有 TPDU 数据要发送,链路层将轮流发送每个 TPDU
的块,这样所有的传输连接将公平地分摊到可用带宽。
传输层协议采用命令-响应协议(Command-Response protocol),由主机启动查询或数据发送。
传输层主要用于维护主机和模块之间连接建立和拆除的状态过程。传输层的连接只能是在主
机和模块之间,是单一主机连接一个或多个模块的体系结构。目前的 DVB 标准不支持模块
之间的直接传输层连接,不支持多个主机之间的连接。
会话层协议为应用提供了利用主机或模块资源的机制。资源是一种在应用层封装的功能单
元,可以由主机直接提供,也可以驻留在其他模块中。资源由资源标识识别,资源标识包括:
资源级别、资源类型、资源版本号,每个资源支持一套对象以及用于对象交换的协议。与某
个资源之间的通信是通过建立与这个资源相关的会话来实现的,资源由和资源之间建立会话
的应用所使用,一旦会话建立,应用可以根据定义的协议交换对象并使用相应资源。
应用层使用一整套基于资源的协议,要求主机必须提供的最小资源集包括资源管理器、应用
信息、CA 支持、主机控制、日期/时间、人机界面(Man-Machine-Interface,MMI)和低速
通信资源。
主机的系统软件框架如图 4 所示,采用分层体系结构,易于实现和移植,比如,为了实现某
些供上层应用调用的特定功能,CI 驱动可能会需要用到设备驱动层中的其他部分,如解复
用、AV 解码、I
2C 总线控制驱动等。
7
艾克思威讯科技(深圳)有限公司
CI 驱动程序内部的软件规划主要包括命令接口的具体设计,可参考多密技术标准中的建议
(如图 2),依次实现各层协议。
3.3 接口上解扰过程的实现
考虑到实现节目的解扰是通过公共接口技术进行条件接收的最基本和最重要的一项功能,本
文就以多模块连接状态下对“CA 支持”资源的操作为例,分析整个解扰过程。
主机与模块之间的公共接口连接可以扩展成多个,当主机同时连接多个模块时,主机可根据
选定的业务来选择合适的解扰模块,这是通过模块中的 CA 应用与主机 CA 支持资源之间的
一系列命令交互来完成的,主要包括 CA-PMT 和 CA-PMT-Reply 两个对象的协议操作。
基本流程如下:主机向 1 个或几个连接的 CA 模块应用发送 CA-PMT 分段,以指示用户选
择了哪个基本流以及如何找到相应的授权控制信息 ECM(Entitlement Control Message)。每
个 CA-PMT 分段中包含了选定业务的基本流信息,如果用户选择了多个业务,主机就需要
发送多个的 CA-PMT 对象。如果主机要求,应用将用 CA-PMT-Reply 作为应答响应,表明
本模块是否有解扰能力并列出解扰所需的条件信息,以便主机选择出用于解扰的模块。
在这个过程中,主机有两次选择机会:
(1)主机可以选择是向所有连接的模块应用发送 CA-PMT 分段,还是仅仅向与选定的基本
流中的 CA 描述子具有相同的 CA-system-ID 的应用发送 CA-PMT 分段。
如果在发送任何 CA-PMT 之前,先按照模块与选定业务的 CA-system-ID 的匹配进行一次预
处理,以缩小下一步操作的对象范围,这在模块种类和数量较多的情况下,能明显减少接口
上的数据通信量,提高接口处理的效率。
(2)主机可以强制指定某个或某几个甚至全部的模块直接去进行解扰,也可以先查询一遍
所有具有潜在解扰能力的模块(比如满足上述 CA-system-ID 筛选的模块),分析模块返回的
CA-PMT-Reply 信息,来选择自认为“最合适”的解扰模块。
主机强制所有经过预处理筛选后的模块都直接去解扰选定业务,这种方案的好处在于:当码
流依次经过各个模块时,如果模块能够解扰其中的部分基本流,则立即解扰,并将相应包头
中的 2 比特加扰控制域的值修改成不加扰;如果模块不能解扰任何基本流,则保持码流不变,
原样输出,这样就能保证最大程度上的解扰。这种方案的前提是主机能支持的不同的基本流
可以由不同的模块去进行解扰,但是这种方案的缺点是没有应答信息,很难分析不能解扰的
8