基于S3C2440的QT移植与编程实现_第1页
基于S3C2440的QT移植与编程实现_第2页
基于S3C2440的QT移植与编程实现_第3页
基于S3C2440的QT移植与编程实现_第4页
基于S3C2440的QT移植与编程实现_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学校代码 11059 学 号 0705075032 Hefei University 毕毕业业论论文文 设设计计 B BA AC CH HE EL LO OR R D DI IS SS SE ER RT TA AT TI IO ON N 论文题目 基于 S3C2440 的 QT 移植与编程实现 学位类别 工工 学学 学学 士士 学科专业 自自 动动 化化 作者姓名 黄黄 静静 导师姓名 干干 开开 峰峰 完成时间 2012 年 5 月 精品文档 1欢迎下载1欢迎下载 基基于于 S S3 3C C2 24 44 40 0 的的 Q QT T 移移植植与与编编程程实实现现 中中 文文 摘摘 要要 随着计算机技术和信息网络技术的飞速发展 嵌入式系统的应用越来越 广泛 而嵌入式产品以其小巧 使用方便 实用等特点越来越受到人们的青 睐 特别是近几年来 嵌入式产品越来越多的被应用于各个领域 如国防 工业控制 通信 办公自动化和消费电子领域等 图形用户界面 是嵌入式系 统软件开发的重要 内容 基于 Linux 内核开发实用 高效 美观的 GUI 是目 前研究的一个重要课题 本课题研究了基于 Linux 的典型嵌入式图形界面支持系统 Qt 基于嵌 入式 Linux 操作系统和 S3C2440 硬件平台 完成 Qt 开发环境搭建和 Qt 相关 平台移植 最后完成应用程序编程实例实现 并将应用程序成功移植到 GT2440 开发板上 测试结果证实该程序运行稳定 性能良好 关键词 嵌嵌入入式式系系统统 Q QT T 嵌嵌入入式式 l li in nu ux x S S3 3C C2 24 44 40 0 精品文档 2欢迎下载2欢迎下载 T Tr ra an ns sp pl la an nt ta at ti io on n a an nd d p pr ro og gr ra am mm mi in ng g o of f Q QT T b ba as se ed d o on n S S3 3C C2 24 44 40 0 A Ab bs st tr ra ac ct t This paper introduces the QT Embedded linux embedded system development environment to establish and transplant Through a lot of source code analysis build Qt development environment in the linux host and s3c2410 transplant and then on the QT E programs Qt Embedded is Trolltech launched Linux based embedded platform development tools embedded version of Qt It inherits the Qt s standard APIs provide a more compact than Xlib and XWindows window generation system FrameBuffer direct operations see Figure 1 The fully modular design and efficient build system to reduce memory consumption these Qt Embedded as the embedded environment powerful and comprehensive GUI development tools KDE and other projects using Qt as the support library so many Qt based X Windows program can be easily ported to Qt Embedded version Qt Embedded with the advantages of object oriented cross platform and interface design convenient and aesthetic have been widely used K KE EY Y W WO OR RD D E Em mb be ed dd de ed d T Tr ra an ns sp pl la an nt t A An nd d P Pr ro og gr ra am m Q Qt t E Em mb be ed dd de ed d l li in nu ux x S S3 3C C2 24 44 40 0 精品文档 3欢迎下载3欢迎下载 第一章前言 4 1 1 嵌入式系统概述 4 1 2 图形开发 7 1 3 本文章节安排 8 第二章 QT 编程环境 9 2 1 Qt 概述 9 2 2 Qt 开发环境搭建 9 2 2 1 安装 Qt 对系统的要求 10 2 2 2 Qt 开发环境及工具 10 2 2 3 Qt Embedded Linux 安装 10 2 2 4 嵌入式 Linux 中 Qt 环境变量 11 2 2 5 Qt X11 安装 12 2 2 6 Qt Embedded 安装 12 2 3 Qt 在嵌入式 Linux 的应用 13 2 3 1 在嵌入式 Linux 上运行 Qt 程序 13 2 3 2 嵌入式 Linux Qt 显示管理 14 2 3 3 输入设备键盘和鼠标的设置于管理 15 第三章 Qt 应用程序开发实例 17 3 1 软硬件平台 17 3 1 1 硬件平台 17 3 1 2 软件平台 18 3 2 Qt 开发流程 19 3 3 应用程序实现 20 第四章 总结 25 参考文献 26 致谢 27 精品文档 4欢迎下载4欢迎下载 第第一一章章 前前言言 1 1 1 1 嵌嵌入入式式系系统统概概述述 嵌入式系统的出现最初是基于单片机的 70 年代单片机的出现 使得汽 车 家电 工业机器 通信装置以及成千上万种产品可以通过内嵌电子装置 来获得更佳的使用性能 更容易使用 更快 更便宜 这些装置已经初步具 备了嵌入式的应用特点 但是这时的应用只是使用8 位的芯片 执行一些单 线程的程序 还谈不上 系统 的概念 从 80 年代早期开始 嵌入式系统的程序员开始用商业级的 操作系统 编写嵌入式应用软件 这使得可以获取更短的开发周期 更低的开发资金和 更高的开发效率 嵌入式系统 真正出现了 确切点说 这个时候的操作系 统是一个实时核 这个实时核包含了许多传统操作系统的特征 包括任务管 理 任务间通讯 同步与相互排斥 中断支持 内存管理等功能 嵌入式系统的分类 如下 1 嵌入式系统的硬件 从硬件方面来讲 嵌入式系统的核心部件是嵌入式处理器 据不完全统计 全世界嵌入式处理器的品种数量已经超过 1000 多种 流行体系结构有 30 多个 其中 8051 体系占大多数 生产 8051 单片机的半导体厂家有 20 多个 共 350 多种衍生产品 仅 Philips 就有近 100 种 目前嵌入式处理器的寻址 空间可以从 64KB 到 256MB 处理速度从 0 1MIPS 到 2000MIPS 近年来嵌入式微处理器的主要发展方向是小体积 高性能 低功耗 专 业分工也越来越明显 出现了专业的 IP Intellectual Property Core 知 识产权核 供应商 如 ARM MIPS 等 他们通过提供优质 高性能的嵌入式 微处理器内核 由各个半导体厂商生产面向各个应用领域的芯片 一般可以将嵌入式处理器分成 4 类 即嵌入式微处理器 Micro Processor Unit MPU 嵌入式微控制器 Micro Controller Unit MCU 单片机 嵌入式 DSP 处理器 Digital Signal Processor DSP 和嵌入式 片上系统 System On Chip SOC 2 嵌入式系统的软件 嵌入式系统的软件一般由嵌入式操作系统和应用软件组成 操作系统是 连接计算机硬件与应用程序的系统程序 嵌入式系统的特点 1 系统内核小 由于嵌入式系统一般是应用于小型电子装置 系统资源相对有限 所以 内核较之传统的操作系统要小得多 比如 ENEA 公司的 OSE 分布式系统 内 核只有 5KB 而 Windows 的内核则要大得多 精品文档 5欢迎下载5欢迎下载 2 专用性强 嵌入式系统的个性化很强 其中的软件系统和硬件的结合非常紧密 一 般要针对硬件进行系统的移植 即使在同一品牌 同一系列的产品中也需要 根据系统硬件的变化和增减不断进行修改 同时 针对不同的任务 往往需 要对系统进行较大更改 程序的编译下载要和系统相结合 这种修改和通用 软件的 升级 是完全不同的概念 3 系统精简 嵌入式系统一般没有系统软件和应用软件的明显区分 不要求其功能的 设计及实现过于复杂 这样一方面利于控制系统成本 同时也利于实现系统 安全 4 高实时性 高实时性的操作系统软件是嵌入式软件的基本要求 而且软件要求固化 存储 以提高速度 软件代码要求高质量和高可靠性 5 多任务的操作系统 嵌入式软件开发要想走向标准化 就必须使用多任务的操作系统 嵌入 式系统的应用程序可以没有操作系统而直接在芯片上运行 但是为了合理地 调度多任务 利用系统资源 系统函数以及专家库函数接口 用户必须自行 选配 RTOS Real Time Operating System 开发平台 这样才能保证程序执行 的实时性 可靠性 并减少开发时间 保障软件质量 6 专门的开发工具和环境 嵌入式系统开发需要专门的开发工具和环境 由于嵌入式系统本身不具 备自主开发能力 即使设计完成以后 用户通常也不能对其中的程序功能进 行修改 因此必须有一套开发工具和环境才能进行开发 这些工具和环境一 般是基于通用计算机上的软硬件设备以及各种逻辑分析仪 混合信号示波器 等 开发时往往有主机和目标机的概念 主机用于程序的开发 目标机作为 最后的执行机 开发时需要交替结合进行 1 1 2 2 嵌嵌入入式式系系统统图图形形用用户户界界面面现现状状 由于受到硬件条件等的限制 现在许多嵌入式设备的用户界面仍然非常 简单 看习惯了 PC 机上华丽美观的用户界面 总希望在这些设备上也能得到 同样美的享受 随着 嵌入式设备的硬件条件提高 对于嵌入式系统中轻量级 图形用户界面的需求也越来越迫切 这些系统一般不希望建立在庞大累赘的 非常消耗资源的操作系统和图形用户界面之上 比如Windows 同时 嵌入 式系统对图形用户界面轻量型和可定制方面有较高的 要求 它们希望图形用 户界面占用资源少 性能高 可靠性高 易移植 可配置 精品文档 6欢迎下载6欢迎下载 本论文的选题正是结合 Linux 操作系统和嵌入式系统研究这两个热点领 域 选择适合于嵌入式特点的图形用户界面 QT 来进行应用程序开发 1 1 3 3 本本文文章章节节安安排排 论文的结构安排如下 第一章 前沿 分析并阐述了本课题研究背景及意义 第二章 QT 编程环境 首先介绍了 QT 的概述 QT 环境的搭建以及要 求 第三 QT 应用程序开发实例 介绍了 QT 应用程序开发所涉及的软 硬 件平台 完成应用程序实例 并移植到 GT2440 开发板 第四章 总结 对已完成的工作进行了简要总结 并指出了其中的不足 并对今后的做了展望 精品文档 7欢迎下载7欢迎下载 第第二二章章 Q QT T 编编程程环环境境 2 2 1 1 Q Qt t 概概述述 Qt 是一个跨平台的 C 图形用户界面库 由挪威 TrollTech 公司于 1995 年底出品 Trolltech 公司在 1994 年成立 但是在 1992 年 成立 Trolltech 公司的那批程序员 就已经开始设计 Qt 了 Qt 的第一个商业版 本于 1995 年推出 2008 年 1 月 31 日 Nokia 公司宣布通过公开竞购的方 式收购 TrollTech 公司 旗下包括 Qt 在内的技术都归入 Nokia 旗下 并且 Nokia 针对自己的移动设备平台规划的需要 将 Qt 按不同的版本发行 Qt 的良好封装机制使得 Qt 的模块化程度非常高 可重用性较好 对于 用户开发来说是非常 方便的 Qt 提供了一种称为 signals slots 的安 全类型来替代 callback 这使得各个元件之间的协同工作变得十分简单 Qt 包括多达 250 个以上的 C 类 还提供基于模板的 collections serialization file I O device directory management date time 类 还包括下列功能 1 支持 2D 3D 图形渲染 支持 OpenGL 大量的开发文档 2 XML 支持 3 Webkit 引擎的集成 可以实现本地界面与 Web 内容的无缝集成 2 2 2 2 Q Qt t 开开发发环环境境搭搭建建 Qt Embedded 是基于 Qt 的嵌入式 GUI 和应用程序开发的工具包 它可运 行多种嵌入式设备上 主要运行在嵌入式 Linux 系统上 并且需要 C 编 译器的支持 并为嵌入式应用程序提供 Qt 的标准 API Qt Embedded 的 API 是基于面向对象技术的 在应用程序开发上使用与 Qt 相同的工具包 只需在目标嵌入式平台上重新编译即可 使用所熟悉的桌 面开发工具 来编写和保存一个嵌入式应用程序的源代码树 在移植到多种 嵌入式平台时 只需要重新编译代码 Qt Embedded 提供自身的轻量级窗口系统 比使用 Xlib 和 X Window 更 加紧凑 Qt Embedded 的设计原则是不依赖于 X server 或者 Xlib 而是 直接访问帧缓存 同其他解决方案如 Qt X11 相比这样做最显著的效果是减 少了内存消耗 只需要一个 Qt Embedded 动态链接库就足以替代 X server Xlib 库和其他嵌入式解决方案的图形工具包 精品文档 8欢迎下载8欢迎下载 2 2 2 2 1 1 安安装装 Q Qt t 对对系系统统的的要要求求 安装 qt 的过程在不同的平台上会有所不同 主要 在嵌入式 linux 平台 上安装 若需要提供对 OpenSSL 的支持 需要通过单独安装 OpenSSL Toolkit 来获得 Secure Sockets Layer SSL 对于不同的平台上 会有不 同的要求 如果要在 qt 上对 QtWebKit 模块的支持 必须使用 uClibc 0 9 29 或者更高的版本 以对 pthread 的支持 在内存方面的要求主要取决于体系架构以及在编译过程中使能的QT 选 项 2 2 2 2 2 2 Q Qt t 开开发发环环境境及及工工具具 Qt Embedded 的应用程序也可以使用标准工具在用户熟悉的环境下的工 具开发 如 Window 平台下的 Visual C 和 Borland C Builder Unix 平台下的 KDevelop 等 在 Unix 平台下编译 Qt Embedded 应 用程序 可以在独立的控制台模式 也可以用 X11 应 用程序虚拟的帧缓存 通过指定目标设备的长 宽和色深 虚拟帧缓存可以点对点的模拟物理设备 免除了调试过程中反复擦写闪存 加快了编译 链接 运行的环节 Qt Embedded 提供许多支持嵌入式开发的工具 其中两个非常重要的Qt 工 具 qmake 和 Qt Designer Qmake 可以为 Qt Embedded 链接库和应用程序生 成 makefile 文件 Qmake 可以从项目文件 pro 为多种平台 生成 makefile 文件 通过不同设置可以使应用程序方便的在多种平台间移植 Qt Designer 可以使用可视化的方式设计对话框 窗口的 替代了设计代码 手工编写 在 Qt Designer 中还可以使用布局管理器来平滑的设置窗口部件 的布局 使用代码编写器编写代码 并且整合了qmake 2 2 2 2 3 3 Q Qt t E Em mb be ed dd de ed d L Li in nu ux x 安安装装 1 下载源码包 解压 qt news qt downloads qt Quarterly qt bugs qt Supported Platforms platforms html qt Version Changes 精品文档 9欢迎下载9欢迎下载 qt books 2 建立支持库 通过 configure 来设置 主要配置可以通过 help 来获得帮助 之后用 make 命令 然后用 make install 命令 将库安装到指定的路径下面 其中的设置包括指定安装的路径 未配置的话 默认的路径是 usr local Trolltech QtEmbedded 4 5 0 3 设置环境变量 为了能够使用 Qt for Embedded Linux 必须导出的 PATH 变量有 qmake moc 以及其他 Qt for Embedded Linux 的工具 以及 LD LIBRARY PAT 执行 PATH usr local Trolltech QtEmbedded 4 5 0 bin PATH export PATH 4 建立虚拟的 frambuffer 建立虚拟的 frambuffer 需要安装 X11 Platforms 2 2 2 2 4 4 嵌嵌入入式式 L Li in nu ux x 中中 Q Qt t 环环境境变变量量 QT 环境变量如下 POINTERCAL FILE 指定文件包含的数据 用来校准触摸笔设备 同时可 以参考 QWSCalibratedMouseHandler and Qt for Embedded Linux Pointer Handling QT ONSCREEN PAINT 如果定义了的话 可以用来将控件显示在屏幕上 如果没有其他控件在同一个区域的话 该设备响应的区域将不会随着屏幕设 备驱动的改变而改变 设置这个环境变量相当于在控件中应用程序中设置 Qt WA PaintOnScreen QWS SW CURSOR 如果定义了的话 软件鼠标的光标将一直是可用的 即使使用硬件加速驱动器来支持硬件光标 QWS DISPLAY 指定显示形式和 framebuffer 例如 export QWS DISPLAY QWS SIZE 指定嵌入式 linux qt 窗口在屏幕上的大小 export QWS SIZE x QWS MOUSE PROTO xport QWS MOUSE PROTO 参数可以是 MouseMan IntelliMouse 精品文档 10欢迎下载10欢迎下载 Microsoft VR41xx LinuxTP Yopy Tslib and keys dev mouse 指的 是鼠标设备 dev ts for touch panels QWS KEYBOARD 为输入设备指定输入设备和驱动 比如 export QWS KEYBOARD 参数可 以是 SL5000 Yopy VR41xx TTY USB and keys 指定的是一个标准设备 2 2 2 2 5 5 Q Qt t X X1 11 1 安安装装 QT X11 安装步骤如下 cd usr local tar xvfz qt x11 free 3 3 4 tar gz mv qt x11 free 3 3 4 qtx cd qtx export QTDIR PWD 设置环境变量 在编译的时候要用到 export PATH QTDIR bin PATH export LD LIBRARY PATH QTDIR lib configure depths 4 8 16 no ipv6 no cups no pch qvfb depths 4 8 16 32 配置 可以通过 configure help 来获得帮助信息 make 编译 make install 2 2 2 2 6 6 Q Qt t E Em mb be ed dd de ed d 安安装装 编译并安装 Qt Embedded 主要是为了生成基于 ARM 内核的 Qt E 库文件 将这些库文件移植到 ARM 平台中就可以运行通过 QT 开发出来的 GUI 程序了 下面列出其安装步骤 cd usr local tar xvzf qt embedded free 3 3 5 tar gz mv qt embedded free 3 3 5 qte cd qte export QTDIR PWD 设置环境变量 export PATH QTDIR bin PATH export LD LIBRARY PATH QTDIR lib LD LIBRARY PATH 接着拷贝 jpeg 库头文件到 Qt E 的 include 中 因为在编译的时候要用到 精品文档 11欢迎下载11欢迎下载 cp usr include jpeglib h QTDIR include cp usr include jconfig h QTDIR include cp usr include jerror h QTDIR include cp usr include jmorecfg h QTDIR include cp usr local qtx bin uic QTDIR bin configure shared embedded arm qt gif no exceptions thread no nis no cups no stl qt imgfmt mng qt imgfmt png qt imgfmt jpeg qt sql sqlite qvfb depths 4 8 16 32 make 编译 最终生成基于 ARM 平台的 Qt E 库文件 libqte mt so libqte mt so 3 libqte mt so 3 3 libqte mt so 3 3 5 到此 整个 Qt Embedded 的开发环境全部建立起来了 2 2 3 3 Q Qt t 在在嵌嵌入入式式 L Li in nu ux x 的的应应用用 QT 在嵌入式 Linux 中应用需要完成这 几个方面 字体库移植 设置环境 变量以及 Framebuffer 的支持 字体库的支持 是在 qt 的 lib fonts 目录下 由于程序运行的时候是 到这个文件夹下面来调用 因此需要将字体库复制到这个目录下 环境变量的设置 通常情况下 与默认的环境变量不同 因此需要设置 的有 QWS MOUSE PROTO QWS KEYBOARD 以及 QWS DISPLAY 用来指定鼠标 键盘以及显示设备管理 在 configure 的时候需要加入的选项是 qt kbd and qt mouse 这样才能使能这 些设备驱动 但是还需要指定一个具体的设备 因此需要通过设置环境变量 来完成 framebuffer 的支持 没有特殊需求的情况下 要求在目标设备上使能 framebuffer Linux framebuffer 在标准设置情况下是使能的 2 2 3 3 1 1 在在嵌嵌入入式式 L Li in nu ux x 上上运运行行 Q Qt t 程程序序 任何嵌入式 linux 应用程序可以通过构建 QApplication 对象 QApplication GuiServer 的格式 被构建为服务 server application 或 者通过 qws 命令行选项的方式 本文当假设用 The Virtual Framebuffer 或者嵌入式 linux 的 VNC 协议 或者正确配置的 Linux framebuffer 而且 精品文档 12欢迎下载12欢迎下载 没有服务进程在运行 可以使用的显示方式有 Using a Single Display 单显示 运行这种显示方式 改变 Linux console 而且选择一个应用 来运行 它要求在安装过程中 环境变量是可用的 它要求指定的硬件设备 驱动必须工作正常 比如 cd path to QtEmbedded demos textedit textedit qws Using Multiple Displays linux 同时也是支持多设备显示 有两种方式可以完成 当在运行多服 务程序的时候 显示屏的驱动 以及数量 必须为每一个程序进行指定 用 display 命令行或者 QWS DISPLAY 来指定 比如 myfirstserverapplication qws display transformed rot90 1 mysecondserverapplication qws display QVFb 2 需要注意的是 必须指定一个显示设备 在开始客户端程序的时候 比 如 myclientapplication display QVFb 2 在程序运行的时候 没 有办法将一个客户端程序从一个显示移动到另一个显示 用多显示屏驱动 另一方面 应用程序可以方便的在两个不同类型的显示屏之间切换 多屏幕 显示可以用 display 命令行参数来指定或者通过设置 QWS DISPLAY 环境变 量比如 myserverapplication qws display Multi QVFb 0 QVFb 1 offset 0 0 VNC offset 640 0 2 Command Line Options 命令行选项 2 2 3 3 2 2 嵌嵌入入式式 L Li in nu ux x Q Qt t 显显示示管管理理 当需要显示的时候 默认的动作是每一个嵌入式linux 的客户端将需要 的显示的色调存放在内存中 然后服务端将相关的数据从内存在中送到显示 屏上 服务端用显示屏驱动 copy 内存中的内容到显示屏上显示 显示屏的 驱动是在服务端应用加载的时候运行的 用的是qt 的插件系统 常用的方 式有 可用的驱动 指定一个驱动 子驱动和多驱动 Available Drivers 可用的驱动 嵌入式 linux 的 qt 提供的驱动有 Linux framebuffer the virtual framebuffer transformed screens VNC servers and multi screens 通过运行 configure 选项来列出可用的驱动 默认的配置是 不加速的 Linux framebuffer driver dev fb0 被打开 其他的设 精品文档 13欢迎下载13欢迎下载 备驱动也可以使能或者禁止 通过以下命令行 例如 configure qt gfx transformed Specifying a Driver 指定一个驱动 通过设置环境变量 QWS DISPLAY 来指定一个设备 比如 格式如下的 export QWS DISPLAY 可以用的参数有 LinuxFb QVFb VNC Transformed Multi and keys identifying custom drivers 参数 的被用来分辨用相同驱动的屏幕 而且使能多显示 如下的表 格用来指定驱动 环境变量的 QWS DISPLAY 也可以通过 display 来设置 比如 myApplication display Subdrivers and Multiple Drivers 子驱动和多驱动 VNC Transformed 和 Multi screen drivers 取决于子驱动 通用的语 法是 export QWS DISPLAY 至于子驱动 在每个子驱动之间加上 空间 是很重要的 在显示设备前加上用来分开各个驱动和显示设备 注意的是多 屏幕驱动可以拥有多个子设备驱动 比如 export QWS DISPLAY Multi QVFb 0 QVFb offset 640 0 1 2 注意的是 VNC screen driver 在没有指 定屏幕驱动的情况下 默认的是虚拟屏幕驱动 在这种情况下 VNC driver 有一些额外的参数来指定大小的位宽 参数有 size depth mmHeight mmWidth 例如 export QWS DISPLAY VNC size 720 x480 depth 32 例如运行 VNC 屏幕驱动在 Linux framebuffer driver 的情况下 则 export QWS DISPLAY VNC LinuxFb 2 2 3 3 3 3 输输入入设设备备键键盘盘和和鼠鼠标标的的设设置置于于管管理理 当运行一个 Qt for Embedded Linux 应用程序的时候 不管是作为一个 服务还是连接到另一个服务 当它开始运行的时候 鼠标驱动被服务的应用 加载 用 qt 的 plugin system 在配置 qt 的时候通过选项来选择支持的鼠 标以及键盘设备 同时测试可用的设备 通过 configure help 查看可 用的设备 配置时候默认的是 PC 的鼠标驱动 如果是自己添加一个设备 比如触摸屏 则需要创建一个 QWSCalibratedMouseHandler subclass 来完 成校验功能 若提供的 pc 的鼠标被使能 Qt for Embedded Linux 将会自 精品文档 14欢迎下载14欢迎下载 动探测所支持的一种鼠标设备 这个设备是在 dev psaux 或者 dev ttyS 的一种 如果多种类型的都检测到的话 则多种同时支持 需要注意的是 Qt for Embedded Linux 不支持自动检测触摸屏设备 因此需要指定使用的 是哪一种 要设置环境变量 QWS MOUSE PROTOexport QWS MOUSE PROTO 其中的参数 可以是 MouseMan IntelliMouse Microsoft VR41xx LinuxTP Yopy Tslib and keys driver specific options 是一个标准设备 比如 dev mouse 触摸屏的是 dev ts 多鼠标可以用下列方式来指定 export QWS MOUSE PROTO 需要注意的是 Vr41xx 驱动有两个可选的参数 press 来定义 单击的时间 默认值是 750 filter 指定的是滤波长度 用于 虑掉噪声 比如 export QWS MOUSE PROTO Vr41xx press 500 dev misc ts 对于 The Tslib Mouse Driver 是一个继承 QWSCalibratedMouseHandler 的 类 在产生鼠标事件的时候 提供校验和滤波的功能 用于使用同一的触摸 屏的库 为了使用鼠标 必须编译的选项是 qt mouse tslib 此外 tslib 的头文件和库也要在 build 的环境变量中指出来 tslib 的源码可以 在 http tslib berlios de 下载 通过 L 和 I 来指定库和头文件的 位置 比如 configure L I 为了保证能够使用鼠标 tslib 必须正确的安装在目标 机上 包括提供一个 ts conf 配置文件和设置必要的环境变量 ts conf 包括两行 内容是 module raw input module linear 在 make Qt for Embedded Linux 时候特别指定 tslib 鼠句柄 设置环境变量 QWS MOUSE PROTO 可能出现问题的地方是设备文件 和文件权限两个方面 为了保证能够正确的使用设备文件 第一步 先测试 一下设备文件是否有输出 比如 如果指定的鼠标设备驱动是 QWS MOUSE PROTO IntelliMouse dev input mouse0 然后检查设备的输出 通过在控制台上敲 cat dev input mouse0 hexdump 移动鼠标后 如 果可以在控制台上看见输出 表示能够正确的使用设备 否则要重新连接设 备 对于设备的读写权限 一般要求对设备至少有读权限 比如 QWS MOUSE PROTO IntelliMouse dev input mouse0 那么应该将该设备的 权限设置为 chmod a rw dev input mouse0 如果设备文件符号连接到另一 精品文档 15欢迎下载15欢迎下载 个文件的话 必须改变相关文件的属性 第第三三章章 Q Qt t 应应用用程程序序开开发发实实例例 3 3 1 1 软软硬硬件件平平台台 3 3 1 1 1 1 硬硬件件平平台台 三星公司推出的 16 32 为 RISC 微处理器 S3C2440A 为手持设备和一般 类型应用提供了低价格 低功耗 高性能小型微控制器的解决方案 S3C2440A 采用了 ARM920t 的内核 0 13um 的 CMOS 标准宏单元和存储器 单元 其低功耗 简单 优雅 且全静态设计特别适合于成本和功率敏感型 的应用 它采用了新的总线架构 Advanced Micro controller Bus 1 2V 内核供电 1 8V 2 5V 3 3V 存储器供电 具备 16KB 的 I Cache 和 16KB DCache MMU 微处理器 外部存储控制器 SDRAM 控制和片选逻辑 LCD 控制器提供 1 通道 LCD 专用 DMA 4 通道 DMA 并有外部请求引脚 3 通道 UART 2 通道 SPI 1 通道 IIS BUS 接口 1 通道 IIS BUS 音频编解码器接口 AC 97 解码器接口 兼容 SD 主接口协议 1 0 版和 MMC 卡协议 2 11 兼容版 2 端口 USB 主机 1 端口 USB 设备 4 通道 PWM 定时器和 1 通道内部定时器 看门狗定时器 精品文档 16欢迎下载16欢迎下载 8 通道 10 比特 ADC 和触摸屏接门 具有日历功能的 RTC 相机接口 130 个通用 I O 口和 24 通道外部中断源 具有普通 慢速 空闲和掉电模式 具有 PLL 片上时钟发生器 3 3 1 1 2 2 软软件件平平台台 嵌入式软件开发不同于一般的软件开发 绝大多数的Linux 软件开发都 是以本机方式进行的 即本机开发 调试 本机运行的方式 这种方式通常 不适合嵌入式系统的软件开发 因为对于嵌入式系统的开发 没有足够的资 源在本机中运行开发工具盒调试工具 通常的嵌入式系统的软件开发采用一种交叉编译调试的方式 交叉编译 的开发和调试环境建立在宿主机上 对应的开发板叫做目标板 开发时使用宿主机上的交叉编译 汇编及链接工具形成可执行的二进制 代码 然后把可执行文件下载到目标板上运行 1 Bootloader 引导程序移植 Bootloader 引导程序是嵌入式开发很重要的组成部分 它是嵌入式系统 上电后执行的第一个程序 并由它最终将操作系统启动起来并将控制权交给 操作系统 Bootloader 引导程序最基本的功能有对硬件系统的初始化 内核 启动参数设置和启动内核 Bootloader 的主要功能有 1 初始化 CPU 运行的时钟频率 2 初始化 Flash 和内存的数据宽度 读 写访问周期和刷新周期 3 初始化中断系统 4 初始化系统中各种运行模式下的寄存器和堆栈 5 初始化系统各种内片外设备和 I O 端口 6 加载和引导操作系统 为用户提供一个命令接 2 根文件系统 根文件系统是 Linux 系统引导启动时默认使用的文件系统 文件系统是 Linux 操作系统的核心组成部分之一 用于文件盒目录的组 织 其中包括了 Linux 程序 函数库 用户文件盒设备文件等 同时作为存 储数据读写结果的区域 在嵌入式系统中 硬件初始化和内核启动完成之后 精品文档 17欢迎下载17欢迎下载 将执行挂载文件系统的操作 3 3 2 2 Q Qt t 开开发发流流程程 嵌入式硬件平台的确定 PC 上搭建 Qt Embedded 开发环 境 交叉编译 Qt Embedded 库并进 行目标版的移植 PC 上进行 QTE 应用程序的开发 交叉编译应用程序 在目标平台上进行调试 程序运行是否正常 发布应用程序 过程中我们采取了宿主机和目标板的开发模式 宿主机是一台运行 Linux 的 PC 机 目标板即 hybus 开发板 先在宿主机上调试通过后 再移 植到目标板上 精品文档 18欢迎下载18欢迎下载 Qt Embedded 直接写入帧缓冲 在宿主机上则是通过 qvfb vitural framebuffer 来模拟帧缓冲 qvfb 是 X 窗口用来运行和测试 Qtopia 应用 程序的系统程序 允许我们在桌面及其上开发 Qt 嵌入式程序 而不需要在 命令台和 X11 之间来回切换 qvfb 使用了共享存储区域 虚拟的帧缓冲 来 模拟帧缓冲并且在一个窗口中 qvfb 模拟一个应用来显示帧缓冲 显示的 区域被周期性的改变和更新 通过指定显示设备的宽度和颜色深度 虚拟出 来的缓冲帧和物理的显示设备在每个像素上保持一致 这样我们在每次调试 应用时不需要总是刷新嵌入式设备的 FLASH 存储空间 从而加速了应用的编 译 连接和运行周期 应用程序的移植 将编译好的可执行文件下载到目标板上 目前有四种方式 1 通过网络传送文件到开发板 2 复制到介质 如 U 盘 3 通过串口传送文件到开发板 4 通过 NFS 网络文件系统 直接运行 3 3 3 3 应应用用程程序序实实现现 针对目标板编译应用程序与编译可在宿主机上执行的应用程序类似 只需 将编译参数作一定的修改 就可让程序在开发板上运行 安装Qt Embedded 时 配置参数 xplatform linux arm g 表示在 ARM 平台上进行交叉编译 1 设置环境变量 在根文件系统中已经加入了 Qt 的安装包和 Qt 程序需要链接的库文件 环境 变量的设置命令如下 Export QTDIR opt qt 2 使鼠标 键盘工作 鼠标设备接口这一基类 QWSMouseHandler 的实现位于 src kernel qmouse 文件中 键盘的驱动程序位于 src kernel qkeyboard qws cpp 中 键盘类设备接口的基类为 QWSMouseHandler 为了鼠标 键盘正常工作 使用如下的命令配置 Export QWS KEYBOARD USB dev input event1 Export QWS MOUSE PORT USB dev input mouse0 3 程序执行结果分析 分别右击三个按钮 点击 go to slot 在 mainwindow 中产生三个槽函 精品文档 19欢迎下载19欢迎下载 数 void MainWindow on start clicked void MainWindow on stop clicked void MainWindow on clear clicked 根据设计任务 每秒在 Text Edit 中显示自己设置的一组数 所以需要 用到定时器 在 mainwindow h 中添加 在 private 中加入成员 QTimer m timer 定义一个定时器 根据要求 当点击启动按钮时 开始计数并显示在 void MainWindow on start clicked 中添加 void MainWindow on start clicked on Start b clicked 进入 on Start b clicked 中 继续添加代码 void MainWindow on Start b clicked 这是我定义的一个按钮当按下这个按钮时执行下面的操作 如果定时器没启动 if m timer isActive m timer start 1000 开启定时器 1s this connect 计时到达 进入 timeOut timeOut 内容 void MainWindow timeOut 精品文档 20欢迎下载20欢迎下载 ui view setText tr retArry 内容 int MainWindow retArry int a 70 0 1 2 3 4 5 6 7 8 9 1 arg retArry 在 view 中显示 retArry 值 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 67 69 i if i 70 i 0 return a i 定义 70 个数 每次返回一个值 其中 i 在最上面定义 int i 由于使用到上面的一些函数 需要先声明 在 mainwindow h 中添加 protected void on Start b clicked int retArry private slots 精品文档 21欢迎下载21欢迎下载 void timeOut 到这里可以完成点击启动 在 view 中显示不同的数 下面添加停止和清除 功能 void MainWindow on stop clicked if m timer isActive m timer stop void MainWindow on pushButton clicked ui view clear 注意此时的程序只能在 X 11 平台下运行 要想移植到 ARM 平台 将 上述 选择分别改成 qt4 3 6 embedded arm qt4 3 6 embedded arm Release 删除以前编译好的 o Makefile 和可执行文件 重新编译 生成的可执行 文件程 序即可在 ARM 平台上运行 但 qt4 3 6 embedded arm 的字体库不带中文显示 需要下一个 wenquanyi 的字 体 将它解压后 放入根文件系统的 fonts 目录 根据自 己根文件系统的情况 中 修改运行代码 精品文档 22欢迎下载22欢迎下载 bin sh expo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论