嵌入式浏览器Konqueror/E的实现

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:PoolD
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Konqueror/embedded是针对嵌入式Linux的开放源码浏览器,也是符合GNU条款的自由软件。本文首先对该浏览器技术核心做了简要分析,然后详细介绍了Konqueror/embed-ded在ARM-Linux操作系统上的移植过程。
  关键词:Konqueror;嵌入式浏览器;ARM-Linux;移植;汉化
  随着网络科技的进步,因特网与无线网络的融合将成为必然趋势。要在嵌入式设备上访问因特网,浏览器是必不可少的。目前,嵌入式浏览器已经逐渐成为高端手机和PDA的标准配置。嵌入式浏览器的另一大作用就是在网页中利用CGI(Common Gateway Interface:通用网关接口)来调用其他可执行程序。这样控制页面可以做的很美观,而且可扩展性好。
  


  现在已经面市的嵌入式浏览器大多是商业版本的,如Opera、MS Explorer等。而Konqueror/embedded是符合GNU条款的自由软件。Konqueror/embedded是针对嵌入式Linux,由著名的桌面操作环境KDE下的浏览器Konqueror派生出来的。Konqueror/embedded将Konqueror中关于KHTML,SSL(Security Socket Layer,安全套接层),Javascript等内容继承下来,同时简化了Konqueror中很多类的定义,剔除了原来KDElib部分,以适应在不同的嵌入式平台下能构成功移植和运行。Konqueror/embedded完整地支持HTML4(Hyperext Markup Language,超文本链接标示语言)和CSSL(cascading StyleSheets,层叠样式表单)部分支持CSS2、JavaScript(ECMAScript 262)、cookies、SSL、IPv6;支持和管理兼容的XBEL的书签,并且能够很好地支持中文网页浏览。而且还可以将Konqueror/embedded作为一个flashplayer、pppdialer或文件管理器来使用。
  Konqueror/embedded作为嵌入式Linux操作系统的首选浏览器,被广泛的使用。但是由于该浏览器是自由软件,因此向具体嵌入式平台移植时存在一定的难度。本文第三部分详细的介绍了Konqueror/embedded向ARM-Linux平台上的整个移植过程。
  图1为Konqueror/embedded在Embedded-Linux平台上运行界面。
  
  Konqueror/E结构
  
  


  Konqueror/embedded是由底层网络连接,图形化用户界面和处理HTML绘制的引擎-KHTML构成的。底层的通信协议实现是基于KIO/slave机制来实现的;GUI界面采用Kparts组建技术和Qt的基本构件;而作为Konqueror/embedded的核心-KHTML则运用了文档对象模型(DOM)所提供的API接口,并在DOM树上挂接javascript引擎,CSS解析器以及渲染引擎。
  Konqueror/embedded的层次结构如图2所示。
  
  Kparts及QT构件实现GUI
  在KDE中,部件被称为part,这和MS中的OLE组件是一个概念。一个part通常包含三个部分:一个窗口、功能、以及使用该功能的用户接口。应用在浏览器项目中,part包含了多个窗口(一个页面对应于一个part,而一个页面有可能包含多个窗口),part提供的功能包括:页内、页间的跳转、重定向、窗口的创建和删除、用户的输入处理、剪切、粘贴等,同时为使用这些功能提供了菜单、工具条、状态条等用户接口。其他的应用程序可以使用该part把浏览器窗口嵌入到自己的应用中。
  为了方便地实现将现有应用作为一个控件插入到另外一个应用中去,采用了part对象负责管理整个应用和窗口。对于每个窗口又采取了类似Microsoft MFC中的Doc-View结构。因此在将应用嵌入到另外一个应用中的时候,只需要获得part中的接口和数据即可。对窗口的一切操作的响应由被嵌入应用的part对象来完成,而类Doc-View结构只简单的负责显示和保存显示数据就可以了。
  Kpart定义了一系列简单的类:part、plugin、mainwindow、part manager。其中:
  a)Part:是KDE中的部件。为了定义一个Part,你需要提供widget,当然还有提供访问Part功能的Actions,还要有一个XML文件来描述在UI中Actions的布局。
  b)Plugin:它是一小段功能程序,不通过嵌入一个Widget来实现。但是定义了应用程序用户接口对应的动作。它可以是图形的,比如弹出的对话框、拼写检查等。
  c) Mainwindow:它是一个特殊的KTMain Window,它的具有Action定义的UI是由XML文件来描述的,这样它可以通过弥合XML文件来嵌入Part对象。
  d)Part manager:它是一个抽象的类,用来处理激活还是禁止part。它只有在一个mainwindow中包含多个part的时候才有用。
  由于Konqueror/embedded是基于图形库QT/E,因此也遵循了signal、slot消息机制,Konqueror/embedded作为QT/E的一个标准应用程序进行输入输出及界面消息响应。
  
  执行DOM模块
  DOM模块对经过解析的标记进行文法检查,并把属性看作节点,按照标记的语义包含关系以及先后顺序组织成DOM树。它给HTML文档定义了一个与平台无关的程序接口。使用该接口可以控制文档的内容、接口和样式。
  在执行DOM模块的过程中,浏览器将所有从语法语义解析模块中获得的标记和属性按照一定的层次结构组织成DOM树。完成构筑DOM树的功能后,DOM模块会同时标记和属性以对象的形式传给绑定模块和脚本引擎模块。
  
  执行1/O模块
  浏览器加载有关的I/O文件,对HTTP等协议进行解析。语法语义解析模块的解析功能分为两部分:①对接收到的字节流进行分词,解析为关键字;②调用解析器检验关键字是否合法,若是合法的关键字,则按照规则插入到DOM树中。
  HTML的标记(tag)和属性(attribute)统称为HTML的关键字。基本上所有HTML4.0规范的标记都在此功能模块中获得支持。从I/O模块中接收字节流并进行分词,输出标记;再对标记进行判断,如果是HTML规范中合法的标记,则把标记看作一个节点,并组织成一棵语法树。对属性标记的解析首先在标记处理类中执行,如果解析不成功,则交由基类的属性 解析器进行解析。
  以上简要介绍了Konqueror/E的几个核心技术,下面结合实际详细介绍Konqueror/E的移植和汉化过程。
  
  Konqueror/E的移植
  
  交叉编译工具的安装
  准备文件:
  


  当编译器运行在一个为另一系统产生可执行程序的系统上时,就会出现交叉编译。通常,程序是在一台计算机上编译,然后再分布到将要使用的其他计算机上。当主机系统(运行编译器的系统)和目标系统(产生的程序将在其上运行的系统)不兼容时,该过程就叫做交叉编译。
  


  在本文中运用的交叉编译工具是ARM—CrossToolchain,这是专门为ARM处理器设计的交叉编译工具。该工具主要包含:交叉编译器(arm-linux-gcc),编译库(glibc),包含文件(头文件)和一些与ARM处理器相关的其他工具。这些工具都包含在cross-2.95.3.tar.bz2压缩包文件中,这个交叉编译工具在一般开发板的软件包中都有。
  值得一提的是,本文所使用的所有软件包,都能在网上免费下载到。
  工具补丁主要是提供一些编译QT/E和Qtopia时需要用到的库,其中包含了uuid库,Jpeg库在Qtopia和Konqueror/E编译时将要用到。有了这些工具就可以进行交叉编译环境的建立了,如图3所示。
  注 意2.95.3版本的交叉编译工具只能解压到/usr/local/arm/2.95.3目录下,否则在QT/E编译时会出错。接下来如图4所示,编译和安装Jpeg库。
  为了之后在任何目录下面都能够使用工具链,必须要对路径进行设置。用VI编辑器打开/etc/profile文件并添加下述的路径:
  PATH=/usr/local/arm/2.95.3/bin:$PATH
  QT/E的编译
  准备文件:
  文件  版本号  文件名
  QT/X11 2.3.2  qt-x11-2.3.2.tar.gz
  QT/E  2.3.7  qt-embedded-2.3.7.tar.gz
  


  Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前包括QT/X11(基于Framebuffer)和QT/E(Qt Embedded)。Konqueror/E就是基于QT/E图形用户界面库的,因此在编译Konqueror/E之前必须先编译QT/E。
  编译QT/X11的唯一目的就是为编译QT/E提供uic(用户接口编译器),uic用来把.ui文件转成.h和.cpp文件。
  如图5所示将QT/X11编译完毕生成uic拷贝到QT/E的bin目录下面。接下来编译QT/E,在编译QT/E之前先要将Qtopia的一个配置文件拷贝到QT/E中,表示QT/E的配置是按照Qtopia要求的。
  cp qtOpia-free-1.7.0/src/qt/qconfig-qpe.h qt-embedded-2.3.7/src/tools/
  之后就可以设置环境变量,编译QT/E了。
  图6所示编译QT/E完成后,在QT/E的lib目录下会生成libqte.so.2.3.7库文件。
  
  图形界面Qtopia的编译
  准备文件:
  


  Qtopia是基于QT,E的图形界面应用程序集,通过Qtopia真正地将图形界面展现在用户的眼前。如果说QT/E是灵魂,那么Qtopia就是肉体。而Konqueror/E在一般情况时是在Qtopia环境下运行的,所以要用到Qtopia库。也有少数情况时用不到,也就是说系统启动的时候只运行Konqueror/E。那么只要在编译Konqueror/E的时候配置稍作修改即可,本文只介绍前者。
  在编译QT,E的时候已经将Qtopia的配置传递给了QT/E,因此编译Qtopia时就非常容易了:
  cd qtopia-free-1.7.0/src
  ./configure-xplatform linux-arm-g++make
  这样在bin目录下会生成一组应用程序集,在lib目录下产生了一系列的Qtopia库,给Konqueror/E的编译做准备。
  ·Konqueror/E的编译和安装
  准备文件:
  


  经过实践证明上面版本的Konqueror/E比较稳定,因此我们选择了该版本的源文件进行编译。
  ·Konqueror/E的编译
  在编译Konqueror/E之前,必须将QT/E和Qtopia的路径指定给编译器。这样编译器才能找到相应的库,从而为Konqueror/E提供相应的库文件。
  先要设置一些必要的环境变量,然后再配置和编译Konqueror/E。当然在编译配置时,这些配置选项都是有各种含义的。有些配置选项不能搞错,不然就会编译不通过,甚至有时候连配置都不能完成。比如QT/E路径指定不对就会在配置时出错,这些都需要在实际的移植过程中才能体验到的。
  ·Konqueror/E的安装
  在Konqueror/E编译完成之后,目录下会生成相应的可执行文件。因此Konqueror/E的安装主要是指将可执行文件和一些其他的配置文件拷贝到嵌入式系统的文件系统中去就行了。一般来说,Konqueror/E运行需要五个文件。
  当然在目标板上运行Konqueror/E之前,必须指定几个环境变量,否则Konqueror/E会找不到库文件而终止运行。
  至此,Konqueror/E已经安装完毕。但是Konqueror/E缺省情况下是不支持中文网页的,而且界面是英文的。某些情况下为了满足特定的需要,这两者是非常必要的。
  
  结语
  
  本文对嵌入式浏览器Konqueror/embedded技术核心做了简要分析,阐明了该浏览器的先进性与可扩展性,而且该浏览器是开源的符合GNU条款的自由软件。因此对Embedded-Linux下嵌入式浏览器的使用者来说,Konqueror/em-b e d d e d无疑是一个最佳选择。但是在Konqueror/embedded移植到实际使用系统中,存在一系列的问题。如果说没有移植经验的人就会觉得完全无从下手,本文除了移植Konqueror/E以外还完成了Qtopia的移植。因为本文最终达到了在图形界面Qtopia上运行Konqueror/E。
  笔者结合了实际的移植经验,详细地说明了整个移植步骤。将理论与实际结合起来,而不是纸上谈兵。因此本文对嵌入式浏览器的移植有着非常重要的实际意义,同时也希望能给浏览器开发者和使用者们带来参考价值。(本文全文刊登于《电子产品世界》网站)
  参考文献:
  1 张晓林,崔迎炜,嵌入式系统设计与实践.北京:北京航空航天大学出版社2006
  2 倪继利,Qt及Linux操作系统窗口设计,北京电子工业出版社,2006
  3 http://www.konqueror.org/embedded/
  4 http://www.frolltech.com/
  注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
其他文献
为配合我国不断加大的环境污染治理,信息产业部最近首次出台了电子信息产业防污控制三大配套行业标准,从2007年3月1日正式实施。即《电子信息产品中有毒有害物质的限量要求》、《电子信息产品污染控制标识要求》、《电子信息产品中有毒有害物质的检测方法》。根据《电子信息产品污染控制标识要求》,今后凡在中国境内销售的电子产品均需要按标准要求,标注电子信息产品污染防治标志。此外,电子信息产品还应该按规定,标注出
期刊
J-FET的自偏压特性可被用来设计一个从低至300mV的电压获取电源的DC/DC转换器。太阳能电池、热电堆和单级燃料电池等均具有低于600mV的输出电压,它们是这种转换器的常用电源。  图1为N沟道J-FETI-V曲线图,它示出了零偏压(栅极和源极连接在一起)条件下的漏源极导通情况。该特性可被用来制成一个可在0.3V至1.6V输入电压条件下运行的自起动DC/DC转换器。    图2示出了该电路。Q
期刊
摘要:当电路中有电压存在时,在所有带电的元器件周围都会产生电场,当电路中有电流流过的时候,在所有载流体的周围都存在磁场,所有的电子和电气设备都是潜在的电磁干扰(EMI)源。本文在电磁干扰未到达被干扰设备前,根据其传播的特点,采用各种手段将传播切断或削弱,迟到抑制干扰的目的。干扰经导线直接传导耦合到电路中是最常见的。抑制由导线直接传导的干扰,主要措施是串接滤波器。  关键字:电源滤波器;共模干扰;差
期刊
据国内媒体透露,中国科学院计算技术研究所所长李国杰院士日前表示,龙芯2E在法国流片成功以后,在全世界排名第五的集成电路生产厂商——意法半导体公司决定购买龙芯2E的生产和全球销售权。今年6月,中科院计算所和意法半导体公司签订技术许可协议,该公司计划每年销售龙芯芯片1000万片以上。“十五”期间,中科院计算所在863计划支持下,继2002年研制成功龙芯1号处理器芯片后,近年分别研制成功龙芯2的不同型号
期刊
NXP半导体(前身为飞利浦半导体)正式宣布将以“恩智浦半导体”为其中文品牌名称,在大中华地区进行相关的市场营销与运营活动。除原有的英文品牌名NXP之外,恩智浦半导体希望借此进一步其新品牌与大中华地区客户的沟通,进而提升品牌知名度。恩智浦中文名称中的“浦”字,强调恩智浦累积过去在飞利浦53年以来的珍贵经验与丰富资源。恩智浦的产品技术与解决方案应用于以下五个市场领域:汽车电子、智能识别、家庭娱乐、手机
期刊
日前在“2006年中国嵌入式系统年会”上,信息产业部经济体制改革与经济运作司经济运行处处长高素梅透露,“国家税务部门对嵌入式软件的政策将有‘松动’”。由于中国缺乏对嵌入式系统软件的计算标准,为了避免出口退税流失,2005年底财政部、国家税务总局出台的《关于增值税若干政策的通知》,取消了嵌入式软件增值税退税的政策。这一政策的调整挫伤了嵌入式软件企业的积极性。高素梅透露,经过信产部与税务部门的沟通协调
期刊
美国国家半导体公司(NationalSemiconductor Corporation,国半)宣布推出一款可支持下一代基站结构的串行/解串器,该款CPRI(Common PublicRadio Interface)串行/解串器据称是全球第一颗延迟校准测量准确度达到正负800ps的芯片,而且在信号电压及抖动方面的表现也超过了CPRI接口标准的有关规定。此外,这款型号为SCAN25100CPRI的串行
期刊
据海外媒体报道,明基现有的手机生产基地将全部关闭,仅保存其在上海新近建成的生产基地。明基位于上海的手机生产基地于今年3月份始建。预计将于2007年第三季开始为明基量产手机,每月产量约为180万部。而同时它也将足明基唯一的手机产品制造基地。明基从西门子手中收购过来的手机部门处于持续亏损状态,因此明基不得不改变其在手机市场上制定的策略。目前明基设于德国、台湾以及墨西哥的手机生产基地均已先后关闭,而其建
期刊
2006年11月3日,康宁公司(corning)中国新的液晶显示器(LCD)玻璃基板后段加工工厂在北京亦庄经济开发区举行了奠基典礼。据称康宁是首家宣布将在中国大陆建造生产厂的TFT-LCD玻璃基板供应商,新工厂预计将于2008年上半年建成投产。  康宁公司总裁兼首席执行官魏文德说:“这一即将建造的工厂将有力地见证我们对不断发展的中国TFT-LCD行业的坚定承诺。在我们为这个国家最重要的行业之一提供
期刊
本刊记者:汝水    由香港贸易发展局举办的第26届“香港秋季电子产品展”于10月13日至16日举行,来自世界各地29个国家和地区约2500家电子产品供应商云集香港会展中心。会场中3700个不同类型摊位,为全球买家提供优质的采购平台。与电子产品展同期举行的“国际电子组件及生产技术展”吸收来自14个国家和地区540家参展商。两大展览合计共有4400个摊位,有6300多名来自44个国家和地区的买家参加
期刊