3.机顶盒软件堆叠

上篇说完了基本的硬件组成,这篇谈一谈软件栈。

对于一个完整软件来说,层次架构,可配置性,可移植性,都是必不可少的。包括os,tcp/ip协议栈,都具有这种属性。

1.隔离硬件变化,不同的芯片产商,会提供不同的sdk,封装自己的硬件操作接口。但是这对跨平台软件来说,正是一个问题所在。

隔离平台变化,不同的芯片厂商,针对自己的芯片移植了不同的os(例如linux/psos/vxworks/ecos/ucos/os21/...),线程,文件io,锁这些东西,都是会变化的。

所以我们构建在os/driver之上的第一层就是porting层。这个层次上,软硬件功能基本是一一对应的。不会有虚拟设备之类东西出现。

例如,关乎业务最重要的设备,demux。

硬件具体的channel和filter资源数,porting软件上能访问到是一模一样的。

2.要能隔离不同应用需求。这里的应用,专指UI级别的,客户往往会订制不同的UI,但是我们的业务逻辑,比如epg,搜索,切台,是不会变的。我们只需要提供固定接口给UI层。国内比较主流的方式是使用浏览器的方式。通过扩展JS对象,使应用层具有操作硬件的能力。手机平台tizen,也是采用的这种方案。js中除去标准的dom对象外,扩展一些关于业务的对象,比如dvb/ca之类的。

 

满足这两个基本需求后,我们可以思考一下,机顶盒的功能点有哪些,然后可以针对这个,定义不同的js扩展对象。

播放节目,换台,搜索,pvr,vod,push vod,push mail,epg,local player,区域控制,节目排序/喜爱/少儿锁,数据广播,ts流升级。。。。。

这些都是业务功能。同时,数据广播(oc)是很多附加功能的支撑,比如,天气预报,新闻资讯,股票信息,电子书等等,这些数据都是通过oc播发出来。

另外我们还会有支撑功能。比如一些java虚拟机,图形特效,图片解码,字体解析等等。

说完这些。我们就大概知道了这个软件栈的形态。

 

 

在取得一个整体框架的认识后,下篇我们将讨论一些重点功能的实现方式。

posted @ 2012-10-02 23:46  mr_nop  Views(378)  Comments(0Edit  收藏  举报