主流嵌入式Linux下GUI解决方案 基本概念介绍 GUI (graphical user interfaces)

Slides:



Advertisements
Similar presentations
104-2 社團聯席會議 人社二館第五講堂 第 1 次社團聯席會 會議議程 一、邱學務長致詞 : 二、王麗倩組長致詞 : 三、課外組報告: 課外活動經費核銷事項 --- 松漢 社課鐘點費核銷事項 --- 松漢 3. 三社聯合成發之講堂租借規定說明.
Advertisements

会计报表网上申报操作指南 (以小企业会计准则为例) 松江区税务局 2014年7月.
夯实基层 创新进取 大力践行医药卫生体制改革 丽水市卫生局 黄 刚
屏東監理站電腦筆試e化系統 考生操作使用說明及注意事項.
ARM 嵌入式系统 第七章 嵌入式Linux.
Foundations of Computer Science
一、平面点集 定义: x、y ---自变量,u ---因变量. 点集 E ---定义域, --- 值域.
网站 网站建设 网站建设包括网站策划、网页设计、网站功能、网站优化技术、NNT流量、网站内容整理、网站推广、网站评估、网站运营、网站整体优化、网站改版等。网站建设的前期准备包括了前期网站定位、内容差异化、页面沟通等战略性调研,这些确立后,再去注册域名、租用空间、网站风格设计、网站代码制作五个部分,这个过程需要网站策划人员、美术设计人员、WEB程序员共同完成。
第三节 灰树花栽培技术 主讲 段鸿斌.
开展优质护理服务 落实重患护理 沈阳市第四人民医院 姚军.
第三课 走向自立人生.
Linux并行计算平台搭建及应用 王彦棡 2010年5月.
技术支持部 张新凤( ) 并行机群系统安装、使用和管理 技术支持部 张新凤( )
嵌入式图形显示.
香港普通話研習社科技創意小學 周順強老師.
管理学基本知识.
北京师范大学-香港浸会大学联合国际学院 (UIC)
滁州学院首届微课程教学设计竞赛 课程名称:高等数学 主讲人:胡贝贝 数学与金融学院.
计算机科学与技术专业 招生宣传资料.
基于ARM和linux的开发 华中科技大学 武汉创维特 2017/3/20.
嵌入式操作系统 陈天洲、陈文智.
UClinux在3000平台上的移植.
資訊安全與系統管理 2013/3/13 Chien wei lin.
拾貳、 教育行政 一、教育行政的意義 教育行政,可視為國家對教育事務的管理 ,以增進教育效果。 教育行政,乃是一利用有限資源在教育參
課程銜接 九年一貫暫行綱要( )  九年一貫課程綱要( ) 國立台南大學數學教育系 謝 堅.
2.4 二元一次方程组的应用(1).
QT编程简介 李杨 Qt系列讲座 组织:柴树杉 1. Qt编程简介 智能仿生,柴树杉 2. 创建主窗口程序 3. Qt+VTK开发三维应用
QtiPlot-實驗室數據分析與繪圖 撰文者: 1.海洋大學光電所 楊善文 2. (如對本文有貢獻者,記得在此留名)
嵌入式Linux开发快速入门 迟思堂工作室 李迟
Linux.
Building Embedded Linux 2
Qtopia 编程部分要点分析 苗忠良.
内核移植实例.
工具链 介绍部分 1b.
第 16 章 視聽娛樂軟體 著作權所有 © 旗標出版股份有限公司.
3-1 電腦作業系統的功能與類型 3-2 Windows XP的基本操作 3-3 Windows XP的檔案管理
第9章 嵌入式Linux用户图形界面编程.
嵌入式用户图形界面编程 课程目的 了解嵌入式图形系统 掌握QT/E开发环境、关键技术 通过实例熟悉基于Qt/E的嵌入式GUI设计.
Bootloader技术分析.
Linux 圖形操作介面 GUI -- X-window 與 Webmin
嵌入式系統架構 長高科技 顏旭偉.
讲议: PXE 介绍及实现 Jarvis
第二天 计算机基础技能培训 (一)linux基础知识
Android 课程讲义 智能手机开发
第1章 嵌入式系统概述 嵌入式系统的发展、定义、特点、组成、分类 嵌入式系统硬件核心、软件核心 嵌入式实时操作系统
CH.8 硬體管理.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Native Development Kit
数字图像处理(2) 图像文件格式 东北林业大学信息学院 任洪娥
Computational Photography final project- Histogram Equalization
WINDOWS 報告者: 洪仁修.
嵌入式系统的Boot Loader技术 陈文智 浙江大学计算机学院 2009年5月.
Chapter 6 Linux 檔案權限與目錄配置 VBird 2005/08/03
嵌入式系统设计与实例开发 ——ARM与C/OS-Ⅱ 北京航空航天大学 智能嵌入式技术工作室 王田苗 魏洪兴.
(第2版).
Linux核心編譯與模組管理 2013/01/19.
第二章 Linux简介 Linux概述 Linux系统的特点 Linux中使用的应用程序 Linux的组成 Linux版本介绍
(第2版).
主流嵌入式Linux下GUI解决方案 基本概念介绍 GUI (graphical user interfaces)
嵌入式Linux开发流程 成都研究所操作系统团队.
ARM Developer Suite 介 绍.
論四端 孟子 一. 關於孟子…… 孟子,名軻,字子輿,戰國時鄒人。他受業於孔子孫子思的門人,是繼孔子後,儒家的另一位代表人物,給人尊稱為「亞聖」。 你想了解孟子更多的生平事蹟嗎?你聽過「孟母三遷」的故事嗎? 試用滑鼠指向孟子畫像,然後在滑鼠左邊連按兩下。
2015 我爱永志我的家 摄影作品征集活动 2015年08月.
3 平抛运动 四川省绵阳第一中学 杨绅文.
作業一: 安裝Linux於btrfs上 中正大學 作業系統實驗室 指導教授:羅習五
第五章 曲线运动 3、抛体运动的规律.
LCD的驱动控制实验.
Linux文件系统.
用加減消去法解一元二次聯立方程式 台北縣立中山國中 第二團隊.
Presentation transcript:

主流嵌入式Linux下GUI解决方案 基本概念介绍 GUI (graphical user interfaces) 为用户提供界面友好的所见所得的操作环境.  主流解决方案 Qt/Embedded 图形库大而全,能够开发较为复杂的图形系统 Microwindows 项目规模较小、功能较为薄弱,缺乏等三方软件开发的支持 MiniGUI小巧、灵活,源码相对较少

基本概念 Qt Qt是Trolltech公司所开发的一个跨平台FrameWork环境 (一个运行的平台,有一堆常用的“库”) 多平台的C++图形用户界面应用程序框架 支持组件编程 (把系统分割成一些组件或设施的一种思想 ,修改项目代码的一些部分不会破坏整个系统 ) Trolltech 跨平台应用程序界面框架 (QT) 嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备(Qtopia) Qt/E Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本 采用C++封装 丰富的控件资源 较好的可移植性

Qt/Embedded Qt/Embedded的底层图形引擎基于framebuffer framebuffer是一种驱动程序接口 计算机显示存储器的一部分,存放屏幕图像的内容。 framebuffer是一种驱动程序接口 将显示设备抽象为帧缓冲区 显示内存的一个映像 (用户) QWSserver 负责事件的服务分发

Qt/Embedded QPE(Qt Plamtop Environment) Qtopia平台组成 针对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-1.13.tar.gz:用来得到tmake工具 /bin: progen工具:生成.pro文件 tmake工具:组织生成Makefile

Qt/E 、Qtopia 所需要的包 qt-embedded-2.3.10.tar.gz:Qt的嵌入式版本。 /bin:模拟目标机器的qvfb后台程序,如moc 、qvfb 、uic /lib:qvfb上PC机模拟运行时需要加载的库文件 libqte.so* qt-x11-2.3.2.tar.gz:Qt的X11版本 /bin :在PC机器上的运行的开发工具和编译程序, 如desinger 、findtr 、moc 、uic等 /lib:源文件编译成PC机器X11环境下的共享联接库 libqt.so* qtopia-free-2.1.1.tar.gz:官方网站提供的Qtopia免费版。 Qtopia是一个用Qt/Embedded开发的程序 :综合的应用程序平台和用户界面 e2fsprogs-1.38.tar.gz:为了得到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-embedded\bin目录 export QTDIR=$PWD export 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 使用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 在Virtual framebuffer 中实现Qtopia cd /root/qtopia/qtopia-2.1.1-host/bin qvfb & sleep 10 ./qpe.sh  qvfb:运行Qt 的虚拟缓冲帧工具 把显示结果输出到虚拟缓冲帧,出现桌面环境

Qt/E 、Qtopia qte/qtopia在2410s上的移植 软件环境 配置NFS(网络文件系统) 配置minicom 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上)运行的代码的过程 生成的编译工具在目录/usr/local/arm/2.95.3/bin 环境:与PC机不同的库函数和编译器 Host-〉交叉编译工具链 -〉源代码-〉二进制文件-〉目标板可执行

Qt/E 、Qtopia qte/qtopia在2410s上的移植 交叉编译e2fsprogs 交叉编译jpeg、libpng ./configure --enable-elf-shlibs 支持elf共享库(linux标准可执行程序格式 ) --host=arm-linux 指定目标机类型 --with-cc=/usr/local/arm/2.95.3/bin/arm-linux-gcc 指定编译器 --with-linker=/usr/local/arm/2.95.3/bin/arm-linux-ld 指定连接 --prefix=/usr/local/arm/2.95.3/arm-linux 指定安装路径 交叉编译jpeg、libpng 需要修改Makefile文件 交叉编译zlib 一个压缩解压程序库 提供库libz.so* 交叉编译tslib 是一个触摸屏的库,它提供诸如滤波、去抖、校准之类的功能,为不同的触摸屏提供了一个统一的接口 提供触摸屏共享库libts.so等 修改qte-2.3.10交叉编译环境参数文件使其增加对触摸屏的支持

Qt/E 、Qtopia qte/qtopia在2410s上的移植 交叉编译Qt/Embedded 交叉编译qtopia 设定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支持。如果是在开发板上运行,则不需要qvfb。 -thread,是否支持多线程。选择后会生成libqte-mt.so库(挺大的)。 生成库文件libqte.so.2.3.10* File命令检查库文件:file libqte.so.2.3.10 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到指定目录 使用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;  驱动程序提供给上层应用程序使用的信息,用来存储触摸屏的返回值

项目进度 触摸屏坐标确定 触摸屏本身有自己的指标分辨率, 比如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显示驱动程序,在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校正原理 触摸动作模拟鼠标动作 传统的鼠标:相对定位系统,只和前一次鼠标的位置坐标有关 触摸屏:绝对坐标系统 绝对坐标系统的特点:每一次定位坐标与上一次定位坐标没有关系,每次触摸的数据通过校准转为屏幕上的坐标,不管在什么情况下,触摸屏这套坐标在同一点的输出数据是稳定的。不过由于技术原理的原因,并不能保证同一点触摸每一次采样数据相同,不能保证绝对坐标定位,点不准,这就是触摸屏最怕出现的问题: 漂移。对于性能质量好的触摸屏来说,漂移的情况出现并不是很严重。所以很多应用触摸屏的系统启动后,进入应用程序前,先要执行校准程序。

项目进度 tslib校正原理 LCD坐标和触摸屏的物理坐标的比较 从触摸屏中读出的是点的物理坐标,其坐标轴的方向、XY值的比例因子、偏移量、缩放因子都与LCD坐标不同

项目进度 tslib校正原理 使触摸屏坐标和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: 去除点击抖动 linear: 将触摸屏上的坐标转换成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 qte/qtopia在2410s上的移植 使用tslib export 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