基于STi5518的DC-618C型数字电视接收机顶盒的软件设计与应用
扫描二维码
随时随地手机看文章
引言
数字电视是人们谈论最多的热闹话题之一。由于数字电视是种新鲜事物,一些相关报道及文章介绍中出现似是而非的概念,诸如"数码电视"、"全数字电视"、"全媒体电视"、"多媒体电视"等,造成大众感到困惑,茫然不知所措。其实,"数字电视"的含义并不是指我们一般人家中的电视机,而是指电视信号的处理、传输、发射和接收过程中使用数字信号的电视系统或电视设备。其具体传输过程是:由电视台送出的图像及声音信号,经数字压缩和数字调制后,形成数字电视信号,经过卫星、地面无线广播或有线电缆等方式传送,由数字电视接收后,通过数字解调和数字视音频解码处理还原出原来的图像及伴音。
机顶盒(Set Top Box ),从广义上说,凡是与电视机连接的网络终端设备都可称之为机顶盒。基于有线电视网络的模拟频道增补器、模拟频道解码器,到将电话线与电视机连接在一起的"维拉斯"上网机顶盒、数字卫星的综合接收解码器(IRD)、数字地面机顶盒以及有线电视数字机顶盒都可称为机顶盒。从狭义上说,如果只说数字设备的话,按标准分为数字卫星机顶盒(DVB-S)、欧标数字地面机顶盒(DVB-T)、国标数字地面机顶盒(DMB-TH)、有线电视数字机顶盒(DVB-C)。按照功能来分的话,可以分为单向机顶盒、双向机顶盒、IPTV机顶盒。
数字电视机顶盒(Set Top Box)是信息家电之一,它是一种能够让用户在现有模拟电视上,观看数字电视节目,进行交互式数字化娱乐、教育和商业化活动的消费业电子产品。数字视频变换盒(英语:Set Top Box,简称STB),通常称作机顶盒或机上盒,是一个连接电视机与外部信号源的设备。它可以将压缩的数字信号转成电视内容,并在电视机上显示出来。信号可以来自有线电缆、卫星天线、宽带网络以及地面广播。机顶盒接收的内容除了模拟电视可以提供的图像、声音之外,更在于能够接收数据内容,包括电子节目指南、因特网网页、字幕等等。
我们在这里介绍一款基于STi5518芯片的DC-618C型数字电视接收机顶盒的软件设计。
2DC-618C数字电视接收机顶盒的软件设计
2.1实时操作系统基本原理
Sti5518解码芯片本身的性能比较强大,可以满足应用对硬件的要求,关键在于软件对硬件的管理上,随着应用的复杂化,一个嵌入式控制系统可能要同时控制和监视很多外设,要求有实时响应,有很多处理任务,各个任务之间有多种信息传递。如果仍采用原来的程序设计方法存在两个问题,一是中断可能得不到及时响应。处理时间过长,这对于一些控制场合是不允许的,对于网络通信方面则会降低系统整体的信息流量。二是系统任务多,要考虑的各种可能也多,各种资源如调度不当就会发生死锁,降低软件可靠性,程序编写任务量都会有大幅度增加。
实时系统能够在指定或者确定的时间内完成系统功能和外部或内部、同步或异步时间做出响应的系统。它的正确性不仅依赖系统计算的逻辑结果,还依赖于产生这个结果的时间。因此实时系统应该在事先先定义的时间范围内识别和处理离散事件的能力;系统能够处理和储存控制系统所需要的大量数据。 为了便于理解,机场的售票系统就是一个典型的实时系统。实时系统通常运行在一定的环境下,外部环境是实时系统不可缺少的一个组成部分。计算机子系统一般是控制系统,它必须在规定的时间内对外部请求做出反应。外部物理环境往往是被控子系统,两者互相作用构成完整的实时系统。大多数控制子系统必须连续运转以保证子系统的正常工作或准备对任何异常行为采取行动。
实时多任务操作系统,以分时方式运行多个任务,宏观表现为多个任务同时运行。任务之间的切换以优先级为根据,只有采用优先服务方式的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.3DC-618C机顶盒的软件架构设计
依据软件工程的原理,DC-618C机顶盒软件采用从上到下的层次化设计,依次由易到难,由具体到抽象和由软件到硬件,主要包括如下几层:
1)应用层:应用层是控制整个机顶盒操作的高层代码,也是需要程序员自己完全实现的代码。在这一层中实现各种各样的功能,包括初始化各种外设、创建任务、设置节目频点、实现用户输入输出操作等。对于与第三方的软件合作,包括网络浏览器,也嵌入在应用层中,应用程序可以直接调用驱动层的应用程序接口(API)。第三方的中间件可以通过驱动使用层来调用应用程序接口。所有的应用层组件在功能上能通过操作系统移植层来访问实时操作系统。
2)驱动层:驱动层通过调用硬件抽象层,来管理各种外设和内部子系统模块,将这些模块的功能抽象化和屏蔽化,向上一层提供应用层程序接口,使得应用层的操作直观和简洁。应用层组件通过调用驱动层API来控制系统硬件功能和服务。这些驱动完成普通的低层任务,如控制传输解复用和音视频解码等。
3)硬件抽象层:对DC-618C的所有硬件的操作必须通过修改寄存器来实现,DC-618C将所有寄存器与接口统一编址,使得通过软件对寄存器的操作非常简单,硬件抽象层正是完成这一功能。可以说,H.A.L.是驱动层的子集,负责直接编辑硬件。驱动层提供通用的低层功能,同时H.A.L.在硬件上实现这些功能。为了响应驱动层的调用,H.A.L.执行特定的芯片函数,编辑芯片寄存器来完成一个特定的功能,它只与一种特定的芯片相对应,所以当改变硬件平台时,只需要改变相应的硬件抽象层。
2.4DC-618C机顶盒的应用层设计
机顶盒除了实现接收来自有线网络的数字电视信号外,还应具有EPG(电子节目指南)、软件在线升级等功能,我们在这里主要谈谈这几种功能的实现。
2.4.1EPG(电子节目指南)的实现:
2.4.1.1EPG简介
EPG 是ElectrONic Program Guide的英文缩写,意思是电子节目菜单。 IPTV所提供的各种业务的索引及导航都是通过 EPG系统来完成的。 IPTV EPG实际上就是 IPTV的一个门户系统。 EPG系统的界面与 Web页面类似,在 EPG界面上一般都提供各类菜单、按钮、链接等可供用户选择节目时直接点击的组件; EPG的界面上也可以包含各类供用户浏览的动态或静态的多媒体内容。
EPG的主要作用就是用户利用EPG提供的菜单,可以选择自己喜欢的组播频道;点播自己喜欢的视频节目;在线演唱自己喜欢的歌曲;查找IPTV提供的各种信息,包括生活信息、娱乐信息、教育信息、体育信息等等;用户也可使用EPG提供的菜单来订购自己喜欢的节目;甚至可以通过EPG提供的菜单支付水费、电费、进行电子商务的交易等。用户还可以利用EPG菜单查看节目的附加信息,例如对节目内容介绍、演员及导演的介绍等。同时通过EPG菜单中提供的家长控制功能,家长可以对某些节目加以限制,不给孩子开放所有的观看权限。
EPG为IPTV提供的基本业务(如VOD点播/KTV/歌曲)及各种增值业务的使用提供了简单方便的操作平台,为IPTV用户收看电视节目、享受多媒体节目点播以及开展信息服务提供了一个良好的导航机制。使用EPG系统可使用户能够方便快捷地找到自己关心的节目。使用EPG系统,用户通过电视机这个终端和IP机顶盒就可以登陆Internet.更重要的是使用EPG系统用户就可以和电视进行互动,这样用户就不再被动地接收信息,用户可以及时、主动地发表自己的意见和看法,并将这些意见和看法及时反馈给内容制作商。因此EPG在IPTV系统中起着十分重要的作用。我国IPTV目前还处于起步阶段,部分电视台、运营商和机顶盒生产厂商曾开发了一些EPG,但都只是某一个网络或一种机顶盒,缺乏广泛的适用性,在实际应用中存在下面几个方面的问题:EPG内容信息缺乏统一的数据格式,给各台、网之间交换EPG带来很大的复杂性;每个数字电视平台都必须设计和开发EPG系统,造成大量重复性劳动;兼容性差,机顶盒厂商不得不针对各平台重复开发EPG应用。
2.4.1.2PSI/SI信息及其功能
MPEG-2中的传送码流是根据ITU-TRecH220、ISO/IECDIS13818-2和ISO
/IEC13818-3协议定义的一种数据流,其目的是为了在有可能发生严重错误的环境下进行一道或多道程序的编码数据的传送和存储。这种错误表现为比特值错误或分组丢失。传送流的速率可以是变化的或固定不变的。在任何情况下组成的原始流可以是变化的或固定不变,在这些情况下的语法和语义限制是相问的。传送流速率由节目参考时钟(PCR)字段的位置和数值决定,通常对于每个程序都有自己的PCR字段。传送流中有关PID的信息及各PID之间的关系包含在PSI(ProgramSpecificInformation:节目特定信息)中,MPEG-2解码器将使用PSI信息来自动设置解码所需的各种参数。PSI信息使用4个表来定义码流的结构:PAT(ProgramAssociationTable:节目关联表)、PMT(ProgramMapTable:节目映射表)、NIT(NetworkInformationTable:网络信息表)、CAT(ConditionalAccessTable:条件访问表)。
MPEG-2在PSI中提供了不少有关节目组成和相互关系的信息,从而使得在接收端可以正确地对TS流进行解复用。但是这些信息在实际使用时仍然显得不够,为此在DVB标准中采用SI(ServiceInformation:业务信息)对PSI信息进行了进一步的扩展。PSI中的信息基本上都是与当前码流相关,即它们所涉及的内容都与当前码流中的部分信息相关;而SI信息可以包括不在当前码流中的一些服务和事件,允许用户进行更多的选择和了解更多的其他服务。SI信息表主要有以下内容:
BAT(BouquetAssociationTable:业务群关联表)、SDT(ServiceDescriptionTable:业务描述表)、EIT(EventInformationTable:事件信息表)、RST(RunningStatusTable:运行状态表)、TDT(TimeandDateTable:时间和日期表)、TOT(TimeOffsetTable:时间偏移值表)、ST(StuffingTable:填充表)
业务信息(SI)是用来描述传送系统,传送内容和广播数据流时间表等的数据,是补充MPEG-2节目说明信息(PSI)的附加数据,这些数据帮助综合接收解码器(IRD)自动调谐,给用户提供附加信息,使IRD能自动设置可供选择的业务。
头端系统每隔一定周期将重复传送SI信息,对于最高速率为100Mbits/s的传送流而言,重复传送SI信息的最小间隔为25毫秒。这样,对于新开机的用户,在很短的时间内,就可以接收到SI(业务信息),构成EPG(电子节目指南)所需的各项条款。
2.4.1.3EPG信息的提取
一般而言,PAT表的PID号为"0x00",解复用器工作总是通过寻找PAT表开始。PAT给出了构成传送流中各个节目业务的PMT(节目映射表)的PID,同时也给出了NIT(网络信息表)的PID号。根据PID值及对应的TableID值可以从流中解出相应的PMT、NIT、SDT、EIT等信息。机顶盒接收端的解析主要负责这些SI数据信息的重建。信息内容应与PSI和SI表中的信息相对应,它可按照Network-TransportStream-Service-Event的分层顺序描述,同时内嵌TransportStream-Program(Service)-ElementStream的分层顺序。SI数据信息必须按照一定的数据结构进行存储,这样才能方便、快捷地对其进行检索和数据的提取。特别是对于运行于机顶盒的实时操作系统中的EPG,需要对用户的交互进行实时的动作,所以对响应速度的要求很高,SI数据库建立的好坏对其性能有重要的影响。SI数据主要有:网络信息、传输流信息、业务(节目)信息,业务的事件信息等,并且大量的信息都是通过描述子来传输的,所以可用树状链表来存储数据,构成从网络、传输流、业务、事件的树状结构,传送不同信息的描述子用继承于同一基类的描述子类来表示。
网络信息表传送本网络以及与此有关的其它网络的一些信息。每个网络都有唯一的识别符,网络编码请参看ETR162.网络信息表主要携带:网络识别符(network_id)、网络名称、传输系统参数(包括:频率、调制方式、FEC外码、符号率、FEC内码)等信息,如果NIT表中有关于传输系统参数的正确描述,只要调谐到携带此NIT表的传送流中,即可提取其它网络的参数,一般解码器便可根据提取出来的信息,自动搜索频道。
节目业务描述表的每一个子表都对一个特定传送流中的节目业务进行了描述。这些节目业务可以一部分是本身实际的传送流,也可以是其它传送流,这一点可以通过table_id(表识别符)进行识别。节目业务描述表提供了如下的信息:属于哪一个节目业务群;节目业务的类型,如PAL、NTSC、SECAM、调频广播、图文电视、准视频点播等;节目业务的提供者;可以接收该节目业务的国家和不可以接收该节目业务的国家;指向特定信息的链接信息;实现准视频点播的指导信息;实现多画面的控制信息;指示使用的加密系统;给出实现交互式回传信道的电话号码;提供多语种的节目业务名称和广播者以及私有数据。
事件信息表按时间顺序提供每一个节目业务中包含的节目段的信息。事件信息表提供如下信息:节目段的标识号、起始时间、节目长度、播放状态、是否加密;指向特定信息的链接信息;节目段多语种的简短介绍;节目段的详细介绍;两段同样节目段的时间偏移;基本码流类型,如视频的幅型比、伴音的类型、字幕的类型等;使用的加密系统;节目类型,如电影/戏剧、新闻、综艺、体育、少儿、音乐、艺术、社会政治、文教等;节目限定年龄的级别;给出实现交互式回传信道的电话号码;为满足各节目段的码率而提供的缓存大小信息及私有数据。
2.4.1.4EPG系统的显示技术
当电视节目和EPG应用同时启动时,用户看到的可能是节目画面和EPG界面的叠加,用户所看到的电视画面从前到后可以分为三层,依次为图形层、视频层和背景层。图形层即OSD(OnScreenDisplay)层,OSD界面显示技术指在图像画面上叠加文字显示,使屏幕为用户提供更多的附加信息。视频层为当前正在收看的节目(解码出来的活动图像);背景层为没有播放电视节目和启动EPG菜单时的屏幕图像。EPG画面在图形层上构建,EPG画面是由许多EPG图形元素(如按钮、文本框、选择按钮、组件容器等)叠加而成。界面的状态转移是通过消息驱动的机制来实现的,在消息响应函数中进行消息处理。用见到的是屏幕图像是这三层的叠加(blend)后的图像。
SI数据检索模块快速的检索本地SI数据库,提供EPG界面当前输入焦点所需的数据信息;OSD层图形元素库提供界面所需的图形元素,该库存于本地机顶盒的ROM中;状态转移控制器接收用户遥控器的输入,提供当前显示所需的活动焦点,控制状态转移地流向;OSD层图像是指EPG界面图形元素合成后的图像;OSD绘制引擎决定显示的相应算法,接收各模块提供的数据,完成OSD层图形的绘制,最后是OSD层、视频层和背景层的叠加操作。
2.4.2软件在线升级功能的实现
DC-618C的软件升级方法有两种,一种是使用串口的软件升级功能,一种是使用网络的在线升级方式。前一种方式,是从PC机上将软件通过RS232串口下载到机顶盒中,由用户自己操作,是一种个体行为;后一种方式,是由运营商将软件放在服务器上,由用户或运营商来触发对机顶盒的软件升级动作。
我们主要介绍使用网络的在线升级方式,考虑到兼容不同的网络环境(单向网络),我们使用将软件广播下来,由机顶盒接收,然后替换原有软件的方法,所采用的在线升级方式遵循DVB定义的系统软件升级规范。
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比特的IEEEOUI(OrganizationUniqueIdentifier,组织唯一标识)和一个选择器,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.2DC-618C用于升级服务的数据轮播结构
DC-618C系统软件服务采用DVB标准的两层数据轮播协议来传输多个升级软件数据。多个系统软件升级服务构成一个两层的数据轮播服务,DSI是该数据轮播的入口。DC-618C软件升级系统有多个升级服务,每个升级服务构成一个单独的组所有的组和模块都在一个基本流中传输。
与标准的DVB数据轮播一样,DSI消息包含GroupInfoIndication结构,其中的GroupCompaibility字段使用IEEEOUI来标识我公司,该字段还用来描述机顶盒的型号和版本号;GroupInfoByte(gi)字段由一个描述符循环组成,描述了该升级服务组的各种信息,这些描述符是DVB标准数据轮播定义的描述符。
为了独立地生成多个软件升级服务数据,并将这些独立生成的数据集成在同一个数据轮播服务中,DC-618C机顶盒软件升级服务系统还采用了DVB对于DII中的一些特定字段进行的特别的规定;transactionId的两个字节在0X0002-0XFFFF之间,并与对应的DSI中groupInfo结构中的groupid相等;downloadId等于transactionId;moduleId的高8位的值与groupId的低8位相同,低8位表示一个特定的软件升级服务moduleId,该服务最大支持256个模块,对于软件升级应用来说应该是足够的。
3结束语
硬件是软件运行的平台,归根结底,软件部分是整个机顶盒的灵魂和核心,随着信息网络的快速发展,宽带美景已经非常清晰地展现在我们面前,丰富多彩的服务对终端接收设备提出了更高的要求,只有不断的提高机顶盒软、硬件的功能和性能才能跟得上市场不断前进的步伐。