软件主要包括嵌入式的操作系统和各类驱动及应用软件。由于当前Linux有着优良的可移植性和广泛的兼容性,因此在本方案中操作系统采用μCLinux实现,而应用软件主要包括电子节目指南、数字版权保护和条件接收、浏览器、图形用户界面、软件解码模块等。
2.1嵌入式操作系统
μCLinux是面向MMU(内存管理单元)设计的嵌入式操作系统。内核由Linux2.0Kernel发展而来,同标准Linux相比,它继承了原有的工作稳定性强、网络功能强大等主要优点。此外,它具有占用空间小、执行效率高等特点,由于IPTV机顶盒需要实现各种基于网络的增殖业务,因此对于网络通信协议的需求比较广泛,μCLinux包括TCP/IP等多种网络协议,能够支持当前各种基于IP的业务,同时它还具有良好的开放性,任何新协议都可以很方便地加入到内核中,具备了持续升级的可扩展能力。
在使用μCLinux进行软件设计时,一个需要着重考虑的问题是内存管理,由于EM8620没有MMU管理存储器,因此μCLinux不能使用虚拟内存管理技术,内存访问应采用直接寻址方式,所有程序访问的地址都是实际的物理地址,操作系统内存空间失去保护后,系统内各个进程实际上是共享同一个内存空间,因此在设计多进程任务时就需要特别注意进行内存保护,防止程序操作越界溢出。具体而言,就是在每个进程初始化时,μCLinux会根据用户的申请分配一段连续的堆栈地址空间,而后该进程中所有的数据操作都在此内存空间内完成,所以开发人员必须对每个任务进程所需的最大内存空间做出正确估计和分配,一旦生成的数据空间大于所分配的内存空间,就会产生内存溢出,侵犯其他程序的地址空间,从而导致程序的运行异常,严重者将导致系统崩溃。传统Linux最大的缺点之一是,系统非正常关闭后,经常会产生硬盘碎片,使操作系统无法正常引导启动,此处,将μCLinux编译后烧写到Flash上采用Flash内核启动方式,避免了上述缺点。
2.2应用软件
2.2.1电子节目指南
电子节目指南是用户获取电视节目播出信息的直接途径,从现有数字电视用户的调查中发现,电子节目指南是当前最受用户欢迎的功能,电子节目指南一般包括电视节目单、节目简介、当前节目信息显示、节目预定等多个环节,通常它的设计采用基于中间件或定制编写软件模块的方式实现,过程复杂、灵活度差。此处采用基于浏览器的电子节目指南设计,电视节目信息以HTML方式或XML方式传送,机顶盒接收后利用浏览器显示给用户观看,其风格和浏览方式都具有很强的灵活性,由于其他类型的增殖业务如网络浏览、电视购物等方式都需要浏览器,因此使用浏览器不会增加系统的额外开销。
2.2.2数字版权保护
数字版权保护设计分为两种,一种是针对已录制节目的保护,另一种是针对实时播出节目的保护,由于机顶盒具有个人录像机功能,用户能够方便地将实时播出的电视节目录制到硬盘上,并通过USB接口拷贝出去进行散发。为防止这种盗版拷贝的情况发生,设计了严格的数字版权保护模块,当用户进行录像时,对存储到硬盘的节目进行加密处理,加密密钥由每个机顶盒特有的硬件信息生成,这样即使将节目拷贝到其他同类型机顶盒中也不能进行播放,从而实现了严格的版权保护功能,对于实时播出的加密节目,沿用了基于智能卡的工作方式,首先提取IP网络传送过来的密钥数据流,通过UART接口送到智能卡中进行解密,解密后控制字存储在内存中使用后即刻销毁,防止盗取和破解。
2.2.3图形用户界面
为方便地对IDE硬盘及其他接口进行操作,此处为用户提供了图形用户界面,它采用MiniGui引擎,界面启动后,用户可以通过遥控器或连接USB鼠标/键盘非常方便地进行操作。
除了上述应用软件外,还可支持各种Java、flash程序运行,便于实现电视购物、在线游戏等功能,此外其包括WMV9、Real等一系列多媒体播放程序,用于各种类型的网络音视频节目及本地的DVD光盘播放。