收藏 分销(赏)

基于处理器SC22410的手持终端触摸屏的设计.doc

上传人:胜**** 文档编号:2507295 上传时间:2024-05-30 格式:DOC 页数:43 大小:630.50KB
下载 相关 举报
基于处理器SC22410的手持终端触摸屏的设计.doc_第1页
第1页 / 共43页
基于处理器SC22410的手持终端触摸屏的设计.doc_第2页
第2页 / 共43页
基于处理器SC22410的手持终端触摸屏的设计.doc_第3页
第3页 / 共43页
基于处理器SC22410的手持终端触摸屏的设计.doc_第4页
第4页 / 共43页
基于处理器SC22410的手持终端触摸屏的设计.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、摘 要随着嵌入式技术在智能手机、PDA等手持终端设备的应用越来越广泛,触摸屏作为一种终端输入设备,具有节省空间、操作简单、反应速度快等优点,非常适用作手持终端等嵌入式系统的输入设备。S3C2410是一款具有ARM920T内核的16/32位微处理器。作为新一代嵌入式平台的核心,ARM9采用5级流水线,使用大量寄存器,并支持协处理器和片上调试,以指令执行速度快,寻址方式灵活简单,执行效率高为优势,在工业控制、无线通讯、消费类电子产品、成像和安全产品等各个领域得到了广泛的应用。嵌入式Linux是在开放源代码Linux的基础上发展起来的,内核精简,内存管理功能强大,支持多任务,以设备驱动程序的方式提供

2、统一的外设接口。因此Linux是嵌入式操作系统的最佳选择。Qt/Embedded是一个专门为嵌入式系统提供图形界面的用户系统,提供了丰富的窗口小部件,支持窗口部件的定制,而且内存消耗少。本文介绍了基于S3C2410处理器平台,以嵌入式Linux 操作系统和Qt/Embedded为接口的LCD触摸屏操作界面的设计。该方案可运用于高档汽车GPS巡航系统、工程机械安全仪表和电能质量监测仪等实际工程应用中。 关键词: 触摸屏;嵌入式Linux;ARM;Qtopia移植Title Realization of the Hand-hold Terminals Touch Screen based on t

3、he S3C2410 Processor AbstractWith the application of embedded technology in smart phones, PDA and other hand-hold terminal equipments is increasingly extensive. As an input device of terminal equipment, the Touch screen has the advantages of space saving, simple operation, fast response, is very sui

4、table as the input equipment of the hand-hold terminals and other embedded systems.S3C2410 is one 16/32-bit microprocessor with ARM920T core. As the core of the new generation of the embedded platform, ARM9 uses 5 levels of assembly lines and massive registers, supporting the cooperated processor an

5、d debugging online, has the advantage of carries out the instruction quickly and efficiently. It is widely applied in the industry control, the wireless communication, the expense class electronic products, the imagery and the security product and so on. The embedded Linux developed from the open so

6、urce code Linux, It has simply core and the function of strongly managing the memory, support the multi-duties. It provides the general interface in the way of device drivers. Therefore the Embedded Linux was considered as one of the most superior choices in the current embedded operating systems.Qt

7、/Embedded is the system that provides the graphical user interface special used in the embedded system. It integrates a lot of small window parts, supports the custom-made window and consumes memory fewer.This paper introduced the realization of the operation of the touch screen, which in the founda

8、tion of the Embedded Linux operation system and the S3C2410 processor, is designed by Qt/Embedded .This plan may utilize to the upscale automobile GPS cruise system, the project mechanical security meter and the electrical energy quality monitor meter and so on. Keywords: Touch Screen; Embedded Linu

9、x; ARM; Qtopia Porting目 次1 引言12 硬件平台22.1 ARM体系结构22.2 S3C2410处理器简介22.3 触摸屏接口电路33 交叉编译环境的建立73.1 Linux交叉编译环境简介73.2 开发环境的配置73.3 开发工具的安装84 基于Qt的图形用户界面设计104.1 Qt体系结构104.2 Qt环境的建立124.3 Qt Designer的使用154.4 Qtopia虚拟平台建立164.5 Qtopia的移植175 触摸屏图形操作界面的实现195.1 Linux设备驱动程序195.2 触摸屏驱动程序分析225.3 Qt/Eembedded中的触摸屏驱动接口

10、285.4 Qt/Embedded的触摸屏驱动接口的设置305.5 驱动程序调试过程中出现的问题31结 论34致 谢35参 考 文 献36附录A 触摸屏驱动部分源程序371 引言嵌入式系统就是以应用为中心、以计算机技术为基础,软、硬件可裁剪,对功能可靠性、成本、体积和功耗等严格要求的专用计算机系统1。随着嵌入式技术的发展,手持终端设备的应用越来越广泛,如智能手机、警务通、手持抄表系统等。由于手持终端对体积要求很严格,而触摸屏作为一种实用的电脑输入设备,具有节省空间、坚固耐用、反应速度快、易于交流等优点,非常适合用作手持终端设备的输入设备。Linux 操作系统因开放源码、便于裁剪,是当前嵌入式操

11、作系统的主要选择。ARM9作为新一代嵌入式平台,凭借其强大的功能与良好的设备支持在数据通信、多媒体显示和手持终端设备等领域得到了广泛的应用。因此作为与用户交互的终端媒介,如何在以ARM9为核心的系统中集成触摸屏模块以及在嵌入式Linux操作系统中实现其驱动程序,是一个非常值得去研究和解决的课题。ARM9微处理器作为新一代嵌入式平台,它采用5级流水线,使用大量寄存器,并支持协处理器和片上调试,以指令执行速度快,寻址方式灵活简单,执行效率高为优点 2,14。在工业控制、无线通讯、消费类电子产品、成像和安全产品等各个领域得到了广泛的应用。嵌入式Linux是在开放源代码的Linux基础上发展起来的,它

12、内核精简,可移植性强,内存管理功能强大;支持多任务;以设备驱动程序的方式提供统一的外设接口3,4。因此Linux是嵌入式平台上操作系统的最佳选择。Qtopia是在基于Qt的嵌入式版本Qt/Embedded库的基础上,专门针对PDA、SmartPhone这类运行嵌入式Linux的移动计算设备和手持终端所开发的开放源码的一套应用程序包和开发库5。它是用Qt/Embedded程序库编写的应用程序环境,界面优美,主要应用于高端手机、PDA等手持设备,具有广阔的发展前景。 在本次毕业设计中,以博创科技嵌入式教学科研UP-NETARM2410-S开发板为硬件平台,实现基于S3C2410处理器的嵌入式LIN

13、UX内核的编译与移植,开发基于Qt的人机友好LCD触摸屏操作界面,并在S3C2410处理器上完成Qtopia2.1.1的移植。 2 硬件平台2.1 ARM体系结构及应用ARM9微处理器作为新一代嵌入式平台,它采用5级流水线,支持Thumb/ARM双指令集,能很好地兼容8位/16位器件;大量使用寄存器,指令执行速度快;寻址方式灵活简单,执行效率高;支持协处理器和片上调试。到目前为止,ARM微处理器及技术已经深入到各个领域。作为32位的RISC架构,基于ARM内核的为控制器芯片不但占据了微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微处理器的低功耗、高性价比,向传统的8

14、位/16位微控制器提出了挑战。目前已有超过85的无线通讯设备采用了ARM技术,手机中的32位SIM智能卡也采用了ARM技术5,ARM以其高性能和低成本,在该领域的地位日益巩固。随着宽带技术的推广,采用ARM技术的ASDL芯片正逐渐获得竞争优势。此外,ARM在语音及视频处理上进行了优化。并获得了广泛支持,也对DSP的应用领域提出了挑战。2.2 S3C2410处理器简介S3C2410处理器是一款基于ARM920T内核的16/32位RISC嵌入式处理器,主要面向手持设备、移动通信等应用领域。它集成了大量的功能单元: (1)1.8V ARM920T内核,1.8V/2.5V/3.3V存储系统,带有3.3

15、V16KB指令和16KB数据缓存及MMU单元的外部O接口的微处理器; (2)外部存储器控制(SDRAM控制和芯片选择逻辑); (3)LCD控制器(支持4K颜色的STN或256K色TFT的LCD),带有1个通道的LCD专用DMA控制器; (4)4通道DMA,具有外部请求引脚;(5) 3通道UART(支持IrDA1.0,16字节发送FIFO及16字节接收FIFO)/2通道SPI接口;(6)1个通道多主IIC总线控制器/1通道IIS总线控制器;(7)2个主机接口的USB口/1个设备USB口(1.1版本);(8)4通道PWM定时器/1通道内部计时器;(9)117位通用目的I/O口/24通道外部中断源;

16、(10)带触摸屏接口的8通道10位ADC;等等。该平台提供了系统级的硬件和软件二次开发,并且能够很方便地在该平台上进行相关的功能扩展,以及进行所需的产品设计。此次毕业设计中主要用到S3C2410中ADC和触摸屏接口模块。2.3 触摸屏接口电路2.3.1 触摸屏分类触摸屏按其工作原理的不同分为五种:矢量压力传感技术触摸屏、电阻式触摸屏、电容式触摸屏、红外线技术触摸屏、表面声波技术触摸屏6。红外线触摸屏屏价格低廉,但其外框易碎,容易产生光干扰,曲面情况下失真;电容屏设计理论好,但其图像失真问题很难得到根本解决;表面声波触摸屏清晰抗暴,适于各种场合,缺憾是屏表面的水滴、尘土会使触摸屏变地迟钝,甚至不

17、工作;电阻式触摸屏结构简单,成本低廉,透光效果好,工作环境和外界完全隔离,不怕灰尘和水汽,并且稳定性高。因此,在实际应用中使用电阻式触摸屏较多。2.3.2 电阻式触摸屏的工作原理电阻式触摸屏又可分为四线式和五线式两种。它们在制作工艺上基本相同,都由4层透明薄膜构成,最下面是玻璃或有机玻璃构成的基层,最上面是一层外表面经过硬化处理从而光滑防刮的塑料层,附着在上下两层内表面的两层为金属导电层(O T I,氧化铟),这两层由细小的透明隔离点进行绝缘。当手指触摸屏幕时,两个导电层在触摸点处接触。触摸层的两个金属导电层分别用来测量x 轴和y 轴方向的坐标。用于x 坐标测量的导电层从左右两端引出两个电极,

18、记为X+ 和X-。用于y 坐标测量的导电层从上下两端引出两个电极,记为Y+和Y-。这就是四线电阻式触摸屏的引线构成。其简单等效电路如图2.1所示。电阻式触摸屏工作的实质是对X、Y两个方向电阻分压的测量。当手指或笔触摸屏幕时,平时相互绝缘的两导电层就在触摸点位置接触,因其中一面导电层(顶层)接通X轴方向的5V均匀电压场,使得检测层(底层)的电压由零变为非零,控制器侦测到这个接通后,进行A/D转换,并将得到的电压值与5V相比即可得触摸点的X轴坐标为:Xi=Lx(Vi / V)同理可获得触点的Y轴坐标7。触摸屏 X+Y+X-Y-图2.1 触摸屏简单等效电路2.3.3 两种接口方式触摸屏和S3C241

19、0处理器的接口方式有两种:使用S3C2410处理器内部的触摸屏控制器和使用专门的触摸屏接口芯片。(1)使用S3C2410处理器内部的触摸屏控制器可以直接将相关的引脚设置为触摸屏功能引脚,和触摸屏直接相连。S3C2410处理器集成了8通道模拟输入的10位A/D转换器。它将输入的模拟信号转换为10位的二进制数字代码。在2.5MHz的A/D转换器时钟下,最大转换速率可达到500KSPS。A/D转换器支持片上采样和保持功能,并支持掉电模式。S3C2410处理器的引脚AIN7和AIN5用于连接触摸屏的模拟信号输入。触摸屏接口电路一般由触摸屏、4个外部晶体管和一个外部电源组成。如图2.2所示。触摸屏接口的

20、控制和选择信号(nYPON,YMON,nXPON和XMON)连接切换X坐标和Y坐标转换的外部晶体管。模拟输入引脚(AIN5,AIN7)则连接到触摸屏引脚。触摸屏控制接口包括一个外部晶体管控制逻辑和具有中断产生逻辑的ADC接口逻辑,其特性如下:分辨率:10位;微分线性度误差:1.0 LSB;积分线性度误差:2.0 LSB;最大转换速率:500 KSPS;低功耗;供电电压:3.3V;输入模拟电压范围:0-3.3V;片上采样保持功能;普通转换模式;分离的X/Y轴坐标转换模式;自动(连续)X/Y轴坐标转换模式;等待中断模式。图2.2 S3C2410处理器内置ADC和触摸屏接口图S3C2410处理器上的

21、A/D转换器和触摸屏接口如图2.2所示。其中AIN7连接触摸屏的X+引脚,而AIN5连接触摸屏的Y+引脚。控制触摸屏的引脚(X+、X-、Y+和Y-),要用到4个外部晶体管,并采用控制信号nYPON,YMON,nXPON和XMON来控制晶体管的打开与关闭。(2)外接触摸屏转换接口芯片的方式外接一个触摸屏专用的控制芯片如ADS7843,ADS7843适合用在四线制触摸屏,它通过标准SPI协议和CPU通信,操作简单,精度高,当触摸屏被按下时则ADS7843向CPU发中断请求,CPU接到请求后,应延时一下再响应其请求,来消除抖动使得采样更准确。ADS7843特点如下:四线电阻式触摸屏接口;单电压供电,

22、电压范围为2.7-5V;最高125kHz的转换速度;同步串行接口(SPI);12位或8位采样精度;2个附加的A/D通道。12位的A/D最大支持4096x4096点阵的LCD,可以满足大多数应用。多数嵌入式处理器包括S3C2410处理器都集成了同步串行接口(SPI),很容易与ADS7843直接相连。S3C2410处理器和ADS7843接口原理图如图2.3所示。图2.3 S3C2410和ADS7843接口原理图3 交叉编译环境的建立3.1 Linux交叉编译环境简介绝大多数Linux软件开发都是以本机方式进行的,即采用本机(HOST)开发、调试、本机运行的方式。但这种方式不适合于嵌入式系统的软件开

23、发,因为对于嵌入式系统,没有足够的资源在开发板上运行开发工具和调试工具。因此,通常采用一种交叉编译调试的方式,建立交叉编译环境的PC机称为宿主机,而对应的开发板称为目标板7,15。开发时,在运行Linux的宿主机上,使用宿主机的交叉编译、汇编及连接工具生成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标板上运行。调试时可以采用串口、以太网口等。 在宿主机建立嵌入式Linux开发环境有以下几个方案:(1) 基于宿主机Windows操作系统下的Cygwin;(2) 直接安装Linux操作系统;(3) 在Windows下安装虚拟机后,再在虚拟

24、机中安装Linux操作系统; Cygwin只是模拟一个Unix环境,虽然有助于初学者学习,但它所支持的命令不完整,它是一个不完整的Unix系统;直接安装Linux则不用考虑兼容性问题,但设置较为复杂,很容易出错;而在虚拟机里安装的Linux是完整的,但要考虑和Windows的兼容问题。在综合比较之下,采用第三种方案,即在宿主机Windows环境下安装虚拟机,再在虚拟机中安装Linux系统。3.2 开发环境的配置3.2.1 配置NFS通过NFS方式建立宿主机和开发板的通讯是开发调试过程中常用的方法8。配置NFS网络设置,包括配置IP地址、NFS服务、防火墙。开发板上固定的IP地址为192.168

25、.0.115,为了进行通讯,将宿主机上的IP设置成和开发板在同一网段,这里将虚拟机的IP地址设置为192.168.0.121,Windows下的IP设置为192.168.0.120。对于REDHAT9.0,它的默认设置是打开防火墙,对于外来的IP访问它全部拒绝,因此在网络设置完成后,应立即关闭防火墙。最后在NFS服务器的目录中填入要共享的文件路径/root/share,在宿主机中填入允许进行连接的主机IP地址192.168.0.*,并选择允许客户对共享目录的操作为读写状态(Read/Write)。由于Linux操作系统是装在虚拟机上,所以这里有个IP设置的问题,起初以为虚拟机和主机的IP应该设

26、置为相同的,但这样始终不能用NFS将开发板挂载到Linux系统上。总是提示:Unknown nfs mount option: nolock;Mount: nfs mount failed: No such file or directoryWarning: mount version newer than kernelNFS : mount program does not pass remote address !Mount: Mounting 192.168.0.121:/root/share on /host failed: Invaild argument后来查了计算机网络方面的资料

27、,才知道因为装虚拟机时网络是桥接的,相当于建立了一个局域网,需要给虚拟机和主机分配不同的IP才能工作。3.2.2 配置MinicomMinicom是Linux下的通信终端程序,通过minicom可以设置、监视串口工作状态,接收、显示串口收到的信息。在Linux操作系统的超级终端中输入minicom即可进入minicom界面。先按住CtrlA,再按Z键可以进入主配置界面。其中主要的设置为:端口号设置为/dev/ttsS0(即使用串口1);波特率设置为115200;硬件流和软件流都改为NO8。3.3 开发工具的安装开发工具主要包括针对目标板的编译器gcc、目标板的二进制工具binutils、目标板

28、的标准c库glibc和目标板的Linux内核头文件9。其中glibc和内核源代码的版本必须与目标板上实际使用的版本保持一致。其主要步骤为:(1)下载binutils、gcc、glibs的源码;(2)配置并编译binutils,得到下一步要用到的汇编器和连接器;(3) 配置并编译gcc源代码,生成gcc编译器;(4) 配置glibc并编译生成glibc的c函数库(5) 再次配置并编译gcc源代码,生成其它语言的编译器如:C等10,11。这是开发环境建立的整个过程。如果一步步来做是比较复杂的,一般可以从网上下载别人整理好的整个文件包。这里直接采用北京博创提供的工具包。4 基于Qt的图形用户界面设计

29、图形用户界面GUI(Graphics User Interface)是迄今为止计算机系统中最为成熟的人机交互技术。嵌入式GUI的要求是简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。另外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁剪性,以适应不同的硬件条件和使用需求8,12。总体来讲,嵌入式GUI应具备以下特点:体积小;运行时耗用系统资源小;上层接口与硬件无关,高度可移植性;在某些应用场合应具备实时性。Qt/Embedded是最优秀的嵌入式GUI开发工具之一,在毕业设计中采用它来编写用于触摸屏的图形界面。4.1 Qt体系结构 4.1.1 Qt架构

30、Qt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本。它延续了Qt在X Window上的强大功能,在底层摒弃了函数库Xlib,仅采用帧缓冲作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件,底层接口支持键盘、GPM 鼠标、触摸屏以及用户自定义的设备等。Qt/ Embedded 是完全面向对象的,很容易扩展,提供了丰富的窗口部件集,并且允许真正的组件编程,库的稳定性和健壮性比较好。它的类库接口完全兼容于同版本的Qt- X11 ,使用X Window下的开发工具可以直接开发基于Qt/Embedded的应用程序GUI界面12。Q

31、t/Embedded和Qt的体系结构比较如图4.1所示。应用源程序Qt APIQt/EmbeddedQt/X11 Qt/XLibX Window Server帧缓冲Linux 内核图4.1 Qt/Embedded与Qt/X11的比较 Qt/Embedded的底层图形引擎基于framebuffer,framebuffer出现在2.2.x以上内核的版本当中的一种驱动程序接口。这种接口采用mmap系统调用,将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映象,将其映射到进程地址空间之后,就可以直接进行读写操作了,而写操作可以立即反映在屏幕上。Framebuffer驱动程序是最重要的驱动程序

32、之一,正是这个驱动程序才能使系统屏幕显示内容。其实现分为两个方面:一是对LCD及其相关部件的初始化,包括画面缓冲区的创建和对DMA通道的设置;二是对画面缓冲区的读写,具体到代码为read、write等系统调用接口。图4.2为Qt/Embedded的实现结构。Qt/Embedded 应用程序 QWSSever图形事件服务Qt/Embeddedframebuffer输入设备驱动 Linux操作系统底层硬件平台图4.2 Qt/Embedded的实现结构4.1.2 Qt文件架构Qt由三个文件构成:tmake-1.13.tar.gz、 qt-embedded-2.3.10-free.tar.gz和qt-

33、x11-2.3.2.tar.gz。tamkeQt-X11Qt/EmbeddedQtopia生成和管理MakefileTMAKEDIR TAMKEPATHQvfb虚拟帧缓冲工具Uic用户界面编译器Designer Qt应用程序设计工具PATH LD_LIBRARY_PATHQt库支持Libqte.soQTEDIR PATH LD_LIBRARY_PATH应用程序开发包桌面环境QPEDIR PATH LD_LIBRARY_PATH图4.3 Qt包含的工具及环境变量声明其中tmake是qt应用程序的编译工具,用于生成Makefile文件;x-11主要包含三个工具moc、uic和designer,mo

34、c用于Qt C扩展的metra-object编译器,uic从XML文件生成代码的用户界面编译器,而designer是用于设计窗口组件的应用程序。Qt/Embedded不仅提供了所有qt程序需要的库文件,还提供了虚拟帧缓冲qvfb(qt virtual frame buffer),qvfb是X窗口用来运行和测试Qtopia应用程序的系统程序,qvfb使用了共享存储区域(虚拟的帧缓冲)来模拟帧缓冲并且在一个窗口中(qvfb)模拟一个应用来显示帧缓冲,显示的区域被周期性的改变和更新。通过指定显示设备的宽度和颜色深度,并且虚拟出来的缓冲帧和物理的显示设备在每个像素上保持一致。使得我们在每次调试应用时不

35、需要经常刷新开发板上的FLASH存储空间,从而加速了应用程序的开发。4.2 Qt环境的建立在Linux系统的/root目录下,建立子目录2410qt,并将上面提到的三个文件复制到/root/2410qt中,进入该目录,将三个压缩文件包分别解压:tar xzf tmake-1.13.tar.gztar xzf qt-x11-2.3.2.tar.gztar xzf qt-embedded-2.3.10-free.tar.gz并分别设置环境变量:export QTEDIR=$PWD/qt-2.3.10export TMAKEDIR=$PWD/tmake-1.13export QT2DIR=$PWD/

36、qt-2.3.2环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包,其中:TMAKEDIR:指向用于编译Qt/Embedded的Tmake工具QT2DIR:指向qt-2.3.2的文件夹QTEDIR:指向qt-2.3.10的文件夹当环境变量设置正确后,就可以对它们分别进行编译了。(1) 编译qt-2.3.2cd $QT2DIRexport TMAKEPATH=$TMAKEDIR/lib/linux-g+export QTDIR=$QT2DIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBR

37、ARY_PATH./configure -no-xft makecp arf bin/uic $QTEDIR/bin/(2) 编译qvfbexport TMAKEPATH=$TMAKEDIR/lib/linux-g+export QTDIR=$QT2DIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHcd $QTEDIR/tools/qvfb/root/2410sQt/tmake-1.13/bin/tmake -o Makefile qvfb.promakemv qvfb $QTEDI

38、R/bin/(3) 编译Qt/Embeddedcd $QTEDIRexport TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g+export QTDIR=$QTEDIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH./configure -no-xft -qvfb -depths 4,8,16,32make开始几次编译时,对整个编译过程还不了解,在设置环境变量时容易漏掉“$”符号或是拼写错误,而且担心make失败后,中间生成的文件会对下一次make产生影

39、响。几天时间后,编译了近十次才完全编译成功。其中编译qvfb时,在输入make指令后,提示“Nothing to be done for all”,查找资料后知道要在make前先执行make clean命令,以清除上次编译产生的中间文件。当编译全部通过后,就可以在qvfb上来检测自己编写的应用程序,其步骤如下:(1) 生成工程文件(.pro)每一个Qt 程序都对应着一个工程文件,因为tmake工具要借此工程生成相应的Makefile文件。生成工程文件需要使用progen工具,它的位置在$TMAKEDIR/bin下,使用progen生成工程文件的方法如下:$TMAKEDIR/bin/progen

40、 t app.t o hello.pro(2) 生成Makefile 文件Qt提供了生成Makefile文件的工具tmake,这极大地方便了应用程序的开发,节省了大量的时间,而且还可根据不同平台的需要生成适合于不同平台的Makefile文件。在命令行中输入如下命令:$TMAKEDIR/bin/tmake o Makefile hello.pro完成上面的步骤以后就可以在当前的目录中生成一个Makefile文件,之后在命令行中输入make命令就可以对整个程序进行编译链接了。最终可以生成一个二进制的可执行文件,其在qvfb中的显示结果如图4.4所示。图4.4 hello Qt/Embedded在q

41、vfb中的显示结果4 .3 Qt Designer的使用Qt Designer是一个GUI工具,它可以帮助我们来加快编写Qt应用程序的速度。利用Qt Designer可以用一种所见既所得的方式来生成Qt程序GUI 图形界面的程序源码,并且只需要手工编写一个main函数就可以进行编译了。利用Qt Designer可以非常快速的学会Qt,但是在编写大型应用程序时并不使用Qt Designer,这是因为Qt Designer所产生的程序源码有些繁琐,运行起来也比较慢,因此,只是借助Qt Designer来更好的理解和学习Qt,不是直接去运行Qt Designer 生成的程序源码。Qt应用程序的完成包

42、括以下几个步骤:(1) 创建和初始化子部件(2) 设置子部件的布局(3) 设置Tab键的次序(4) 建立信号与插槽的连接将部件布置好后,就可以根据我们的需要来建立连接,Qt开创性的使用了信号与插槽机制,与传统的回调函数方式不同,它是一种灵活、类型安全、快速、完全面向对象的C+机制。使用传统的回调函数机制来关联某段代码和和一个按键,需要有一个指向函数的指针,并且将这个指针地址传给按钮。当这个按钮被按下,这个函数就会被执行。以前的工具包不能保证函数被执行时所传递的类型是正确的,这使得进程很容易崩溃。另一个问题是,这种回调方法紧紧得绑定了GUI得基本功能元素,使得很难进行独立的分类开发。Qt的信号与

43、插槽机制则不同,Qt部件(Widgets)事件发生时发出信号,如一个按钮被点击时会发出一个“clicked”信号。程序员可以选择建立一个函数(称为插槽)并调用connect( )来将这个信号与插槽连接起来。用户在编程时可以将两个对象捆绑在一起而不需要知道每个对象的各自的信息,而且可以自己创建信号与插槽,发射自己的信号等等。 Qt Designer最终生成的文件为.ui文件,之后用Qt提供的uic工具可以生成.h文件和.cpp文件。但只有这两个文件程序还是不能运行的,还需要一个main.cpp文件才能进行编译链接。到这一步编译出来的Qt应用程序只能在宿主机上运行,若要移植到开发板上还要对Qt/E

44、mbedded重新编译。其编译步骤与前面编译宿主机上的Qt/Embedded类似,唯一不同的是编译器的设置:export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g+,即将平台由linux-x86-g+改为linux-arm-g+。4.4 Qtopia虚拟平台建立Qtopia是TrollTech公司为采用嵌入式Linux系统的移动计算设备和手持设备而开发的综合应用平台,包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。它是基于Qt/Embedded编写的应用程序环境,也是开放源码的一套应用程序包和开发库。使用Qt/Embedded

45、不仅可以开发Qtopia也可以用来开发面向Qtopia的第三方软件。它包括三个版本:Qtopia手机版Qtopia PDA版和Qtopia消费电子产品平台。Qtopia虚拟平台由文件tmake-1.13.tar.gz、qtopia-free-source-2.1.1.tar.gz、qt-embedded-2.3.10.tar.gz 和qt-x11-2.3.2 .tar.gz组成。其编译方法和前面建立qt桌面运行环境时的方法类似,不过前面解压出来的文件在这里不可以直接使用,必须重新解压。这里多出了libqte库文件和qtopia的编译。其中在编译qtopia时容易出现错误,主要是说Qtoipa的

46、运行需要jpeg的支持,提示前面在编译ligqte库文件时没有configure上-system-jpeg,因此需要重新编译libqte,在configure时加上-system-jpeg。在宿主机上编译成功的Qtopia平台如图4.5所示。 图4.5 宿主机上的虚拟Qtopia平台4.5 Qtopia的移植将Qtopia2.1.1移植到在S3C2410处理器上,其编译方法和建立本机Qtopia平台类似,不过加上了e2fsprogs-libs-1.37、jpeg-6b和tslib三个工具包,Qtopia分别用到它们中的libuuid、jpeg和tslib库文件。在编译完后通过NFS将文件下载到/mnt/yaffs目录下,同时还要复制几个库文件到开发板上。但是在调试过程中遇到了问题:实验文档上给出的是:将src/qtopia.sh 下载到目标机的/usr/bin 目录下将src/e2fs-install/lib/libuuid.so*下载到目标机的/lib 目录下将src/jpeg-install/lib/libjpeg.so*下载到目标机的/lib 目录下通过NFS将开发板挂载到宿主机后,依次执行:cp /root/share/qtopia.sh /usr/bincp /root/share/libuuid.so* /libcp /roo

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 研究报告 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服