基于STi7162的高清机顶盒设计
2014-07-02张望远
张望远
(江苏自动化研究所,江苏 连云港 222006)
基于STi7162的高清机顶盒设计
张望远
(江苏自动化研究所,江苏 连云港 222006)
设计了一种基于STi7162芯片的低成本高清机顶盒,介绍了机顶盒的基本硬件组成、存储子系统和外围接口设计,对机顶盒软件系统架构也进行了简单说明。对设计的基于双Loader的机顶盒软件升级方案进行了重点介绍,详细介绍了升级方案的组成、Flash分区设计、升级条件检测和数据更新过程。实际测试结果表明,所设计的升级方案稳定可靠,可满足复杂的用户升级环境需求。
双Loader升级;STi7162;高清机顶盒
近年来国内数字电视整转工作稳步推进,标清数字电视普及程度已经较高,但是高清数字电视由于之前高清节目较少和高清机顶盒价格等因素制约一直未大规模推广,随着高清频道开播数量越来越多,高清数字电视普及度将越来越高。目前数字机顶盒市场竞争较为激烈,对高清机顶盒产品的成本较为敏感[1-4]。本文设计了一种基于STi7162的高清机顶盒,方案集成度高,硬件系统简单,具备一定的成本优势,且功能、性能完全满足高清数字电视的业务需求。
机顶盒在下发用户之后,需要不定期对机顶盒软件系统进行升级。传统的机顶盒软件升级多是基于单Loader的升级方案,由于用户应用环境复杂多变,升级过程中遇到意外情况,容易产生升级不成功进而引发系统崩溃的情况,针对此情况,本文设计了一种基于双Loader的升级方案,通过引入主备Loader分区,确保升级过程中在意外情况下系统代码可以自我恢复,大大提高了机顶盒软件升级的可靠性。
1 高清机顶盒硬件方案
高清数字机顶盒设计由CPU、电视接收前端、调制解调器、MPEG解码、音视频及图形处理、存储部件和外围接口等组成。本文设计的高清机顶盒采用意法半导体公司的双向高清机顶盒专用芯片STi7162实现,STi7162芯片集成度较高,可用于DVB-C或DVB-T方案,核心CPU为ARM架构的32位嵌入式处理器ST40,主频400 MHz;芯片内部同时集成了QAM解调、MPEG解码、音视频及图形处理等功能,可满足高清机顶盒多媒体应用需求;为实现输入输出接口功能,芯片内部还集成了USB、串口、以太网等接口的控制器部分,大大简化了高清机顶盒设计过程,同时充分降低产品的BOM成本。
1.1 基本硬件组成
基于STi7162的高清机顶盒总体硬件设计方案如图1所示,机顶盒核心为STi7162,外围电路主要由存储部件,输入输出接口和辅助电路几大部分组成。存储部件包括SDRAM,Flash和E2PROM,和CPU一起构成机顶盒运行基本系统;输入输出接口又分为音视频输出接口、机顶盒专用接口和通用输入输出接口部分组成,其中音视频输出接口负责向电视机输出解码后的音视频节目,机顶盒专用接口包括用以接收射频信号的高频头接口、实现CA功能的CA卡接口和接收遥控器信号的IR接口,通用输入输出接口包括USB、RS-232串口和以太网接口,用以实现调试、升级或用户扩展功能;辅助电路包括DC-DC电压转换电路,时钟和复位电路等,保证了整个机顶盒系统的正常运行。
图1 高清机顶盒总体硬件方案
1.2 存储器子系统设计
机顶盒运行嵌入式操作系统,为满足系统正常运行需要,集成了多种存储器接口,包括SDRAM接口,Flash接口和E2PROM接口,如图2所示。
图2 高清机硬件存储系统
SDRAM控制器位于STi7162的32位LMI(内部存储接口)上,LMI接口挂接在连接CPU的内部总线STBus上,形成32位DDR2/DDR1内存控制器接口。设计采用双片× 16的SDRAM,工作在DDR2模式,频率为400 MHz,通过DQM[3:0]信号片选,两片16位的SDRAM组成一个BANK,形成总容量256 Mbyte的32位SDRAM存储。
NAND Flash位于STi7162的EMI(外部存储接口)上,EMI是一个通用的Flash扩展接口,可扩展NAND Flash或NOR Flash,或者串行Flash器件。综合应用需求和成本考虑,设计中选用SAMSUNG公司128 Mbyte的串行NAND Flash,型号为K9F1G08U0B。
E2PROM用以存储换台等频繁读写的信息,本方案中采用I2C总线进行扩展,I2C位于STi7162的SSC(同步串行控制器)上,STi7162共有4路SSC接口,E2PROM位于第1路SSC0上,容量256 kbyte。
1.3 输入输出接口设计
高清机顶盒设计中集成了多种输入输出接口,主要包括音视频输出接口、机顶盒专用接口和通用输入输出接口。
为满足不同用户使用需求,方案中设计了多种音视频接口。集成目前主流的高清HDMI 1.4接口,位于主芯片的HDMI控制器上,HDMI实现高清机顶盒的高清晰度音视频的输出功能,可满足用户观看高清节目的需要,同时为兼顾标清电视用户,集成了三色分量视频YPbPr接口和CVBS接口,位于主芯片内部的视频DAC上;音频接口方面集成了传统的RCA左右声道高保真模拟音频接口,位于主芯片内部的音频DAC上,为满足部分高端用户需要,还集成了数字光纤音频SPDIF接口。
机顶盒专用接口包括高频头接口、CA卡接口和IR接口。高频头接口位于STi7162的QAM_IN和I2C总线上,用以接收有线电视射频信号,将射频信号变频为中频TS信号送至STi7162主芯片内部的QAM解调器中,采用高集成度的硅高频头,进一步降低成本;CA卡接口位于主芯片的Smartcard控制器上,用以实现机顶盒CA功能;IR信号接至主芯片的GPIO管脚,将外部遥控器输入信号送至CPU进行处理。
高清机顶盒设计中还集成了USB,RS-232和10/100(Mbit·s-1)以太网接口,满足调试和升级的需求,同时还可以实现用户扩展功能。主芯片内部集成USB控制器,外加辅助保护电路即实现USB接口功能;RS-232接口位于主芯片内部串口控制器上,通过电平控制电路将TTL电平转为RS-232电平;主芯片集成10/100(Mbit·s-1)以太网MAC控制器,通过外部PHY芯片KSZ8041NL扩展10/ 100(Mbit·s-1)以太网接口,可实现用户双向机顶盒的互动功能。
2 机顶盒软件系统架构和Flash分区设计
2.1 软件系统架构
高清机顶盒软件系统总体架构如图3所示,软件系统主要由APP应用程序和嵌入式操作系统组成,共同运行在硬件平台之上。
图3 高清机顶盒软件系统架构
APP应用层主要由媒体播放器、浏览器、主控软件、部分升级功能程序,各种业务软件以及第三方中间件组成,是最终具体业务展现层,实现机顶盒的搜台、播放、广播、电子节目指南、互动点播等功能。
操作系统层由引导程序、嵌入式操作系统内核、API接口模块、硬件驱动模块、各种协议模块和第三方组件组成。其中API接口模块为上层应用提供了媒体解码、播放、图形、驱动以及操作系统功能的调用,是芯片驱动、外围接口驱动、外围器件驱动和操作系统功能的一个封装。硬件驱动层实现底层硬件驱动功能,包括媒体处理硬件模块的驱动、外围接口驱动和外设驱动。
硬件平台即前面提到的硬件系统,由主芯片、存储器件、输入输出接口和外围器件构成。
2.2 Flash分区设计
高清机顶盒软件系统在Flash中以分区块的方式进行存储,如图4所示。其中,Uboot为系统引导程序,Bootargs分区用以存储系统启动配置参数;Logo和Fast⁃play分区分别存储开机画面和动画片段;Loader分区存储升级相关程序,LoaderDB分区存储升级数据信息,Load⁃er_bak和LoaderDB_bak分区分别是Loader和LoaderDB分区的备份;Kernel为操作系统内核,Rootfs分区为文件系统分区;Dbase分区存储全部图片、字库、频道列表以及节目参数之类等多种数据信息,APP是应用程序分区。通过采用分区存储的方式,使得不同内容的组件各自独立,有助于加强各个组件进行单独的升级和管理,同时,Flash的总空间留有一定数量的剩余空间,每个组件的自身存储区块也留有扩展的空间,本方案中Flash分区总共占用109 Mbyte的空间,可以满足以后程序和数据扩充的需要。
3 双Loader升级方案设计
机顶盒交用户使用后,随着新业务不断增加和技术不断更新,需要不定期的采用自动或手动的方式对机顶盒软件系统进行升级和更新,使得用户可以及时地享受到新服务、感受到新技术。升级主要分为在线升级和本地升级,在线升级分为Cable升级和IP升级,又称为空中升级,是有线电视运营商与机顶盒之间通过Cable或以太网进行的升级方式,适用于大规模升级;本地升级又分为串口升级和USB升级,是在机顶盒端直接进行的升级方式,适用于小规模的升级或作为空中升级的补充方式。
图4 Flash分区示意图
传统的机顶盒升级方案多是基于单Loader的升级方式,在不可预测的用户环境下,断电等异常情况会导致在线升级失败进而引发软件系统崩溃,因此升级功能的稳定可靠和系统的自我恢复功能至关重要。本文设计了一种基于双Loader的升级方案,可以同时满足在线升级和本地升级的需要,通过引入主备Loader分区,使得机顶盒软件系统在意外情况下仍可以自我恢复并重新升级,大大提高了升级功能的可靠性和稳定性。
3.1 升级方案总体描述
升级方案大体上可划分为以下几个组成部分:
1)Uboot,引导程序,负责大小Kernel的引导、升级条件检查、分区的备份和同步。
2)大 Kernel,包含Linux操作系统内核和外设驱动,可对外提供访问系统资源和服务的接口。
3)小Kernel,裁剪的Linux内核,只保留了与升级有关的服务,在小Kernel启动之后加载Loader升级镜像文件。
4)Loader镜像文件,是一个ramfs镜像包,由小Ker⁃nel、裁剪的rootfs和升级应用程序组成,是升级工作的主执行体。
5)APP升级应用程序,负责升级条件检测,设置升级标志并触发升级。
升级方案总体流程如图5所示,系统上电后,首先启动Uboot,判断是否有升级标志,如有升级标志,则引导小Kernel启动,执行Loader对需要升级的分区进行升级操作,升级成功后清除升级标志并重启。Uboot启动后若没有升级标志,则进入系统正常启动过程,引导大kernel启动,并运行APP,在APP的运行过程中,不断去检测系统是否有升级需求,若检测到有升级需求,则设置升级标志后重启,若没有升级需求,则正常执行APP中的各种操作。
图5 升级方案总体流程
升级是以分区为单位进行的,一次升级可以更新一个分区,也可以更新多个分区。除Uboot分区不可以升级之外,其他分区都可以进行升级,其中,APP分区和Dbase分区为最经常进行升级的分区。
3.2 双Loader分区
Loader代码的运行须通过Uboot来引导,Uboot是一个精简的BootLoader程序,它的主要任务是初始化硬件设备和引导Kernel文件的启动,系统上电后从Flash的0偏移地址开始执行Uboot程序,Uboot引导小Kernel后,执行Loader应用程序。
Loader是升级程序的执行体,如果在升级Loader程序自身时,尤其是在写入Flash的过程中,一旦发生意外使得Flash写入失败,会造成机顶盒既无法启动也不能继续升级的事故。为了防止此类情况的发生,在升级方案中引入双Loader分区设计,即主Loader分区和备份Load⁃er分区,达到对Loader数据进行备份的目的。在主分区Loader程序不能正常运行的情况下,Uboot程序能够引导机顶盒启动并使用备份Loader,保证程序正常运行。
主Loader分区和备份Loader分区之间的关系如图6所示。在必要的初始化工作后,Uboot使用CRC32算法校验主备Loader分区数据的完整性和一致性,并根据校验结果执行相对应的操作。具体操作如下所述:
1)若主备Loader都未被破坏,但分区内容不相同,Uboot将主Loader分区数据同步到备份Loader分区中。2)若主Loader分区的数据遭到破坏、备份Loader未破坏,Uboot将Loader备份分区的内容同步到主Loader分区中。3)若主 Loader分区的数据未破坏、备份Loader遭到破坏,Uboot将Loader主分区的内容同步到Loader备份分区中。4)若主备Loader都未被破坏,而且内容相同,则不进行同步操作。5)若主备Loader分区数据都遭到破坏,Uboot则提示错误信息。
图6 Loader主备分区状态图
3.3 软件升级实现过程
从机顶盒软件执行体来看,软件升级可分为两部分,升级条件检测程序和数据下载及更新程序。升级条件检测程序用来检测系统是否有升级请求,确认需升级后,执行数据下载和更新程序进行升级操作。
3.3.1 升级条件检测程序
升级条件检测程序主要是用来检测机顶盒有无升级请求,根据检测结果决定是否对本机软件进行升级,根据检测程序在软件系统中的层次,又可分为上层应用升级条件检测程序和底层Loader升级检测程序。
1)APP升级条件检测程序
APP升级检测程序位于APP软件中,主要用于在APP中检测前端服务器下发的升级指令,又可分为Cable升级条件检测和IP升级条件检测程序,其中Cable升级条件检测程序主要通过检测前端EPG服务器在Cable中下发的Linkage描述符,判断是否有符合升级条件的升级流,若条件符合则设置升级标志,重启进入Loader;IP升级检测程序有多种方式,最常见的方式是上层应用程序检测升级服务器端升级描述文件(XML文件),判断是否符合升级条件,若符合条件则设置升级标志,重启进入Loader进行升级操作。
2)底层Loader升级条件检测程序
底层Loader升级条件检测程序位于底层Loader执行体上,按照升级载体的不同,分为串口,USB,IP和Cable升级4种升级条件检测方式。在系统进入Loader之后,首先判断是否有来自串口的升级请求,有则执行串口升级操作,无则继续判断USB接口是否存在符合升级条件的存储设备;有则执行USB升级操作,无则进入下一步判断是否存在IP升级标志;有则执行IP升级,无则继续判断是否存在Cable升级标志;有则进入Cable升级操作,无则重启系统。所有的升级完成之后执行重启,其中IP升级或Cable升级执行完重启之前还要清除通过APP设置的升级标志。
图7 Loader升级条件检测过程
3.3.2 数据下载和更新程序
升级检测完成并成功触发升级操作之后,就要进入数据下载与更新过程,该部分操作由位于Loader中的数据下载和更新程序完成,主要实现过程描述如下:数据下载程序将通过串口、USB、Cable或IP传递来的升级分区数据下载到内存中,并采用CRC校验算法对下载的数据进行校验,若数据有误,则重新申请下载,数据校验无误则由数据更新程序将分区数据写入Flash中,数据写入成功后进行重启,完成整个升级过程。
3.4 升级方案测试与验证
为验证双Loader升级方案的功能和可靠性,搭建测试环境对机顶盒的升级功能进行测试验证,测试环境示意图如图8所示。测试的PC机运行双操作系统,在Win⁃dows XP操作系统上安装虚拟机运行Redhat Linux操作系统,同时虚拟机作为宿主机,安装交叉编译环境;PC机通过USB接口连接TS码流播放器,再经过QAM调制器和衰减器后连接至机顶盒的高频头接口,用来播放数字电视节目和升级TS码流;PC机的网口通过交换机和机顶盒的百兆以太网口互联,可以通过网口进行软件升级;PC机的串口通过串口线直接和机顶盒的串口相连,可以验证串口升级功能;升级用U盘直接插至机顶盒的USB接口,用以验证USB升级功能;机顶盒通过HDMI接口可以将音视频信号输出至电视机。
图8 升级功能测试环境示意图
需升级的软件系统在交叉编译环境下编译成功后,在Windows XP操作系统中分别通过机顶盒的高频头、以太网、串口和USB接口对软件系统进行升级,在不同升级过程中分别对机顶盒进行断电操作,在恢复供电后查看机顶盒能否正常启动和重新升级,重新升级后,验证升级参数是否改变。多次反复的测试结果表明,本升级方案在意外情况下均能重新成功升级,实现了升级功能的稳定可靠,完全可以应对用户复杂的升级环境。
4 结束语
本文采用STi7162高清机顶盒专用芯片设计了一种低成本的高清机顶盒,介绍了机顶盒的软硬件总体设计方案。为解决升级方案的稳定性问题,设计了一种基于双Loader的升级方案,从升级方案的软件配置、系统分区到升级检测和实现过程都进行了详细介绍,并搭建测试环境对升级方案进行可靠性测试,测试结果表明,双Loader方案升级功能稳定可靠,可以满足用户环境升级需求。本文设计的高清机顶盒同时具有一定成本优势,方案所属产品已经在某地广电系统批量出货,市场反响较好。
[1] 张晟,郭小勤.数字机顶盒软件设计[J].中国有线电视,2007(14):1367-1369.
[2] 彭锐,于鸿洋,张萍.嵌入式Linux下高清数字机顶盒软件设计[J].电视技术,2010,34(9):52-53.
[3] 黄友明,魏腾雄.数字机顶盒串口升级的设计与实现[J].通信技术,2012(10):55-57.
[4] 林德才,李悦,魏芳.基于STB7100的高清IPTV机顶盒设计[J].电视技术,2008(1):47-49.
Design of HD Set-top Box Based on STi7162
ZHANG Wangyuan
(Jiangsu Automation Research Institute,Jiangsu Lianyungang 222006,China)
A HD set-top box based on STi7162 is designed in this paper.The basic hardware of set-top box,the design of storage subsystem and peripheral interfaces are introduced.The system software structure of set-top box is also introduced.The solutions of software upgrading based on double-loader is highlighted in this paper,and the composition,the partition of Flash, the upgrading condition detection and the process of updating data of the upgrading solutions are described in detail.The solution of software upgrading passes actual test and achieves a safe and secure upgrading feature,which can be used in complex user environment.
upgrading based on double-loader;STi7162;HD set-top box
TN949.197
B
�� 盈
2014-04-08
【本文献信息】张望远.基于STi7162的高清机顶盒设计[J].电视技术,2014,38(21).
张望远(1984—),硕士,工程师,主要进行机顶盒产品开发。