Chinaunix首页 | 论坛 | 博客
  • 博客访问: 324959
  • 博文数量: 145
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 1510
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-19 11:12
文章分类

全部博文(145)

文章存档

2007年(75)

2006年(70)

我的朋友

分类:

2007-04-20 12:06:34

1.Qt-embeded简介

随着嵌入式Linux应用的不断发展,嵌入式处理器运算能力的不断增强,越来越多的嵌入式设备开始采用较为复杂的GUI系统,手持设备中的GUI系统发展得非常迅速。传统的GUI系统,如Microwindows等,由于项目规模较小、功能较为薄弱,缺乏等三方软件开发的支持等诸多原因,在比较高级的手持或移动终端设备(如PDA、Smart-Phone、车载导航系统)中应用较少。

Qt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本,开发人员多为KDE项目的核心开发人员。许多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded上,与X11版本的Qt在最大程度上接口兼容,延续了在X上的强大功能,在底层彻底摒弃了X lib,仅采用framebuffer作为底层图形接口。Qt/Embedded类库完全采用C++封装。丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面,使用X下的开发工具Qt Designer可以直接开发基于Qt/Embedded的UI(用户操作接口)界面。越来越多的第三方软件公司也开始采用Qt/Embedded开发嵌入式Linux下的应用软件。其中非常著名的Qt Palmtop Environment(Qtopia)早期是一个第三方的开源项目,并已经成功应用于多款高档PDA。Trolltech公司针对Smart-Phone中的应用需求,于2004年5月底发布了Qtopia的Phone版本。

Qt/Embedded的实现技术基础分析横向来看,由于发布的版权问题,Qt/Embedded采用两种方式进行发布:在GPL协议下发布的free版与专门针对商业应用的commercial版本。二者除了发布方式外,在源码上没有任何区别。纵向看来,当前主流的版本为Qtopia的2.x系列与最新的3.0x系列。其中2.0版本系统较多地应用于采用Qtopia作为高档PDA主界面的应用中;3.x版本系列则应用于功能相对单一,但需要高级GUI图形支持的场合,如Volvo公司的远程公交信息系统。图1为Qt/Embedded的实现结构。

3.x版本系列的Qt/Embedded相对于2.x版本系统增加了许多新的模块,如SQL数据库查询模块等。几乎所有2.x版本中原有的类库,在3.x版本中都得到极大程度的增强。这就极大地缩短了应用软件的开发时间,扩大了Qt/Embedded的应用范围

在代码设计上,Qt/Embedded巧妙地利用了C++独有的机制,如继承、多态、模板等,具体实现非常灵活。但其底层代码由于追求与多种系统、多种硬件的兼容,代码补丁较多,风格稍显混乱。

2.配置framebuffer

(1)配置kernel:

执行 make mrproper

make menuconfig

然后按照“刘明”提供的下列选项进行enabling framebuffer support:

Code maturity level options --->
· Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL=Y)
Console drivers --->
· VGA text console (CONFIG_VGA_CONSOLE=Y)
· Video mode selection support (CONFIG_VIDEO_SELECT=Y)
o Frame-buffer support --->
o Support for frame buffer devices (EXPERIMENTAL) (CONFIG_FB=Y)
§ VESA VGA graphics console (CONFIG_FB_VESA)
§ Advanced low level driver options (CONFIG_FBCON_ADVANCED=Y)
§ Monochrome support (CONFIG_FBCON_MFB=Y)
§ 2 bpp packed pixels support (CONFIG_FBCON_CFB2=Y)
§ 4 bpp packed pixels support (CONFIG_FBCON_CFB4=Y)
§ 8 bpp packed pixels support (CONFIG_FBCON_CFB8=Y)
§ 16 bpp packed pixels support (CONFIG_FBCON_CFB16=Y)
§ 24 bpp packed pixels support (CONFIG_FBCON_CFB24=Y)
§ 32 bpp packed pixels support (CONFIG_FBCON_CFB32=Y)

配置结束,保存退出,依次执行

make dep

make bzImage(注意不能执行make zImage,因为其只适用于内核小于1M的情况)。

(2)修改grub.conf

在你所编译内核的项目下的以kernel开头的一行的最后加上 VGA=791 (如果你的分辨率为1024×768),that is OK。然后重新启动电脑,在启动桌面的左上角出现一只企鹅,framebufer安装成功

通过fbset命令检查framebuffer:

#fbset

mode“1024×768-76”

D:78.653MHz, H:59.949KHz, V:75.694Hz

Geometry 1024 768 1024 768 16

Timings 12714 128 32 16 4 128 4

Rgba 5/11 6/5 5/0 0/0

Endmode

3.qt-embeded的安装



通过查询文档发现在X windows下通过qmake命令就可以生成Makefile文件,但是在嵌入式下面需要使用tmake命令才能生成Makefile命令 ,所以下载了tmake1.11(生成Qt/Embeded应用工程的Makefile文件)。并且这次参考了《Qt/Embeded开发环境建立过程》一文。

以root身份进行安装。

cd /root

tar xfz tmake-1.11.tar.gz

生成tmake-1.11文件夹,然后照《Qt/Embeded开发环境建立过程》进行配置。

export TMAKEDIR=$PWD/tmake-1.11
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
export PATH=$TMAKEDIR/bin:$PATH

注销root,重新以root登陆执行

发现系统居然没有tmake命令,看来export命令只是暂时有效,所以在/root下的.bash_profile下设置路径将命令修改如下:

TMAKEDIR=$HOME/tmake-1.11
TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

PATH=$TMAKEDIR/bin:$PATH

export TMAKEDIR TMAKEPATH PATH

执行

#tmake

Usage:

tmake [option] project –files

options:

-e expr Evaluate expression,ignore template file

-nodepend Don’t generate dependency information

-o file Write output to file

-t file Specify a template file

-unix Creat output for Unix (auto detects)

-v Verbose / debug mode

-win32 Create output for Win32 (auto detects)

tmake安装成功。

其次在/root下安装Qt/Embedded 2.3.7,执行

tar xfz qt-embedded-2.3.7.tar.gz
cd qt-2.3.7,
在root下的.bash_profile下设置路径,代码如下:

QTDIR=$HOME
QTEDIR=$QTDIR
PATH=$QTDIR/bin:$PATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QTDIR QTEDIR LD_LIBRARY_PATH
./configure -qconfig -qvfb -depths 4,8,16,32
make sub-src
cd ..

上述命令 ./configure -qconfig -qvfb -depths 4,8,16,32 指定Qt 嵌入式开发包生成虚拟缓冲帧工具qvfb,并支持4,8,16,32 位的显示颜色深度。另外我们也可以在configure 的参数中添加-system-jpeg 和gif,使Qt/Embedded 平台能支持jpeg、gif格式的图形。上述命令 make sub-src 指定按精简方式编译开发包,也就是说有些Qt 类未被编译。Qt 嵌入式开发包有5 种编译范围的选项,使用这些选项,可控制Qt 生成的库文件的大小,但是您的应用所使用到的一些Qt 类将可能因此在Qt 的库中找不到链接。编译选项的具体用法可运行./configure -help 命令查看。

阅读(683) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~