电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 嵌入式系统/ARM技术 > 详细信息
嵌入式系统/ARM技术:嵌入式浏览器Konqueror的移植和汉化
来源:   时间: 2007-6-2 11:32:25    
引言

  目前,嵌入式浏览器已经逐渐成为高端手机和PDA的标准配置。       Konqueror/embeded作为嵌入式Linux操作系统的首选浏览器得到了广泛使用。但是由于该浏览器是自由软件,因此向具体嵌入式平台移植时存在一定的难度。本文主要介绍了Konqueror/embedded向ARM-Linux平台上的整个移植和汉化过程,以便工程师参考和使用。

  Konqueror/embedded的结构

  Konqueror/embedded是由底层网络连接,图形化用户界面和处理HTML绘制的引擎KHTML构成的。底层的通信协议实现是基于KIO/slave机制来实现的;GUI界面采用Kparts组建技术和Qt的基本构件;而作为Konqueror/embedded的核心,KHTML则运用了文档对象模型(DOM)所提供的API接口,并在DOM树上挂接javascript引擎,CSS解析器以及渲染引擎。Konqueror/embedded的层次结构如图1所示。

  
Konqueror/embedded层次结构
图1 Konqueror/embedded层次
 
结构

  Kparts及Qt构件实现GUI

  为了方便地实现将现有应用作为一个控件插入到另外一个应用中去,采用了part对象负责管理整个应用和窗口。对于每个窗口又采取了类似 微软 MFC 中的 Doc-View 结构。因此在将应用嵌入到另外一个应用中的时候,只需要获得part中的接口和数据即可。对窗口的一切操作的响应由被嵌入应用的 part 对象来完成,而类 Doc-View 结构只负责显示和保存数据即可。

  由于Konqueror/embedded是基于图形库Qt/E,因此也遵循了signal、slot消息机制,Konqueror/embedded作为Qt/E的一个标准应用程序进行输入/输出及界面消息响应。

  

       执行DOM 模块

  DOM 模块对经过解析的标记进行语法检查,并把属性看作节点,按照标记的语义包含关系以及先后顺序组织成DOM树。它给HTML 文档定义了一个与平台无关的程序接口,使用该接口可以控制文档的内容、接口和样式。

  在执行DOM模块的过程中,浏览器将所有从语法语义解析模块中获得的标记和属性,按照一定的层次结构组织成DOM 树。完成DOM 树的构筑后,DOM 模块会同时把标记和属性以对象的形式传给绑定模块和脚本引擎模块。

  执行I/O模块

  浏览器加载有关的I/O文件,对HTTP等协议进行解析。语法语义解析模块的解析功能分为两部分:对接收到的字节流进行分词,解析为关键字;调用解析器检验关键字是否合法,若是合法的关键字,则按照规则插入到DOM 树中。

  HTML 的标记和属性统称为HTML的关键字。基本上所有HTML 4. 0 规范的标记都在此功能模块中获得支持。从I / O 模块中接收字节流并进行分词,输出标记;再对标记进行判断,如果是HTML 规范中合法的标记,则把标记看作一个节点,并组织成语法树。对属性标记的解析首先在标记处理类中执行,如果解析不成功,则交由基类的属性解析器进行解析。

编译配置  
图2  编译配置

  
        Konqueror/embedded的移植

  交叉编译工具的安装

  在本文中,运用的交叉编译工具是专门为ARM处理器设计的ARM-CrossToolchain。2.95.3版本的交叉编译工具只能解压到/usr/local/arm/2.95.3目录下,否则在Qt/E编译时会出错。

  为了在任何目录下都能使用工具链,必须要对路径进行设置。用VI编辑器打开/etc/profile文件并添加下述路径:PATH=/usr/local/arm/2.95.3/bin:$PATHQt/E的编译

  Qt是一个跨平台的 C++ 图形用户界面库,目前包括Qt/X11(基于 Framebuffer)和Qt/E(Qt Embedded)。Konqueror/embedded就是基于Qt/E图形用户界面库的,因此在编译Konqueror/embedded之前必须先编译Qt/E。

  编译Qt/X11就是为编译Qt/E提供uic(用户接口编译器),uic用来把.ui文件转成.h和.cpp文件。

  将Qt/X11编译完毕而生成的uic拷贝到Qt/E的bin目录下面。在编译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了。编译Qt/E完成后,在Qt/E的lib目录下会自动生成libQte.so.2.3.7库文件。


文件的原路径和目标板路径
图3  文件的原路径和目标板路径

  
        图形界面Qtopia的编译

  Qtopia 是基于Qt/E的图形界面应用程序集,通过Qtopia真正地将图形界面展现在用户的眼前。而Konqueror/embedded在一般情况下是在Qtopia环境下运行的,所以要用到Qtopia库。也有少数情况不会用到,即系统启动的时候只运行Konqueror/embedded。那么只要在编译Konqueror/embedded的时候配置稍作修改即可,本文只介绍前者。

  在编译Qt/E的时候已经将Qtopia的配置传递给了Qt/E,因此编译Qtopia时就非常容易了,如下所示:

  cd Qtopia-free-1.7.0/src
./configure  -xplatform linux-arm-g++
make

  这样,在b
 
in目录下会生成一组应用程序集,在lib目录下产生了一系列的Qtopia库,给Konqueror/embedded的编译做准备。

  Konqueror/ embedded的编译和安装

  Konqueror/ embedded的编译

  在编译Konqueror/embedded之前,必须将Qt/E和Qtopia的路径指定给编译器。这样编译器才能找到相应的库,从而为Konqueror/embedded提供相应的库文件。

  先设置一些必要的环境变量,然后再按照图2配置和编译Konqueror/embedded。在编译配置时,这些配置选项都是有各自含义的。有些配置选项如果搞错,编译就无法通过,甚至有时候连配置都不能完成。比如Qt/E路径指定不对就会在配置时出错,这些都需要在实际的移植过程中才能体验到。

  Konqueror/embedded的安装

  在Konqueror/embedded编译完成之后,目录下会生成相应的可执行文件。因此Konqueror/embedded的安装主要是指将可执行文件和一些其他的配置文件拷贝到嵌入式系统的文件系统中去。一般来说,Konqueror/embedded运行需要5个文件,图3描绘了这5个文件的原来所在路径和安装到目标板的路径,这些都要手动去拷贝。

  在目标板上运行Konqueror/embedded之前,必须指定几个环境变量,否则Konqueror/embedded会因为找不到库文件而终止运行。预先设置好环境变量,再运行Konqueror/embedded。

  至此,Konqueror/embedded已经安装完毕。但是Konqueror/embedded缺省情况下是不支持中文网页的,而且界面是英文的。某些情况下为了满足特定的需要,其汉化也是非常必要的。

    Konqueror/embedded的汉化

  Konqueror/embedded的汉化可分为两个部分: 一个是Konqueror/embedded本身控制界面的汉化;另一个是Konqueror/embedded对中文网站的访问支持。和其他基于Qt的应用程序一样, Konqueror/embedded中对所有用户可见的文本使用tr()将文本标识出来,这样利用Qt 提供的翻译工具将很容易把这些文本转化成所需要的语言。

  同时Qt 提供了两个宏QT_ TR_NOOP ( ) 和QT_ TRANSLATE_ NOOP ( ) ,可用它们标示出文本,以便于被lupdate 工具提取。具体操作步骤如下:在需要翻译源码的XXX. pro 中加入一项: TRANSLATIONS = XXX. t s;运行lupdate XXX. pro ,生成XXX. ts 文件;运行lrelease XXX. pro 将生成XXX. Qm,并将其改名为XXX_en.qm;启动Qt Linguist 将XXX. ts 文件导入,将需要翻译的内容翻译成中文;翻译完成之后, 点击File →Re2lease ,将文件保存为XXX_zh. Qm;翻译文件保存之后, 在程序源码中需要构建Qt ranslator 实例,利用Qt ranslator 将翻译文件加载到图形界面上。

  在Konqueror/ embedded 中可以通过修改main. c 中的代码来实现UI 的汉化。由于Qt/E是可以支持Unicode编码的,因此Konqueror/embedded也可以支持中文。但是在编译Qt/E的缺省配置中是不支持Unicode的,因此要手动修改qconfig-qpe.h文件的配置:注释掉38行,#define Qt_NO_CODECS。

  修改完毕以后,重新开始编译Qt/E以及Qtopia和Konuqueror/E,Konqueror/embedded就能接受Unicode编码的汉字了。但是要在Konqueror页面上显示,就必须要有相应的字体。因此,对Konqueror/embedded源代码中/konq-embed/dropin/ kglobalsettings.cpp文件进行修改,即将"helvetica"改为"unifont"后重新编译Konqueror/embedded,这样Konqueror/embedded中就能显示中文字体的页面了。

  结语

  本文对嵌入式浏览器Konqueror/embedded技术核心做了简要分析,阐明了该浏览器的先进性与可扩展性,而且阐述了Konqueror/embedded移植到实际使用系统中存在的一系列问题。本文结合了实际的移植经验,详细地说明了整个移植过程对嵌入式浏览器的移植有较好的指导意义。

相关信息
发表评论
打印本页 关闭本页
工业仪表用声光报警器 (二)
    本例介绍的工业仪表用声光报警器,具有电路简单、容易制作、灵敏度高、无需调试等特点,可与各种有电接点的工业测量仪表配合使用。  电路工作原理  该工业仪表用声光报警器电路由检测控制电路、双稳态触发器、LED闪光电路、声音报警电路和+12V稳压电路组成,如图6-147所示。   检测控制电路由工业仪表的控制触头 (受控电接点)Kx、电阻器Rl、R2、稳压二极管VS3和电容器CI组成。...
>>详细内容
车载操作系统的调度算法分析与改进
    摘要 当前没有专门为车栽设备设计的实时操作系统,一般都是对通用嵌入式实时操作系统进行裁剪来完成的,需要很大的工作量。本文介绍一种在嵌入式实时系统中调度所面临的限制以及克服这些限制的调度技术;根据uC/OS-II实时嵌入式系统内核的特殊性,在原有优先级调度算法的基础和某车载设备设计的基础上,提出一种车栽实时操作系统内核的改进方法,其特点是实时性强、稳定性高、面向车...
>>详细内容
工业仪表用声光报警器 (一)
    本例介绍的工业仪表用声光报警器,可与各种使用电接点控制的工业自动化测量仪表配合组成多路报警器,在测量仪表的电接点接通时,声光报警器发出声光报警信号。  电路工作原理  该工业仪表用声光报警器电路由+l2V稳压电路、开关控制电路、振荡器、双稳态触发器和声光报警电路组成,如图6-146所示。   +l2V稳压电路由电阻器R2、R3、滤波电容器Cl、C5、C6和稳压二极管VS组成。...
>>详细内容
μC/OS-II在LPC213X上的多种移植方案
    μC/OS-II是可移植、适用于对安全性要求苛刻的剥夺型实时多任务嵌入式系统,简单易学,在工程应用和嵌入式系统教学中很受欢迎。LPC213X是Philips公司推出的基于ARM7TDMI-S核的32位RISC微处理器,也适合于ARM学习开发平台和工程应用。 1 与μC/OS-II移植工作相关的主要特性  ARM体系结构分为7种运行模式,ARM和Thumb两种工作状态。LPC213X的编程模型就是标准的ARM7体系结构;同时...
>>详细内容
基于DSP的磁存储设备抗冲击技术控制系统的设计与实现
  1 引 言   对数据存储业来说,磁盘驱动器生产商通过增加磁道密度(以每英寸的磁道数为单位)和磁盘转速(以每分钟转数为单位)来扩大计算机硬盘驱动器的容量和改善其性能。随着磁密度的增加,两相邻磁道间的距离变小了。因此,所允许的读/写头和磁道的偏离误差,即磁盘驱动器业内所说的误定位,也相应的降低了,这样硬盘很容易受到伤害。他的工作原理决定其必须使用抗恶劣环境加固技术,...
>>详细内容
异种单片机共享片外存储器及其与微机通信的方法
    摘 要: 介绍了通用单片机(MCU)AT89C51与信号处理单片机(DSP)TMS320C32通过共享片外随机存储器实现板间通信的方法,并给出了总线隔离硬件电路与软件控制流程。文中还简要分析了AT89C51与微机进行串行通信的软硬件设计,通过扩展AT89C51间接实现了TMS320C32与通用单片机或微机之间的通信。  关键词: 单片机 DSP 数字信号处理器 共享存储器 串口通信  TMS320系列数字信号处理单片...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com