新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ARM LINUX的嵌入式GUI的研究和移植

基于ARM LINUX的嵌入式GUI的研究和移植

作者: 时间:2012-04-23 来源:网络 收藏

QT/Embedded和Qtopia

QT/Embedded是著名的QT库开发商TrollTech开发的framebuffer、面向系统的QT版本。它的特点主要有界面美观、色彩配比好,使用与QT/Windows和QT/X11完全一致的API接口,许多QT的程序可以非常方便地系统;同时它具有丰富的模块,用户可以根据需要选择QT/Embedded的特性集合。Qtopia是TrollTech专门为Linux设备所定制终端用户平台,它包括了Qtopia库和Qtopia的服务器及客户端应用程序。

QT/Embedded和Qtopia的结构如图2所示。QT/Embed2ded实现了对下层输入设备的驱动和底层图形接口以及各基类和API。Qtopia也是以客户/服务器的方式,通过消息机制来管理各种应用程序。QT的资源相当丰富,QTAPI开发的应用程序相当多,像KDE这种应用范围极广的也是使用QTAPI开发出来的;而且OPIE组织也开发了并改进了许多专门基于QT/Embedded上的Qtopia应用程序及函数库。

不过QT/Embedded对于系统的资源要求非常高,需要在较大的存储空间和运行空间上才可以运行;而且它是基于C++来实现的,而这种C++接口对于嵌入式系统中的某些应用来说就显得比较臃肿;另外如若需要修改QT/Embedded并在商业产品中发布,则需要分别购买开发授权及运行时授权,所需费用太昂贵。

基于Linux平台的

编译环境的建立

的编译通常都是在PC机上执行的,也就是说,编译器本身能够在PC机上执行,同时编译源代码生成的二进制文件必须能在目标机上执行,这类编译器通常称为交叉编译器。对于平台,我们安装了cross-arm-binutils-*.i386.rpm、cross-arm-gcc-*.i386.rpm、cross-arm-glibc-*.i386.rpm这三个包。这些包都可以从网上免费获取,“*”通常代表版本号。arm-binutils这个包一般包含了一些针对平台的二进制工具,比如arm-STrip、arm-ar等命令;arm-glibc这个包包含的是标准C的函数库的ARM的版本以及对应的头文件;arm-gcc中包含的则是生成ARM平台代码的x86上的交叉编译器。执行rpm命令将这些包安装到PC机上,若不在系统默认搜索目录下,比如安装在/opt/cross目录下,则必须将/opt/cross/bin目录加到系统的PATH环境变量中,这样在每次编译时系统才能找得到编译器。另外需要注意的是,编译时所用的函数库版本要与目标版上运行时所用的函数库版本一致。经过上述步骤,就已经建立了交叉编译环境,接下来的就是选择或修改的编译选项,从而生成所需要的GUI系统。

Microwindows的

Microwindows的定制和编译主要是通过修改它源程序根目录下的cONfig这个文件中的选项来实现,而在configs这个目录下已经有一些针对不同平台的config文件,若目标平台与之定义的相符,可直接将其拷贝到根目录下覆盖掉原有的config文件,然后输入命令make来开始编译。另外还可以执行根目录下的xconfigure文件,它提供了一个可视化的窗口来方便用户进行编译选项配置。下面介绍一下其中主要的一些选项:

目标平台选项。ARCH表示目标机的平台,比如ARCH=-ARM,BIGENDIAN表示目标平台是否为大数端;

图像支持选项。HAVE-BMP-SUPPORT=Y、HAVEJPEG-SUPPORT=Y两项表示对BMP和JPEG格式图像的支持(还有其它格式选项)。设置JPEG图像选项时必须给出外部jpeg解压缩库的位置,例如LIBJPEG=/usr/lib/libjpeg.a;

字体支持选项。HAVE-FREETYPE-SUPPORT=Y、HAVE-T1LIB-SUPPORT=Y表示支持TrueType和AdobeType1字体,这些库也必须预先编译并在配置文件中指定其位置,Microwindows的网站上提供了许多字库函数的下载。另外,Microwindows还提供了中文BIG5、GB2312以及日文和韩文的支持;

输出显示选项。FRAMEBUFFER=Y表示使用Linux上的framebuffer来实现显示,当然Microwindows也支持X11显示;

输入设备选项。Microwindows提供了一系列的鼠标(包括触摸屏)和键盘的支持,可以根据不同的系统选择适当的选项。

配置完成后,执行make命令开始编译。编译完成后,将生成的库以及可执行文件打包下载到目标板上。如果库文件没有放在目标系统的默认搜索库的路径中,那么还需将此目录加到LD-LIBRARY-PATH环境变量中,然后即可以运行nano-X服务器及各应用程序。

MiniGUI的移植

下载MiniGUI的库文件源代码包libminigui-3.tar.gz和资源文件包minigui-res-3.tar.gz以及演示程序包mde-3.tar.gz后,将它们分别解压到各自的目录下。首先介绍库文件的编译,它的编译配置主要通过执行源程序根目录下configure这个文件,并给它传递相关的参数来实现。比如:CC=arm-linux-gcc./configure———host=i386-linux———target=arm-linux。其中,CC参数表示所使用的编译器名,host表示编译环境所在的主机类型,target表示编译生成后目标系统的主机类型,当前默认编译生成的是MiniGUIThread版本,如果要生成MiniGUILite版本需再加上参数———enable-lite,更多参数可以通过执行。/configure-help来查询。在执行configure之前,根据硬件特性可以修改根目录下的etc目录下的Minigui-3d.cfg和Minigui-flat.cfg两个文件中的选项。比如,如果目标系统的framebuffer大小是320X240,每像素占12bits,则将上述两个文件中[fbcon]组中的defaultmode的值就应设置为320X240-12bpp。配置完成以后执行make命令开始编译,编译结束后执行makeinstall命令,在/usr/local/lib下面会生成交叉编译出来的动态库和静态库文件。其次,资源文件的安装比较简单,解压以后在其根目录下有一个名叫config.linux的文件,修改其中的TOPDIR一项,这样执行makeinstall安装命令以后,所有资源文件会被安装到TOPDIR所定义的目录下的usr/local/lib/minigui下。最后演示程序包的编译与库文件编译类似,也是执行其根目录下的configure文件并传递相关参数,然后执行make命令来编译。若编译库文件时选择———enable-lite参数,由于MiniGUI-Lite采用的是微客户端/服务器架构,要运行应用程序必须先启动服务器程序mginit,然后才能运行其它的应用程序;若编译库文件时没有添———enable-lite参数,则mginit目录根本不会编译进去,演示程序可以直接执行。

17.jpg


linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程




评论


相关推荐

技术专区

关闭