大显DC-618C数字电视机顶盒的软件设计与应用
1 引 言
数字电视的崛起在我国被誉为广电产业的第三次革命,它巨大的市场潜力正逐渐凸现出来。数字传输方式因其采用了先进的技术,具有传统的模拟传输方式所无法比拟的优势,取代后者已是不可阻挡的趋势。目前,数字电视正在世界范围内迅速地推广,作为接收数字电视的新兴家电,机顶盒正悄悄进入千家万户。
机顶盒(STB,Set Top Box)是广播媒介实现数字化后接收端的重要设备,一般置于电视机上, 从功能来看,机顶盒主要分为上网机顶盒、数字卫星综合接收解码器、数字地面机顶盒,以及有线电视数字机顶盒,这些设备由于具有很好的网络功能,因此也成为信息家电的代表。
我们在这里讨论的主要是指有线电视数字机顶盒,它的基本功能是接收数字电视广播节目,同时具有所有广播和交互式多媒体应用功能。
数字电视机顶盒的技术含量非常高,它集中反映了多媒体、计算机、数字压缩编码、加解扰算法、加解密算法、通信技术和网络技术的发展水平,在设计技术上主要包括机顶盒硬件技术和软件技术两大部分, 其中,软件技术占有更为重要的位置。除了音视频的解码由硬件实现外,包括电视内容的重现、操作界面的实现、数据广播业务的实现,直至机顶盒和个人计算机的互联以及和Intemet的互联都需要由软件来实现。
我们在这里介绍一款基于STi5518 芯片的DC-618C型数字电视接收机顶盒的软件设计。
2 DC-618C数字电视接收机顶盒的软件设计
2.1实时操作系统基本原理
STi5518解码芯片本身的性能比较强大,可以满足应用对硬件的要求,关键在于软件对硬件的管理上,随着应用的复杂化,一个嵌入式控制系统可能要同时控制和监视很多外设,要求有实时响应,有很多处理任务,各个任务之间有多种信息传递。如果仍采用原来的程序设计方法存在两个问题,一是中断可能得不到及时响应。处理时间过长,这对于一些控制场合是不允许的,对于网络通信方面则会降低系统整体的信息流量。二是系统任务多,要考虑的各种可能也多,各种资源如调度不当就会发生死锁,降低软件可靠性,程序编写任务量都会有大幅度增加。
实时操作系统(RTOS)是一段在嵌入式系统启动后首先执行的背景程序,用户的应用程序是运行于RTOS之上的各个任务。RTOS根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在RTOS支持的系统中,每个任务均有一个优先级,RTOS根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。在编写程序时,可以分别编写各个任务,大大减小了程序编写的工作量,而且减小了出错的可能,保证最终程序具有高可靠性。
实时多任务操作系统,以分时方式运行多个任务,宏观表现为多个任务同时运行。任务之间的切换以优先级为根据,只有采用优先服务方式的RTOS才是真正的实时操作系统,时间分片方式和协作方式的RTOS并不是真正的实时,RTOS的主要功能模块有调度和中断处理(为了优化用汇编编写)、任务管理、事件管理、定时器管理、报文管理、循环队列管理、资源管理、固定存储块管理、规范的UART管理和自动掉电管理等,这些也是标准的RTOS所应具有的基本功能。RTOS也体现了一种新的系统设计思想和一个开放的软件框架,工程师可以在不大量变动系统其它任务的情况下增加或去掉一个任务,一个项目开发的过程中,可以有多个工程师同时进行系统的软件开发,各个人之间只要制订好规程和协议即可,既缩短了开发时间,又降低了最终软件产品对于具体某个开发者的依赖性。为RTOS设计的成熟和通用的任务可以以库函数的形式供其它人继续利用,这一点和C语言的设计思想一致。
2.2 应用于DC-618C机顶盒的OS20操作系统
内嵌于Sti5518内部的CPU--ST20,使用的是ST所独有的嵌入式实时操作系统OS20。
OS20操作系统是一个模块化的高性能的实时操作系统, 它具有较强的实时性和多任务能力,这主要取决于它的任务调度机制,从调度策略上来讲,OS20采用分优先级调度策略(默认为16)和时间片轮转调度策略 ——即同一优先级下多任务处理采用时间片轮转处理方式。
OS20系统的内存开销也很小,核的开销大约为:内部只占600字节,每个任务占用的内存:内部24字节,外部36字节。
此外,OS20操作系统还具有任务切换时间短等特点
2.3 DC-618C机顶盒的软件架构设计
依据软件工程的原理,DC-618C机顶盒软件采用从上到下的层次化设计,依次由易到难,由具体到抽象和由软件到硬件,主要包括如下几层:
1)应用层:应用层是控制整个机顶盒操作的高层代码,也是需要程序员自己完全实现的代码。在这一层中实现各种各样的功能,包括初始化各种外设、创建任务、设置节目频点、实现用户输入输出操作等。对于与第三方的软件合作,包括网络浏览器,也嵌入在应用层中,应用程序可以直接调用驱动层的应用程序接口(API)。第三方的中间件可以通过驱动使用层来调用应用程序接口。所有的应用层组件在功能上能通过操作系统移植层来访问实时操作系统。
2)驱动层:驱动层通过调用硬件抽象层,来管理各种外设和内部子系统模块,将这些模块的功能抽象化和屏蔽化,向上一层提供应用层程序接口,使得应用层的操作直观和简洁。应用层组件通过调用驱动层API来控制系统硬件功能和服务。这些驱动完成普通的低层任务,如控制传输解复用和音视频解码等。
3) 硬件抽象层:对DC-618C的所有硬件的操作必须通过修改寄存器来实现,DC-618C将所有寄存器与接口统一编址,使得通过软件对寄存器的操作非常简单,硬件抽象层正是完成这一功能.可以说,H.A.L.是驱动层的子集,负责直接编辑硬件。驱动层提供通用的低层功能,同时H.A.L.在硬件上实现这些功能。为了响应驱动层的调用, H.A.L.执行特定的芯片函数,编辑芯片寄存器来完成一个特定的功能,它只与一种特定的芯片相对应,所以当改变硬件平台时,只需要改变相应的硬件抽象层。
2.4 DC-618C机顶盒的应用层设计[/NextPage]
机顶盒除了实现接收来自有线网络的数字电视信号外,还应具有EPG(电子节目指南)、软件在线升级等功能,我们在这里主要谈谈这几种功能的实现。
2.4.1 EPG(电子节目指南)的实现:
2.4.1.1 EPG简介
电子节目指南,是指在符合MPEG-2的TS传输流中插入DVB标准定义的SI信息,使机顶盒的综合接收解码器可以从TS流中提取出节目提供商播出节目的列表和播出参数,以直观的形式显示给数字电视用户。EPG信息由两部分信息组成:基本EPG信息和扩展EPG信息。基本EPG信息是指完全可以用《数字广播业务信息规范》中的网络信息表NIT、业务群关联表BAT、业务描述表SDT和事件信息表EIT进行描述的EPG信息。扩展EPG信息是指在基本EPG 信息之外,通过数据轮播传递的EPG信息,这些信息的入口采用EPG映射表(EMT)进行描述,信息的内容被封装成具有多级目录结构的文件系统,称为扩展 EPG内容信息(XECI)。基本EPG信息和扩展EPG信息中的EPG映射信息均采用表传输方式;扩展EPG信息中的扩展EPG内容信息采用数据轮播方式传输。
在数字电视节目的播出过程中,可以加入辅助的SI信息,供机顶盒解码器的开发者来实现五花八门的电子节目指南的导航功能。EPG提供的信息主要包括:传送信息的天数(例如一周)、传送频道的数目和名称、传送的节目数、节目提供商的标识和名称、传送网络的信息(网络标识和网络名称),其细节信息还包括:节目名称、节目的简单介绍、节目的开始和结束时间、节目的主题、节目的类属、节目的观看分级限制(例如对某个年龄段进行限制)。利用机顶盒收看数字电视节目,用户通过EPG不仅能够接收普通的电视节目、广播节目或图文电视节目,而且,还可以查看感兴趣的信息:按节目分类(如音乐节目、体育节目、电影等)检索节目;按节目提供者检索节目;未来一段时间内节目播出表;视频网络中节目播出情况等信息。
2.4.1.2 PSI/SI信息及其功能
MPEG-2中的传送码流是根据ITU-TRecH220、ISO/IECDIS13818-2和ISO
/IEC13818-3协议定义的一种数据流,其目的是为了在有可能发生严重错误的环境下进行一道或多道程序的编码数据的传送和存储。这种错误表现为比特值错误或分组丢失。传送流的速率可以是变化的或固定不变的。在任何情况下组成的原始流可以是变化的或固定不变,在这些情况下的语法和语义限制是相问的。传送流速率由节目参考时钟 (PCR)字段的位置和数值决定,通常对于每个程序都有自己的PCR字段。传送流中有关PID的信息及各PID之间的关系包含在PSI (Program Specific Information:节目特定信息)中,MPEG-2解码器将使用PSI信息来自动设置解码所需的各种参数。PSI信息使用4个表来定义码流的结构: PAT(Program Association Table:节目关联表)、PMT(Program Map Table:节目映射表)、NIT(Network Information Table:网络信息表)、CAT(Conditional Access Table:条件访问表)。
MPEG-2在PSI中提供了不少有关节目组成和相互关系的信息,从而使得在接收端可以正确地对TS流进行解复用。但是这些信息在实际使用时仍然显得不够,为此在DVB标准中采用SI(Service Information:业务信息)对PSI信息进行了进一步的扩展。PSI中的信息基本上都是与当前码流相关,即它们所涉及的内容都与当前码流中的部分信息相关;而SI信息可以包括不在当前码流中的一些服务和事件,允许用户进行更多的选择和了解更多的其他服务。SI信息表主要有以下内容:
BAT(Bouquet Association Table:业务群关联表)、SDT(Service Description Table:业务描述表)、EIT(Event Information Table:事件信息表)、RST(Running Status Table:运行状态表)、TDT(Time and Date Table:时间和日期表)、TOT(Time Offset Table:时间偏移值表)、ST(Stuffing Table:填充表)
业务信息(SI)是用来描述传送系统,传送内容和广播数据流时间表等的数据,是补充MPEG-2节目说明信息(PSI)的附加数据,这些数据帮助综合接收解码器(IRD)自动调谐,给用户提供附加信息,使IRD能自动设置可供选择的业务。
头端系统每隔一定周期将重复传送SI信息,对于最高速率为100Mbits/s的传送流而言,重复传送SI信息的最小间隔为25毫秒。这样,对于新开机的用户,在很短的时间内,就可以接收到SI(业务信息),构成EPG(电子节目指南)所需的各项条款。
2.4. 1.3 EPG信息的提取
一般而言,PAT表的PID号为“0x00”,解复用器工作总是通过寻找PAT表开始。PAT给出了构成传送流中各个节目业务的PMT(节目映射表)的 PID,同时也给出了NIT(网络信息表)的PID号。根据PID值及对应的Table ID值可以从流中解出相应的PMT、NIT、SDT、EIT等信息。机顶盒接收端的解析主要负责这些SI数据信息的重建。信息内容应与PSI和SI表中的信息相对应,它可按照Network-Transport Stream-Service-Event的分层顺序描述,同时内嵌Transport Stream-Program(Service)-Element Stream的分层顺序。SI数据信息必须按照一定的数据结构进行存储,这样才能方便、快捷地对其进行检索和数据的提取。特别是对于运行于机顶盒的实时操作系统中的EPG,需要对用户的交互进行实时的动作,所以对响应速度的要求很高,SI数据库建立的好坏对其性能有重要的影响。SI数据主要有:网络信息、传输流信息、业务(节目)信息,业务的事件信息等,并且大量的信息都是通过描述子来传输的,所以可用树状链表来存储数据,构成从网络、传输流、业务、事件的树状结构,传送不同信息的描述子用继承于同一基类的描述子类来表示。
网络信息表传送本网络以及与此有关的其它网络的一些信息。每个网络都有唯一的识别符,网络编码请参看ETR162。网络信息表主要携带:网络识别符(network_id)、网络名称、传输系统参数(包括:频率、调制方式、FEC外码、符号率、FEC内码)等信息,如果NIT表中有关于传输系统参数的正确描述,只要调谐到携带此NIT表的传送流中,即可提取其它网络的参数,一般解码器便可根据提取出来的信息,自动搜索频道。
节目业务描述表的每一个子表都对一个特定传送流中的节目业务进行了描述。这些节目业务可以一部分是本身实际的传送流,也可以是其它传送流,这一点可以通过table_id(表识别符)进行识别。节目业务描述表提供了如下的信息:属于哪一个节目业务群;节目业务的类型,如PAL、NTSC、SECAM、调频广播、图文电视、准视频点播等;节目业务的提供者;可以接收该节目业务的国家和不可以接收该节目业务的国家;指向特定信息的链接信息;实现准视频点播的指导信息;实现多画面的控制信息;指示使用的加密系统;给出实现交互式回传信道的电话号码;提供多语种的节目业务名称和广播者以及私有数据。
事件信息表按时间顺序提供每一个节目业务中包含的节目段的信息。事件信息表提供如下信息:节目段的标识号、起始时间、节目长度、播放状态、是否加密;指向特定信息的链接信息;节目段多语种的简短介绍;节目段的详细介绍;两段同样节目段的时间偏移;基本码流类型,如视频的幅型比、伴音的类型、字幕的类型等;使用的加密系统;节目类型,如电影/戏剧、新闻、综艺、体育、少儿、音乐、艺术、社会政治、文教等;节目限定年龄的级别;给出实现交互式回传信道的电话号码;为满足各节目段的码率而提供的缓存大小信息及私有数据。
2.4.1.4 EPG系统的显示技术
当电视节目和EPG应用同时启动时,用户看到的可能是节目画面和EPG界面的叠加,用户所看到的电视画面从前到后可以分为三层,依次为图形层、视频层和背景层。图形层即OSD(On Screen Display)层,OSD界面显示技术指在图像画面上叠加文字显示,使屏幕为用户提供更多的附加信息。视频层为当前正在收看的节目(解码出来的活动图像);背景层为没有播放电视节目和启动EPG菜单时的屏幕图像。EPG画面在图形层上构建,EPG画面是由许多EPG图形元素(如按钮、文本框、选择按钮、组件容器等)叠加而成。界面的状态转移是通过消息驱动的机制来实现的,在消息响应函数中进行消息处理。用见到的是屏幕图像是这三层的叠加(blend)后的图像。
SI数据检索模块快速的检索本地SI数据库,提供EPG界面当前输入焦点所需的数据信息;OSD层图形元素库提供界面所需的图形元素,该库存于本地机顶盒的ROM中;状态转移控制器接收用户遥控器的输入,提供当前显示所需的活动焦点,控制状态转移地流向;OSD层图像是指EPG界面图形元素合成后的图像;OSD绘制引擎决定显示的相应算法,接收各模块提供的数据,完成OSD层图形的绘制,最后是OSD层、视频层和背景层的叠加操作。
2.4.2 软件在线升级功能的实现[/NextPage]
DC-618C的软件升级方法有两种,一种是使用串口的软件升级功能,一种是使用网络的在线升级方式。前一种方式,是从PC机上将软件通过RS232串口下载到机顶盒中,由用户自己操作,是一种个体行为;后一种方式,是由运营商将软件放在服务器上,由用户或运营商来触发对机顶盒的软件升级动作。
2.4.2.1 概述:
DVB标准定义了两种软件升级服务,分别为简单和增强的软件升级服务。前者使用NIT、BAT和PMT,不需要升级通知表(UNT),后者使用UNT来传输NIT、BAT和PMT无法携带的调度、定位和其它信息。
DC-618C目前支持简单的软件升级服务。实际上,简单的软件升级服务是增强的软件升级服务的子集。
DC-618C采用DVB所定义的通过SI和PSI定位一个软件升级服务的机制,基本方式是通过NIT或BAT定位一个网络中包含系统软件升级服务的传输流,再通过PMT在该传输流中定位系统软件升级服务所在的基本流。
首先,DC-618C机顶盒通过检测NIT和系统软件升级BAT第一个循环中是否包含Linkage描述符来确定该网络或业务群中是否包含软件升级服务。连接类型为0x09的Linkage描述符携带了在一个网络或业务群中定位传输一个系统软件升级服务的传输流的信息。
DVB对用于系统软件升级服务的Linkage描述符中的私有数据字段定义了一个系统软件升级连接结构,其中包含一个24比特的IEEE OUI(Organization Unique Identifier,组织唯一标识)和一个选择器,OUI可以用来标识DC-618C机顶盒的生产厂家,选择器用来标识DC-618C机顶盒的型号。
DC-618C机顶盒还采用了另一个DVB定义的系统软件升级服务扫描Linkage描述符,用来定义一个指向携带系统软件升级BAT或NIT的指针。该描述符的连接类型为0x0A,可在BAT或NIT中传输。该描述符与类型为0x09的Linkage描述符不同,不包含OUI,目的是使机顶盒不用扫描所有的复用器就可以获得描述系统软件升级服务的BAT或NIT,实际上该描述符是Linkage描述符的一种补充,而且是可选的。
在NIT或系统软件升级BAT中有多个Linkage描述符,标识多个系统软件升级服务。在暂时没有升级服务时,可以不从NIT或BAT中将这些描述符删除。
对于包含系统软件升级基本流的传输流,对应的PMT包括data-broadcast-id描述符,其中data-broadcast-id等于 0x000A,选择器字段被DVB定义为系统软件升级信息结构(system-software-update-info),其中包含OUI、升级类型、升级版本和生产商定义的选择器字段。对于一个专有的流,该描述符提供一个入口点;对于一个标准的两层数据轮播,该描述符也提供了一个入口点;另外该描述符还提供一个UNT表的参考,指向增强的系统软件升级服务。在当前暂时没有系统软件升级服务时,头端播放软件不会将该系统软件升级服务的标识从PMT的该描述符中删除。
一个data-broadcast-id描述符只定义一个基本流,一个节目可以包含多个基本流,这样一来,就有多个系统软件升级流(轮播),每个流由各自的data-broadcast-id描述符描述。另外,一个系统软件升级服务也可以是一个服务的组件之一。
2.4.2.2 DC-618C用于升级服务的数据轮播结构
DC-618C系统软件服务采用DVB标准的两层数据轮播协议来传输多个升级软件数据。多个系统软件升级服务构成一个两层的数据轮播服务,DSI是该数据轮播的入口。DC-618C软件升级系统有多个升级服务,每个升级服务构成一个单独的组所有的组和模块都在一个基本流中传输。
与标准的DVB数据轮播一样,DSI消息包含GroupInfoIndication结构,其中的GroupCompaibility字段使用IEEE OUI来标识我公司,该字段还用来描述机顶盒的型号和版本号;GroupInfoByte(gi) 字段由一个描述符循环组成,描述了该升级服务组的各种信息,这些描述符是DVB标准数据轮播定义的描述符。
为了独立地生成多个软件升级服务数据,并将这些独立生成的数据集成在同一个数据轮播服务中,DC-618C机顶盒软件升级服务系统还采用了DVB对于 DII中的一些特定字段进行的特别的规定;transactionId的两个字节在0X0002—0XFFFF之间,并与对应的DSI中 groupInfo结构中的groupid相等;downloadId等于transactionId; moduleId的高8位的值与groupId的低8位相同,低8位表示一个特定的软件升级服务moduleId,该服务最大支持256个模块,对于软件升级应用来说应该是足够的。
3 结束语
硬件是软件运行的平台,归根结底,软件部分是整个机顶盒的灵魂和核心,随着信息网络的快速发展,宽带美景已经非常清晰地展现在我们面前,丰富多彩的服务对终端接收设备提出了更高的要求,只有不断的提高机顶盒软、硬件的功能和性能才能跟得上市场不断前进的步伐。
评论
查看更多