
主流嵌入式Linux下GUI解决方案.ppt
24页单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,主流嵌入式Linux下GUI解决方案,基本概念介绍,GUI(graphicaluserinterfaces),图形用户界面(GUI),图形用户接口.,为用户提供界面友好的所见所得的操作环境.,主流解决方案,Qt/Embedded 图形库大而全,能够开发较为复杂的图形系统,Microwindows 项目规模较小、功能较为薄弱,缺乏等三方软件开发的支持,MiniGUI小巧、灵活,源码相对较少,基本概念,Qt,Qt是Trolltech公司所开发的一个跨平台FrameWork环境(一个运行的平台,有一堆常用的“库”),多平台的C+图形用户界面应用程序框架,支持组件编程(把系统分割成一些组件或设施的一种思想,修改项目代码的一些部分不会破坏整个系统,),Trolltech,跨平台应用程序界面框架(QT),嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备(Qtopia),Qt/E,Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本,采用C+封装,丰富的控件资源,较好的可移植性,Qt/Embedded,Qt/E实现结构,Qt/Embedded的底层图形引擎基于framebuffer,计算机显示存储器的一部分,存放屏幕图像的内容。
framebuffer是一种驱动程序接口,将显示设备抽象为帧缓冲区,显示内存的一个映像,(用户),QWSserver,负责事件的服务分发,Qt/Embedded,QPE(Qt Plamtop Environment),针对PDA软件的整体解决方案,底层的,GUI系统、Window Manager、Soft Keyboard,上层的PIM(个人信息管理器,)、浏览器,、多媒体,Qtopia是基于QT/Embedded开发的一个嵌入式的窗口系统和应用程序集,Qtopia平台组成,Qtopia 库(Qt/E,libqpe,libqtopia1,qtopiapim),Qtopia server/laucher,控制窗口系统,进程间通信,发起所有应用和其他核心任务的主要服务程序,系统平台介绍,系统平台软件结构图,引导装载程序vivi,设备驱动(包括帧缓存fb),嵌入式Linux内核,文件系统yaffs(只读cramfs,需做修改),基于QT/Embedded和Qtopia的用户图形界面以及应用程序,Driver,Hardware Board,vivi,fb,cramfs,Arm linux kernel 2.4.18,Qt/Embedded,Qtopia,Application,Qt/E、Qtopia,构建GUI时用于 Qt开发的典型工具,tmake:,跨平台的Makefile生成器,moc:,用于Qt C+扩展的metra-object编译器,designer:,用于设计窗口组建的应用程序,(*.ui文件),uic:,从界面文件生成代码的用户界面编译器(*.cpp&*.h),qvfb,(virtual frame buffer):X窗口用来运行和测试Qtopia应用程序的系统程序。
即Qt的虚拟仿真窗口qpe,(Qtopia executable):用来处理所有的用户程序界面,所需要的包,tmake:用来得到tmake工具,/bin:,progen工具:生成.pro文件,tmake工具:组织生成Makefile,Qt/E、Qtopia,所需要的包,:Qt的嵌入式版本/bin:,模拟目标机器的qvfb后台程序,如moc、qvfb、uic,/lib:,qvfb上PC机模拟运行时需要加载的库文件 libqte.so*,:Qt的X11版本,/bin:,在PC机器上的运行的开发工具和编译程序,如desinger、findtr、moc、uic等,/lib:,源文件编译成PC机器X11环境下的共享联接库 libqt.so*,:官方网站提供的Qtopia免费版Qtopia是一个用Qt/Embedded开发的程序:综合的应用程序平台和用户界面,:为了得到qtopia所需的uuid.h和libuuid.soQt/E、Qtopia,建立本机Qtopia 虚拟平台,设定tmake的环境变量,export TMAKEPATH=/root/qtopia/tmake-1.13/lib/qws/linux-x86-g+,指定tmake在生成Makefile时使用本机的编译器,注:环境变量的设置非常重要(指定路径、库、头文件),编译qt-x11,目的:生成moc、uic、qvfb、designer,复制到qt-embeddedbin目录,export QTDIR=$PWDexport PATH=$QTDIR/bin:$PATH(指定命令搜索路径,),export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH(共享库路径,),配置qt-embedded编译选项,./configure-system-jpeg-gif-no-xft-qconfig qpe-qvfb-depths 4,8,16,32,使Qtopia平台支持jpeg、gif格式的图形,指定Qt 嵌入式开发包(qconfig-local.h)生成虚拟缓冲帧工具qvfb,并支持4,8,16,32 位的显示颜色深度,Qt/E、Qtopia,建立本机Qtopia 虚拟平台,使用make命令编译qt-embedded,用来生成Qt库(libqte.so),编译 e2fsprogs,库文件libuuid.so提供uuid支持,唯一字符串生成库,编译,libjpeg、,libpng,得到jpeg/png图形编码解码程序库libjpeg.so,/libpng.so,qtoppia需要Qt/Embedded配置为支持jpeg、gif,配置并交叉编译Qtopia,生成应用程序以及桌面环境,Qt/E、Qtopia,qtopia目录结构,apps/Applications:应用程序桌面配置文件apps/Games:游戏桌面配置文件apps/Settings:系统设置桌面配置文件bin:二进制可执行文件configs:编译配置文件目录doc和docs:qtopia的参考文档etc:应用配置文件目录include/qpe:与qtopia相关的头文件目录inputmethods:输入法library:qtopia部分源代码目录pics:与应用相关的图片存放目录plugins:各种插件目录,如mpeg3解码插件、输入法插件等sounds:音频文件存放目录taskbar:桌面程序的源代码(qpe的源代码),Qt/E、Qtopia,测试Qt/E桌面环境,有源文件progressbar.cpp,指定环境变量TMAKEPATH=/qws/linux-x86-g+,使QTDIR指向Qt/Embedded的安装路径以及库,progen t app.t o progressbar.pro(生成工程文件.pro),tmake-o Makefile hello.pro(生成Makefile文件),使用LINUX系统自带的make进行整个程式的编译联接,生成二进制的可执行文件progressbar,运行qvfb来模拟Virtual framebuffer(指定模拟器长、宽),Qt/E、Qtopia,建立本机Qtopia 虚拟平台,测试Qt/E桌面环境,qvfb-width 640-height 480&,在qvfb上加载二进制文件,运行程式.如:./progressbar-qws,建立本机Qtopia 虚拟平台,在Virtual framebuffer 中实现Qtopia,cd/root/qtopia/qtopia-2.1.1-host/binqvfb&sleep 10./qpe.sh,qvfb:运行Qt 的虚拟缓冲帧工具,把显示结果输出到虚拟缓冲帧,出现桌面环境,Qt/E、Qtopia,qte/qtopia在2410s上的移植,软件环境,PC 机操作系统REDHAT LINUX 9.0,MINICOM,ARM-LINUX 开发环境,配置NFS(网络文件系统),使计算机系统通过网络访问其它计算机系统的目录和文件,远程访问控制,修改etc/export指定文件夹共享可访问,/root/share 192.168.0.*(rw,sync,no_root_squash),配置minicom,友好易用的串口通信程序,/etc/minirc.dfl中编辑系统范围的缺省值,建立arm-linux-gcc交叉编译环境,在某个主机平台上(比如PC上)用交叉编译器编译出可在其他平台上(比如ARM上)运行的代码的过程,生成的编译工具在目录,环境:与PC机不同的库函数和编译器,Host-交叉编译工具链-源代码-二进制文件-目标板可执行,Qt/E、Qtopia,qte/qtopia在2410s上的移植,交叉编译e2fsprogs,./configure-enable-elf-shlibs 支持elf共享库(linux标准可执行程序格式),-host=arm-linux 指定目标机类型,指定编译器,指定连接,指定安装路径,交叉编译jpeg、libpng,需要修改Makefile文件,交叉编译zlib,一个压缩解压程序库,提供库libz.so*,交叉编译tslib,是一个触摸屏的库,它提供诸如滤波、去抖、校准之类的功能,为不同的触摸屏提供了一个统一的接口,提供触摸屏共享库libts.so等,修改交叉编译环境参数文件使其增加对触摸屏的支持,Qt/E、Qtopia,qte/qtopia在2410s上的移植,设定tmake的环境变量,export TMAKEPATH=/root/qtopia/tmake-1.13/lib/qws/linux-arm-g+,指定交叉编译器,交叉编译Qt/Embedded,./configure-xplatform linux-arm-g+-qconfig qpe-qvfb-thread,-system-jpeg tslib-system-zlib-system-libpng-gif-depths 4,8,16,32,-xplatform linux-arm-g+,表示需要交叉编译,编译的目标平台是linux-arm-g+。
具体可查看XPLATFORM文件qconfig qpe,表示这次编译是为了支持QPE(Qtopia),只会生成QPE所需要的库qvfb,qvfb支持如果是在开发板上运行,则不需要qvfbthread,是否支持多线程选择后会生成libqte-mt.so库(挺大的)生成库文件libqte.so.2.3.10*,File命令检查库文件:file libqte.so.2.3.10:ELF 32-bit LSB shared object,ARM,version 1(ARM),not stripped,交叉编译qtopia,Qt/E、Qtopia,qte/qtopia在2410s上的移植,建立宿主机和开发板的通讯,执行 minicom,重启nfs/etc/rc.d/init.d/nfs start,mount t nfs o nolock 192.168.0.155:/root/share/mnt/nfs,所需库文件copy到目标板的/usr/lib目录,所需其他文件copy到指定目录,qte/qtopia在2410s上的移植,使用tslib,修改目标机/etc/profile文件,export TSLIB_TSEVENTTYPE=H3600 对tslib中的设备结构体定义,基于src/ts_read_raw.c文件:查看触摸屏驱动程序数据结构,保证一致,typedef struct unsigned short pressure;unsigned short x;unsigned short y;unsigned short 。












