主流嵌入式Linux下GUI解决方案.ppt

上传人:小飞机 文档编号:5178453 上传时间:2023-06-11 格式:PPT 页数:24 大小:214KB
返回 下载 相关 举报
主流嵌入式Linux下GUI解决方案.ppt_第1页
第1页 / 共24页
主流嵌入式Linux下GUI解决方案.ppt_第2页
第2页 / 共24页
主流嵌入式Linux下GUI解决方案.ppt_第3页
第3页 / 共24页
主流嵌入式Linux下GUI解决方案.ppt_第4页
第4页 / 共24页
主流嵌入式Linux下GUI解决方案.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《主流嵌入式Linux下GUI解决方案.ppt》由会员分享,可在线阅读,更多相关《主流嵌入式Linux下GUI解决方案.ppt(24页珍藏版)》请在三一办公上搜索。

1、主流嵌入式Linux下GUI解决方案,基本概念介绍 GUI(graphicaluserinterfaces)图形用户界面(GUI),图形用户接口.为用户提供界面友好的所见所得的操作环境.主流解决方案 Qt/Embedded 图形库大而全,能够开发较为复杂的图形系统 Microwindows 项目规模较小、功能较为薄弱,缺乏等三方软件开发的支持 MiniGUI小巧、灵活,源码相对较少,基本概念,Qt Qt是Trolltech公司所开发的一个跨平台FrameWork环境(一个运行的平台,有一堆常用的“库”)多平台的C+图形用户界面应用程序框架 支持组件编程(把系统分割成一些组件或设施的一种思想,修

2、改项目代码的一些部分不会破坏整个系统)Trolltech 跨平台应用程序界面框架(QT)嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备(Qtopia)Qt/E Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本采用C+封装丰富的控件资源较好的可移植性,Qt/Embedded,Qt/E实现结构Qt/Embedded的底层图形引擎基于framebuffer 计算机显示存储器的一部分,存放屏幕图像的内容。framebuffer是一种驱动程序接口 将显示设备抽象为帧缓冲区 显示内存的一个映像(用户)QWSserver 负责事件的服务分发,Qt/Embedded,QPE

3、(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内核 文件系统

4、yaffs(只读cramfs,需做修改)基于QT/Embedded和Qtopia的用户图形界面以及应用程序,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):用来处理所有的用户程序界面所需

5、要的包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开发的程

6、序:综合的应用程序平台和用户界面:为了得到qtopia所需的uuid.h和libuuid.so。,Qt/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:$

7、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,用来生成Q

8、t库(libqte.so)编译 e2fsprogs库文件libuuid.so提供uuid支持 唯一字符串生成库编译libjpeg、libpng得到jpeg/png图形编码解码程序库libjpeg.so/libpng.soqtoppia需要Qt/Embedded配置为支持jpeg、gif 配置并交叉编译Qtopia生成应用程序以及桌面环境,Qt/E、Qtopia,qtopia目录结构 apps/Applications:应用程序桌面配置文件apps/Games:游戏桌面配置文件apps/Settings:系统设置桌面配置文件bin:二进制可执行文件configs:编译配置文件目录doc和docs

9、: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 prog

10、ressbar.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

11、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)配置mini

12、com友好易用的串口通信程序/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 指定目标机类型 指定编译器 指定连接

13、指定安装路径 交叉编译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-x

14、platform 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支持。如果是在开发板上运行,则不需要qvfb。-thread,是否支持多线程。选择后会生成libqte-mt.so库(挺

15、大的)。生成库文件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 startmount t nfs o nolock 192.168.0.155:/root/share/mnt/nfs所需库文件copy到目标板的/usr/lib目录所需其他文

16、件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 pad;TS_RET;驱动程序提供给上层应用程序使用的信息,用来存储触摸屏的返回值,项目进度,触摸屏坐标确定 触摸屏本身有自己的指标分辨

17、率,比如2048*2048(即它的坐标系),它和我们LCD显示屏的坐标系(比如大点的1024*768)是两个概念。通过ADS控制器的SPI/I2C总线读取到的触摸屏的坐标信息,是触摸屏(贴在LCD上面很像包装纸的一层薄膜)以它本身坐标原点O(物理的固定的,4个边角的某一个)为参考的坐标对(X,Y)原理是两个电压值(Nx,Ny),根据触摸屏X,Y方向的参考电压,做个线性比较,得到其坐标值(X,Y),项目进度,触摸屏坐标确定 实际使用过程中,唯一的参考定位是LCD屏的坐标系(x,y),tslib就是把两个2维线性坐标系通过几个样值的比较,对应转换,即(X,Y)-(x,y)(1)计算程序,调用LCD

18、显示驱动程序,在LCD上打印几个光标,选择方便计算的,比如(x1,y1),(x2,y2).(2)触摸屏驱动程序应该还没有设计完成,这里只需要做到其触摸屏控制器初始化函数、坐标数据读取函数和相应的点击中断程序工作就可以了。分别点击这些点,程序中读出这些点对应的触摸屏坐标值(X1,Y1),(X2,Y2).(3)这时候,就可以得到了两个坐标系的对应关系,具体就是代入程序中读到的采样值求解下面对应方程的6个系数(a,b,c,d,e,f):x=aX+bY+c,y=eX+fY+g,项目进度,tslib校正原理 触摸动作模拟鼠标动作传统的鼠标:相对定位系统,只和前一次鼠标的位置坐标有关触摸屏:绝对坐标系统绝

19、对坐标系统的特点:每一次定位坐标与上一次定位坐标没有关系,每次触摸的数据通过校准转为屏幕上的坐标,不管在什么情况下,触摸屏这套坐标在同一点的输出数据是稳定的。不过由于技术原理的原因,并不能保证同一点触摸每一次采样数据相同,不能保证绝对坐标定位,点不准,这就是触摸屏最怕出现的问题:漂移。对于性能质量好的触摸屏来说,漂移的情况出现并不是很严重。所以很多应用触摸屏的系统启动后,进入应用程序前,先要执行校准程序。,项目进度,tslib校正原理 LCD坐标和触摸屏的物理坐标的比较从触摸屏中读出的是点的物理坐标,其坐标轴的方向、XY值的比例因子、偏移量、缩放因子都与LCD坐标不同,项目进度,tslib校正

20、原理 使触摸屏坐标和LCD坐标一一对应,且以插件形式提供附加功能如滤波、防抖。tslib的API接口tsdev表示触摸屏设备fd:打开触摸屏设备的文件描述符list:指针,依次存放指向tslib插件的指针,项目进度,tslib校正原理 tslib的API接口ts_sample存放按键消息x,y:按键的坐标位置(以LCD坐标系为基准)pressure:按键的轻重程度tv:按键发生的时间,项目进度,tslib校正原理 tslib的函数ts_open()打开触摸屏设备ts_config()读取触摸屏配置文件并决定加载模块 variance:限定点击力度方差 dejitter:去除点击抖动 linea

21、r:将触摸屏上的坐标转换成LCD的坐标ts_close()释放触摸屏设备及相关资源ts_fd()返回打开的触摸屏设备的文件描述符ts_read()从触摸屏设备读取采样点坐标开发板上运行Calibrate程序,触摸屏上任何一点的坐标就可以在主机LCD屏上回显出来。于是,就采集到了4个角的物理坐标假设是6.4英寸屏,640X480分辨率,则它们的像素坐标分别是(20,20)、(20,460)、(620,460)和(620,20)。这样,使用待定系数法就可以算出坐标系之间的平移关系。比如:Vx=xFactor*Px+xOffset Vy=yFactor*Py+yOffset,Qt/E、Qtopia,

22、qte/qtopia在2410s上的移植使用tslibexport TSLIB_CONSOLEDEVICE=none tslib运行需要的控制台,这里就是LCD屏幕,设定控制台设备为none,否则默认为/dev/tty,export TSLIB_FBDEVICE=/dev/fb0 指定帧缓冲设备export TSLIB_TSDEVICE=/dev/touchscreen/0raw 指定触摸屏设备节点文件export TSLIB_CALIBFILE=/etc/pointercal 指定触摸屏校准文件pintercal的存放位置export TSLIB_CONFFILE=/etc/ts.conf 指定TSLIB配置文件的位置export TSLIB_PLUGINDIR=$QTDIR/lib/ts 指定触摸屏插件所在路径校准屏幕(5点校准)./ts_calibrate用户点击从ts驱动获得数据屏上坐标位置运行PDA./qpe,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号