微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于Android的机顶盒CAS系统的开发

基于Android的机顶盒CAS系统的开发

时间:08-21 来源:互联网 点击:

摘要:详细阐述了机顶盒CAS终端子系统的设计过程,提出一种CAS子系统软件框架,并介绍了Android系统的NDK环境搭建以及上层应用(JAVA)与底层(C语言)的无缝衔接,并成功地把CAS子系统移植到Android系统中。实验证明,此CAS子系统可以稳定地在华为H3716C平台(Android平台)上运行。
关键词:Android;机顶盒;CAS;NDK

引言
CAS(Conditional Access System,条件接收系统)是一种加密系统方法总称,通过这个系统可以实现网络控制、收费、加密、管理等诸多功能,广泛应用于视频点播、电子银行、网上超市、远程教育等诸多环境。其与数字广播系统独立,但对商业的数字广播系统来说,是其成功运营的基础、增值服务的命脉,CAS系统须保证未授权用户不能收看加密节目,而授权的用户可以收看加密节目,同时可以对单用户进行识别、控制,消除传统网路电视的盲目性,是我国数字网络改造的核心部分。CAS系统由两部分组成:前端加扰管理系统和终端解扰子系统。机顶盒属于终端设备,本文介绍的CAS系统属于终端解扰子系统。
任何一款复杂电子设备,都离不开一款强大的操作系统支持,而 Android系统起初是Google公司为移动设备开发的一套操作系统,但由于其开源、拥有OHA联盟强大的后盾,而且具有独特的系统架构以及Linux内核底层的稳定支撑,很快有许多其他产品厂商都纷纷开发出 And roid平台,使其成为目前在大型嵌入式设备上最流行的操作系统。目前华为、中必等为代表的机顶盒厂商都在纷纷推出基于Android平台的机顶盒。本文详细介绍了机顶盒CAS终端子系统的设计过程和移植到Android平台上的过程。

1 终端解扰子系统解扰过程
数字电视节目都是通过介质(地面、电缆、卫星)以TS流的形式传播的。TS流依据MPEG-2协议被分成长度188字节的ES包,每一个ES包都有自身识别的PID号,根据PID号的不同分成各种功能不同的表,其中对CAS系统有用的是ECM表和EMM表。EMM(Entitle Manager Message)表为授权管理信息表,里面主要包含每个用户授权的节目数和对应的SK(Service Key)业务密钥信息。ECM(Entitle Control Message)表为授权控制信息表,里面含有对解扰最重要的CW(Control Word)控制字,取得对应节目的CW之后,就可以交给安全模块解扰,解扰后的明文CW就可以用来解扰加密节目,整个解密过程也就完成了。
CA解扰的过程如图1所示。

2 终端子系统设计
考虑到应用设计与底层硬件智能卡进行交互,且Android系统提供有NDK套件工具,使得底层的其他语言的API与Android应用层JAVA语言无缝对接,所以可以把CAS以库的形式存放到Android中间层,供Android上层GUI调用。CAS系统的设计用到上述的ECM表和EMM表,但EMM表和ECM表要从PSI中的PMT、CAT表获得其PID号。图2、图3是用专用工具截取的一段PMT和CAT表里面的CA信息。


从图2可以看出此TS流中的CAT表中含有ca_descriptor描述符,并可以得出ECM的ca_pid为0x0562。而从图3中可以看出,PMT表中含有的EMM表的ca_pid为0xoffe。此时就可以设置操作demod来分配filter通道,过滤出EMM、ECM表的section_descriptor_table,来取得CA有关的信息。如果用户要流畅地播放节目,机顶盒(Set_Top Box,STB)就要不断地获得密文CW送入智能卡中,从整个解码过程中可以把整个CAS终端子系统分为3个模块:EMM解析模块、ECM解析模块、智能卡任务模块。Android系统采用的是Linux内核,保留了posix的pthread、message、memory pool等通用的API,所以在设计3个模块时,可以使用pthread_create()创建任务模块;使用msgget()创建消息,实现3个任务模块的通信与同步。
2.1 EMM任务模块
由图1可知,TS流经tuner调谐,把高频载波去掉,再经过demod解调,就可以根据PES包的PID号和TABLEID号设置其里面的filter。一般来说一个demod含有多个filter,在系统启动开始就会分配PAT表的filter,有PAT表的setction descriptor的描述就可以得到PMT表的PID,此时同样分配PMT表的filter。如果此节目是加密节目,在其段描述符中就会含有EMM表的PID号,一旦找到EMM的PID号,就可以为EMM表分配filter。如果EMM里面的CA信息版本号和智能卡存储的CA信息版本号一致,就舍弃此EMM;如果不一致,就重新改写智能卡里面的CA用户的信息。EMM任务模块流程如图4所示。

在EMM任务模块中,通过CAS_EMM_TASK()函数创建任务,在CAS_EMM_TASK()中调用CAS_EMM_ReceiveMessage()函数来接收EMM filter发送过来的CA信息。在没有EMM流时,EMM任务一直挂起,而一旦filter发现EMM表,就会把EMM的CA信息发送到EMM任务中,同时关掉filter,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top