基于MHP的嵌入式浏览器移植与应用

时间:2022-07-24 01:59:27

基于MHP的嵌入式浏览器移植与应用

摘要:基于mhp的浏览器技术的应用增强了数字电视机顶盒的交互能力。以开源浏览器ViewML为例,讲述了嵌入式浏览器在数字电视机顶盒上的移植应用过程。文中介绍了DVB-HTML、嵌入式浏览器的层次结构、GUI及ViewML的运行机制与移植要点,并说明了浏览器针对数字电视平台的改造与优化。对移植效果进行了评价,指出进一步改进的途经。

关键词:数字电视;多媒体家庭平台;嵌入式浏览器;移植

中图分类号:TP393文献标识码:B文章编号:1009-3044(2008)36-2908-03

Porting and Application of an Embedded Browser Based on MHP

CAO Yu-xiao

(School of Computer Engineering of Nanjing Institute of Technology, Nanjing 211167, China)

Abstract: The browser technology based on MHP enhanced interactive ability of digital set-top boxes. This paper presented the process of poring of an open source browser-ViewML and its applications on digital set-top boxes. Introductions and Analyses were given to DVB-HTML, the layered architecture of embedded browser and the key points of porting. Alterations and optimizations based on target platform were also described. The final result was evaluated and improving methods were given.

Key words: digital TV; multimedia home platform; embedded browser; porting

近年来,随着广播、通信技术的发展和广泛使用,家庭多媒体平台(MHP)逐渐成为数字电视进一步发展的趋势。ETSI的MHP规范 [1]规定了MHP从增强广播、交互广播到Internet访问不同的应用领域及各应用领域不同的水平,指明了数字电视最终与Internet技术结合的方向。DVB-J(MHP的JAVA虚拟机接口规范)与DVB-HTML(MHP的网页内容访问规范)是MHP的两个重要组成部分。所以,实现基于DVB-HTML的嵌入式浏览器具有重要的意义。

本文详细阐述了开源浏览器ViewML及相应的GUI(图形用户接口)在ALI公司S3601系列机顶盒芯片(32位RISC架构CPU,32M内存)及TDS(Task Dispatching System, 只具有任务调度及同步功能的简单操作系统)上的移植与优化过程。

1 DVB-HTML简介

DVB-HTML是MHP重要的一部分之一。MHP定义了DVB-HTML应用的生命周期、应用信令、传输协议及内容等几个主要方面,对于实现DVB-HTML应用的浏览器来说,最重要是其内容。DVB-HTML的主要内容是基于W3C(World Wide Web Consortium)推荐标准,涉及技术繁多,主要有HTML4.0, ECMAScript, CSS2和DOM2等,并在此基础上作了针对数字电视环境一系列的修改,如增加了JAVA程序Xlet的接口等。若从头开始实现一个基于DVB-HTML应用的浏览器,无疑技术难度较大,周期过长。而在PC平台,浏览器及开源软件相对比较成熟,这为从PC平台移植浏览器提供了可能。

2 浏览器的层次结构

在Linux操作系统下,典型的浏览器应用的层次结构[2]如图1所示。其中X Window完成低层的消息机制与绘图机制的封装;GTK+或QT则是GUI,实现复杂的窗口控件的绘制及相应事件的处理;窗口管理器及桌面管理器用于管理多窗口及实现方便使用、风格一致的桌面系统。浏览器应用则建立在上述基础之上。在嵌入式平台中,由于资源有限,一般不需要窗口管理与桌面管理。

现有的PC平台开源浏览器有Mozilla、Konqueror及较小尺寸的Dillo、ViewML等,其下层各自依赖于GTK+、QT、Nano-X等GUI。由于目标平台没有完整的图形库支撑,故图形库的移植也是浏览器移植的一个重要组成部分。经过对现有目标硬件平台资源、浏览器功能及需求的分析,选择了Nano-X+FLTK+ViewML架构。在功能上,Nano-X对应于图1所示的X Window及GUI的一部分, FLTK对应于GUI,两者都是轻量级的嵌入式版本。

3 GUI移植

GUI包括Nano-X与FLTK两部分。Nano-X原名Microwindows,在功能上近似等价于Linux系统中的X Window, 只提供低层的绘图管理与消息管理,而没有高层的窗口部件(控件)的管理。Nano-X层次结构比较清晰,从低到高可分为驱动层,绘图引擎层,及API层[3]。它可运行于两种方式,一是客户服务器方式,可同时进行多个客户程序的界面及消息的管理;一是库方式,可作为一个函数库链接入单独的应用中。实践中用的是库方式。

由于目标平台硬件及操作系统功能的巨大差异,Nano-X移植有两个主要任务,一是屏蔽操作系统的差异,一是实现低层的硬件驱动接口。对于操作系统的差异,经过对Nano-X分析,所用到的目标平台没有提供的系统调用有kill,getpid,open,close,read,write,stat,unlink,gettimeofday,select等,对这些调用,采用不同的方式实现。若对系统的功能没有太大的影响,则提供一些空的或简单的适配函数供其调用,如kill,getpid,open,close等。对于功能比较重要的调用,则针对其功能具体实现,其中最主要的是select机制的实现。低层驱动接口主要是显示设备驱动及遥控器驱动。

FLTK(Fast and Light Tool Kits)是一个轻量级的较高层图形库,实现窗口部件(如窗口、按钮、输入文本框等控件)的图形界面管理及事件的分发处理。FLNX全部用C++语言写成,对平台的依赖性较小,很容易通过编译及运行。

3.1 显示设备驱动

Nano-X可工作于Linux Framebuffer之上或X Window之上。其对低层驱动的最低要求是实现ReadPixel、WritePixel、 DrawHorzLine(画水平线)、DrawVertLine(画垂直线)、Blit调用(图形区域的拷贝)等操作。在嵌入式平台的移植,可仿造Linux 下的实现。若系统显示设备提供显示缓冲区的内存映射,则显示驱动只是显示设备的初始化、硬件支持的像素格式的转换及缓冲区地址的设置等工作。目标平台支持内存缓冲区的直接映射,色彩空间使用的不是PC常用的RGB,而是YCbCr, 但硬件提供了RGB到YcbCr的转换支持。在移植中使用了双缓冲策略,在Nano-X中使用的是基于RGB色彩的内存缓冲区,并使用了原在Linux下的驱动层程序,除了Blit调用(Blit采用了DMA加速),其它调用代码基本未作改变。系统周期性将内存缓冲区的内容进行色彩空间的转换并更新到显示缓冲区。

上一篇:《Delphi语言程序设计》教学探讨 下一篇:基于多尺度空间边缘检测的研究