1、1基于处理器SC22410的手持终端触摸屏的设计摘要随着嵌入式技术在智能手机、PDA等手持终端设备的应用越来越广泛,触摸屏作为一种终端输入设备,具有节省空间、操作简单、反应速度快等优点,非常适用作手持终端等嵌入式系统的输入设备。S3C2410是一款具有ARM920T内核的16/32位微处理器。作为新一代嵌入式平台的核心,ARM9采用5级流水线,使用大量寄存器,并支持协处理器和片上调试,以指令执行速度快,寻址方式灵活简单,执行效率高为优势,在工业控制、无线通讯、消费类电子产品、成像和安全产品等各个领域得到了广泛的应用。嵌入式LINUX是在开放源代码LINUX的基础上发展起来的,内核精简,内存管理
2、功能强大,支持多任务,以设备驱动程序的方式提供统一的外设接口。因此LINUX是嵌入式操作系统的最佳选择。QT/EMBEDDED是一个专门为嵌入式系统提供图形界面的用户系统,提供了丰富的窗口小部件,支持窗口部件的定制,而且内存消耗少。本文介绍了基于S3C2410处理器平台,以嵌入式LINUX操作系统和QT/EMBEDDED为接口的LCD触摸屏操作界面的设计。该方案可运用于高档汽车GPS巡航系统、工程机械安全仪表和电能质量监测仪等实际工程应用中。关键词触摸屏;嵌入式LINUX;ARM;QTOPIA移植2REALIZATIONOFTHEHANDHOLDTERMINALSTOUCHSCREENBASE
3、DONTHES3C2410PROCESSORABSTRACTWITHTHEAPPLICATIONOFEMBEDDEDTECHNOLOGYINSMARTPHONES,PDAANDOTHERHANDHOLDTERMINALEQUIPMENTSISINCREASINGLYEXTENSIVEASANINPUTDEVICEOFTERMINALEQUIPMENT,THETOUCHSCREENHASTHEADVANTAGESOFSPACESAVING,SIMPLEOPERATION,FASTRESPONSE,ISVERYSUITABLEASTHEINPUTEQUIPMENTOFTHEHANDHOLDTERM
4、INALSANDOTHEREMBEDDEDSYSTEMSS3C2410ISONE16/32BITMICROPROCESSORWITHARM920TCOREASTHECOREOFTHENEWGENERATIONOFTHEEMBEDDEDPLATFORM,ARM9USES5LEVELSOFASSEMBLYLINESANDMASSIVEREGISTERS,SUPPORTINGTHECOOPERATEDPROCESSORANDDEBUGGINGONLINE,HASTHEADVANTAGEOFCARRIESOUTTHEINSTRUCTIONQUICKLYANDEFFICIENTLYITISWIDELYA
5、PPLIEDINTHEINDUSTRYCONTROL,THEWIRELESSCOMMUNICATION,THEEXPENSECLASSELECTRONICPRODUCTS,THEIMAGERYANDTHESECURITYPRODUCTANDSOONTHEEMBEDDEDLINUXDEVELOPEDFROMTHEOPENSOURCECODELINUX,ITHASSIMPLYCOREANDTHEFUNCTIONOFSTRONGLYMANAGINGTHEMEMORY,SUPPORTTHEMULTIDUTIESITPROVIDESTHEGENERALINTERFACEINTHEWAYOFDEVICED
6、RIVERSTHEREFORETHEEMBEDDEDLINUXWASCONSIDEREDASONEOFTHEMOSTSUPERIORCHOICESINTHECURRENTEMBEDDEDOPERATINGSYSTEMSQT/EMBEDDEDISTHESYSTEMTHATPROVIDESTHEGRAPHICALUSERINTERFACESPECIALUSEDINTHEEMBEDDEDSYSTEMITINTEGRATESALOTOFSMALLWINDOWPARTS,SUPPORTSTHECUSTOMMADEWINDOWANDCONSUMESMEMORYFEWERTHISPAPERINTRODUCE
7、DTHEREALIZATIONOFTHEOPERATIONOFTHETOUCHSCREEN,WHICHINTHEFOUNDATIONOFTHEEMBEDDEDLINUXOPERATIONSYSTEMANDTHES3C2410PROCESSOR,ISDESIGNEDBYQT/EMBEDDEDTHISPLANMAYUTILIZETOTHEUPSCALEAUTOMOBILEGPSCRUISESYSTEM,THEPROJECTMECHANICALSECURITYMETERANDTHEELECTRICALENERGYQUALITYMONITORMETERANDSOONKEYWORDSTOUCHSCREE
8、NEMBEDDEDLINUXARMQTOPIAPORTING3目次1引言12硬件平台221ARM体系结构222S3C2410处理器简介223触摸屏接口电路33交叉编译环境的建立731LINUX交叉编译环境简介732开发环境的配置733开发工具的安装84基于QT的图形用户界面设计1041QT体系结构1042QT环境的建立1243QTDESIGNER的使用1544QTOPIA虚拟平台建立1645QTOPIA的移植175触摸屏图形操作界面的实现1951LINUX设备驱动程序1952触摸屏驱动程序分析2253QT/EEMBEDDED中的触摸屏驱动接口2854QT/EMBEDDED的触摸屏驱动接口的设置
9、3055驱动程序调试过程中出现的问题31结论34致谢35参考文献36附录A触摸屏驱动部分源程序3741引言嵌入式系统就是以应用为中心、以计算机技术为基础,软、硬件可裁剪,对功能可靠性、成本、体积和功耗等严格要求的专用计算机系统1。随着嵌入式技术的发展,手持终端设备的应用越来越广泛,如智能手机、警务通、手持抄表系统等。由于手持终端对体积要求很严格,而触摸屏作为一种实用的电脑输入设备,具有节省空间、坚固耐用、反应速度快、易于交流等优点,非常适合用作手持终端设备的输入设备。LINUX操作系统因开放源码、便于裁剪,是当前嵌入式操作系统的主要选择。ARM9作为新一代嵌入式平台,凭借其强大的功能与良好的设
10、备支持在数据通信、多媒体显示和手持终端设备等领域得到了广泛的应用。因此作为与用户交互的终端媒介,如何在以ARM9为核心的系统中集成触摸屏模块以及在嵌入式LINUX操作系统中实现其驱动程序,是一个非常值得去研究和解决的课题。ARM9微处理器作为新一代嵌入式平台,它采用5级流水线,使用大量寄存器,并支持协处理器和片上调试,以指令执行速度快,寻址方式灵活简单,执行效率高为优点2,14。在工业控制、无线通讯、消费类电子产品、成像和安全产品等各个领域得到了广泛的应用。嵌入式LINUX是在开放源代码的LINUX基础上发展起来的,它内核精简,可移植性强,内存管理功能强大;支持多任务;以设备驱动程序的方式提供
11、统一的外设接口3,4。因此LINUX是嵌入式平台上操作系统的最佳选择。QTOPIA是在基于QT的嵌入式版本QT/EMBEDDED库的基础上,专门针对PDA、SMARTPHONE这类运行嵌入式LINUX的移动计算设备和手持终端所开发的开放源码的一套应用程序包和开发库5。它是用QT/EMBEDDED程序库编写的应用程序环境,界面优美,主要应用于高端手机、PDA等手持设备,具有广阔的发展前景。在本次毕业设计中,以博创科技嵌入式教学科研UPNETARM2410S开发板为硬件平台,实现基于S3C2410处理器的嵌入式LINUX内核的编译与移植,开发基于QT的人机友好LCD触摸屏操作界面,并在S3C241
12、0处理器上完成QTOPIA211的移植。52硬件平台21ARM体系结构及应用ARM9微处理器作为新一代嵌入式平台,它采用5级流水线,支持THUMB/ARM双指令集,能很好地兼容8位/16位器件;大量使用寄存器,指令执行速度快;寻址方式灵活简单,执行效率高;支持协处理器和片上调试。到目前为止,ARM微处理器及技术已经深入到各个领域。作为32位的RISC架构,基于ARM内核的为控制器芯片不但占据了微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微处理器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。目前已有超过85的无线通讯设备采用了ARM技术,手机中的32位
13、SIM智能卡也采用了ARM技术5,ARM以其高性能和低成本,在该领域的地位日益巩固。随着宽带技术的推广,采用ARM技术的ASDL芯片正逐渐获得竞争优势。此外,ARM在语音及视频处理上进行了优化。并获得了广泛支持,也对DSP的应用领域提出了挑战。22S3C2410处理器简介S3C2410处理器是一款基于ARM920T内核的16/32位RISC嵌入式处理器,主要面向手持设备、移动通信等应用领域。它集成了大量的功能单元(1)18VARM920T内核,18V/25V/33V存储系统,带有33V16KB指令和16KB数据缓存及MMU单元的外部O接口的微处理器;(2)外部存储器控制(SDRAM控制和芯片选
14、择逻辑);(3)LCD控制器(支持4K颜色的STN或256K色TFT的LCD),带有1个通道的LCD专用DMA控制器;(4)4通道DMA,具有外部请求引脚;(5)3通道UART(支持IRDA10,16字节发送FIFO及16字节接收FIFO)/2通道SPI接口;(6)1个通道多主IIC总线控制器/1通道IIS总线控制器;(7)2个主机接口的USB口/1个设备USB口(11版本);(8)4通道PWM定时器/1通道内部计时器;6(9)117位通用目的I/O口/24通道外部中断源;(10)带触摸屏接口的8通道10位ADC;等等。该平台提供了系统级的硬件和软件二次开发,并且能够很方便地在该平台上进行相关
15、的功能扩展,以及进行所需的产品设计。此次毕业设计中主要用到S3C2410中ADC和触摸屏接口模块。23触摸屏接口电路231触摸屏分类触摸屏按其工作原理的不同分为五种矢量压力传感技术触摸屏、电阻式触摸屏、电容式触摸屏、红外线技术触摸屏、表面声波技术触摸屏6。红外线触摸屏屏价格低廉,但其外框易碎,容易产生光干扰,曲面情况下失真;电容屏设计理论好,但其图像失真问题很难得到根本解决;表面声波触摸屏清晰抗暴,适于各种场合,缺憾是屏表面的水滴、尘土会使触摸屏变地迟钝,甚至不工作;电阻式触摸屏结构简单,成本低廉,透光效果好,工作环境和外界完全隔离,不怕灰尘和水汽,并且稳定性高。因此,在实际应用中使用电阻式触
16、摸屏较多。232电阻式触摸屏的工作原理电阻式触摸屏又可分为四线式和五线式两种。它们在制作工艺上基本相同,都由4层透明薄膜构成,最下面是玻璃或有机玻璃构成的基层,最上面是一层外表面经过硬化处理从而光滑防刮的塑料层,附着在上下两层内表面的两层为金属导电层(OTI,氧化铟),这两层由细小的透明隔离点进行绝缘。当手指触摸屏幕时,两个导电层在触摸点处接触。触摸层的两个金属导电层分别用来测量X轴和Y轴方向的坐标。用于X坐标测量的导电层从左右两端引出两个电极,记为X和X。用于Y坐标测量的导电层从上下两端引出两个电极,记为Y和Y。这就是四线电阻式触摸屏的引线构成。其简单等效电路如图21所示。电阻式触摸屏工作的
17、实质是对X、Y两个方向电阻分压的测量。当手指或笔触摸屏幕时,平时相互绝缘的两导电层就在触摸点位置接触,因其中一面导电层(顶层)接通X轴方向的5V均匀电压场,使得检测层(底层)的电压由零变为非零,控制器侦7测到这个接通后,进行A/D转换,并将得到的电压值与5V相比即可得触摸点的X轴坐标为XILX(VI/V)同理可获得触点的Y轴坐标7。图21触摸屏简单等效电路233两种接口方式触摸屏和S3C2410处理器的接口方式有两种使用S3C2410处理器内部的触摸屏控制器和使用专门的触摸屏接口芯片。(1)使用S3C2410处理器内部的触摸屏控制器可以直接将相关的引脚设置为触摸屏功能引脚,和触摸屏直接相连。S
18、3C2410处理器集成了8通道模拟输入的10位A/D转换器。它将输入的模拟信号转换为10位的二进制数字代码。在25MHZ的A/D转换器时钟下,最大转换速率可达到500KSPS。A/D转换器支持片上采样和保持功能,并支持掉电模式。S3C2410处理器的引脚AIN7和AIN5用于连接触摸屏的模拟信号输入。触摸屏接口电路一般由触摸屏、4个外部晶体管和一个外部电源组成。如图22所示。触摸屏接口的控制和选择信号(NYPON,YMON,NXPON和XMON)连接切换X坐标和Y坐标转换的外部晶体管。模拟输入引脚(AIN5,AIN7)则连接到触摸屏引脚。触摸屏控制接口包括一个外部晶体管控制逻辑和具有中断产生逻
19、辑的ADC接口逻辑,其特性如下分辨率10位;微分线性度误差10LSB;积分线性度误差20LSB;最大转换速率500KSPS;触摸屏XYXY8低功耗;供电电压33V;输入模拟电压范围033V;片上采样保持功能;普通转换模式;分离的X/Y轴坐标转换模式;自动(连续)X/Y轴坐标转换模式;等待中断模式。S3C2410处理器上的A/D转换器和触摸屏接口如图22所示。其中AIN7连接触摸屏的X引脚,而AIN5连接触摸屏的Y引脚。控制触摸屏的引脚(X、X、Y和Y),要用到4个外部晶体管,并采用控制信号NYPON,YMON,NXPON和XMON来控制晶体管的打开与关闭。(2)外接触摸屏转换接口芯片的方式外接
20、一个触摸屏专用的控制芯片如ADS7843,ADS7843适合用在四线制触摸屏,它通过标准SPI协议和CPU通信,操作简单,精度高,当触摸屏被按下时则ADS7843向CPU发中断请求,CPU接到请求后,应延时一下再响应其请求,来消除抖动使得采样更准确。ADS7843特点如下四线电阻式触摸屏接口;单电压供电,电压范围为275V;图22S3C2410处理器内置ADC和触摸屏接口图9最高125KHZ的转换速度;同步串行接口(SPI);12位或8位采样精度;2个附加的A/D通道。12位的A/D最大支持4096X4096点阵的LCD,可以满足大多数应用。多数嵌入式处理器包括S3C2410处理器都集成了同步
21、串行接口(SPI),很容易与ADS7843直接相连。S3C2410处理器和ADS7843接口原理图如图23所示。图23S3C2410和ADS7843接口原理图VCC1X2Y3X4Y5IN37IN48VREF9VCC10PENIRQ11DOUT12BUSY13DIN14CS15DCLK16U505FM7843VDD33TCHYTCHXTCHXTCHYC506104C505104EINT5MISO0MOSI0SPICLK0GPG12103交叉编译环境的建立31LINUX交叉编译环境简介绝大多数LINUX软件开发都是以本机方式进行的,即采用本机(HOST)开发、调试、本机运行的方式。但这种方式不适合
22、于嵌入式系统的软件开发,因为对于嵌入式系统,没有足够的资源在开发板上运行开发工具和调试工具。因此,通常采用一种交叉编译调试的方式,建立交叉编译环境的PC机称为宿主机,而对应的开发板称为目标板7,15。开发时,在运行LINUX的宿主机上,使用宿主机的交叉编译、汇编及连接工具生成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标板上运行。调试时可以采用串口、以太网口等。在宿主机建立嵌入式LINUX开发环境有以下几个方案1基于宿主机WINDOWS操作系统下的CYGWIN;2直接安装LINUX操作系统;3在WINDOWS下安装虚拟机后,再在虚拟机
23、中安装LINUX操作系统;CYGWIN只是模拟一个UNIX环境,虽然有助于初学者学习,但它所支持的命令不完整,它是一个不完整的UNIX系统;直接安装LINUX则不用考虑兼容性问题,但设置较为复杂,很容易出错;而在虚拟机里安装的LINUX是完整的,但要考虑和WINDOWS的兼容问题。在综合比较之下,采用第三种方案,即在宿主机WINDOWS环境下安装虚拟机,再在虚拟机中安装LINUX系统。32开发环境的配置321配置NFS通过NFS方式建立宿主机和开发板的通讯是开发调试过程中常用的方法8。配置NFS网络设置,包括配置IP地址、NFS服务、防火墙。开发板上固定的IP地址为1921680115,为了进
24、行通讯,将宿主机上的IP设置成和开发板在同一网段,这里将虚拟机的IP地址设置为1921680121,WINDOWS下的IP设置为1921680120。对于REDHAT90,它的默认设置是打开防火墙,对于外来的IP11访问它全部拒绝,因此在网络设置完成后,应立即关闭防火墙。最后在NFS服务器的目录中填入要共享的文件路径/ROOT/SHARE,在宿主机中填入允许进行连接的主机IP地址1921680,并选择允许客户对共享目录的操作为读写状态(READ/WRITE)。由于LINUX操作系统是装在虚拟机上,所以这里有个IP设置的问题,起初以为虚拟机和主机的IP应该设置为相同的,但这样始终不能用NFS将开
25、发板挂载到LINUX系统上。总是提示UNKNOWNNFSMOUNTOPTIONNOLOCKMOUNTNFSMOUNTFAILEDNOSUCHFILEORDIRECTORYWARNINGMOUNTVERSIONNEWERTHANKERNELNFSMOUNTPROGRAMDOESNOTPASSREMOTEADDRESSMOUNTMOUNTING1921680121/ROOT/SHAREON/HOSTFAILEDINVAILDARGUMENT后来查了计算机网络方面的资料,才知道因为装虚拟机时网络是桥接的,相当于建立了一个局域网,需要给虚拟机和主机分配不同的IP才能工作。322配置MINICOMMIN
26、ICOM是LINUX下的通信终端程序,通过MINICOM可以设置、监视串口工作状态,接收、显示串口收到的信息。在LINUX操作系统的超级终端中输入MINICOM即可进入MINICOM界面。先按住CTRLA,再按Z键可以进入主配置界面。其中主要的设置为端口号设置为/DEV/TTSS0即使用串口1;波特率设置为115200;硬件流和软件流都改为NO8。33开发工具的安装开发工具主要包括针对目标板的编译器GCC、目标板的二进制工具BINUTILS、目标板的标准C库GLIBC和目标板的LINUX内核头文件9。其中GLIBC和内核源代码的版本必须与目标板上实际使用的版本保持一致。其主要步骤为1下载BIN
27、UTILS、GCC、GLIBS的源码;2配置并编译BINUTILS,得到下一步要用到的汇编器和连接器;123配置并编译GCC源代码,生成GCC编译器;4配置GLIBC并编译生成GLIBC的C函数库5再次配置并编译GCC源代码,生成其它语言的编译器如C等10,11。这是开发环境建立的整个过程。如果一步步来做是比较复杂的,一般可以从网上下载别人整理好的整个文件包。这里直接采用北京博创提供的工具包。134基于QT的图形用户界面设计图形用户界面GUI(GRAPHICSUSERINTERFACE)是迄今为止计算机系统中最为成熟的人机交互技术。嵌入式GUI的要求是简单、直观、可靠、占用资源小且反应快速,以
28、适应系统硬件资源有限的条件。另外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁剪性,以适应不同的硬件条件和使用需求8,12。总体来讲,嵌入式GUI应具备以下特点体积小;运行时耗用系统资源小;上层接口与硬件无关,高度可移植性;在某些应用场合应具备实时性。QT/EMBEDDED是最优秀的嵌入式GUI开发工具之一,在毕业设计中采用它来编写用于触摸屏的图形界面。41QT体系结构411QT架构QT/EMBEDDED是著名的QT库开发商TROLLTECH公司开发的面向嵌入式系统的QT版本。它延续了QT在XWINDOW上的强大功能,在底层摒弃了函数库XLIB,仅采用帧缓冲作为底层图形
29、接口。同时,将外部输入设备抽象为KEYBOARD和MOUSE输入事件,底层接口支持键盘、GPM鼠标、触摸屏以及用户自定义的设备等。QT/EMBEDDED是完全面向对象的,很容易扩展,提供了丰富的窗口部件集,并且允许真正的组件编程,库的稳定性和健壮性比较好。它的类库接口完全兼容于同版本的QTX11,使用XWINDOW下的开发工具可以直接开发基于QT/EMBEDDED的应用程序GUI界面12。QT/EMBEDDED和QT的体系结构比较如图41所示。14图41QT/EMBEDDED与QT/X11的比较QT/EMBEDDED的底层图形引擎基于FRAMEBUFFER,FRAMEBUFFER出现在22X以
30、上内核的版本当中的一种驱动程序接口。这种接口采用MMAP系统调用,将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映象,将其映射到进程地址空间之后,就可以直接进行读写操作了,而写操作可以立即反映在屏幕上。FRAMEBUFFER驱动程序是最重要的驱动程序之一,正是这个驱动程序才能使系统屏幕显示内容。其实现分为两个方面一是对LCD及其相关部件的初始化,包括画面缓冲区的创建和对DMA通道的设置;二是对画面缓冲区的读写,具体到代码为READ、WRITE等系统调用接口。图42为QT/EMBEDDED的实现结构。图42QT/EMBEDDED的实现结构412QT文件架构QT由三个文件构成TMAKE
31、113TARGZ、QTEMBEDDED2310FREETARGZ和QTX11232TARGZ。应用源程序QTAPIQT/EMBEDDEDQT/X11QT/XLIBXWINDOWSERVER帧缓冲LINUX内核QT/EMBEDDED应用程序QWSSEVER图形事件服务QT/EMBEDDEDFRAMEBUFFER输入设备驱动LINUX操作系统底层硬件平台15图43QT包含的工具及环境变量声明其中TMAKE是QT应用程序的编译工具,用于生成MAKEFILE文件;X11主要包含三个工具MOC、UIC和DESIGNER,MOC用于QTC扩展的METRAOBJECT编译器,UIC从XML文件生成代码的用户
32、界面编译器,而DESIGNER是用于设计窗口组件的应用程序。QT/EMBEDDED不仅提供了所有QT程序需要的库文件,还提供了虚拟帧缓冲QVFB(QTVIRTUALFRAMEBUFFER),QVFB是X窗口用来运行和测试QTOPIA应用程序的系统程序,QVFB使用了共享存储区域(虚拟的帧缓冲)来模拟帧缓冲并且在一个窗口中(QVFB)模拟一个应用来显示帧缓冲,显示的区域被周期性的改变和更新。通过指定显示设备的宽度和颜色深度,并且虚拟出来的缓冲帧和物理的显示设备在每个像素上保持一致。使得我们在每次调试应用时不需要经常刷新开发板上的FLASH存储空间,从而加速了应用程序的开发。42QT环境的建立在L
33、INUX系统的/ROOT目录下,建立子目录2410QT,并将上面提到的三个文件复制到/ROOT/2410QT中,进入该目录,将三个压缩文件包分别解压TARXZFTMAKE113TARGZTAMKEQTX11QT/EMBEDDEDQTOPIA生成和管理MAKEFILETMAKEDIRTAMKEPATHQVFB虚拟帧缓冲工具UIC用户界面编译器DESIGNERQT应用程序设计工具PATHLD_LIBRARY_PATHQT库支持LIBQTESOQTEDIRPATHLD_LIBRARY_PATH应用程序开发包桌面环境QPEDIRPATHLD_LIBRARY_PATH16TARXZFQTX11232TA
34、RGZTARXZFQTEMBEDDED2310FREETARGZ并分别设置环境变量EXPORTQTEDIRPWD/QT2310EXPORTTMAKEDIRPWD/TMAKE113EXPORTQT2DIRPWD/QT232环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包,其中TMAKEDIR指向用于编译QT/EMBEDDED的TMAKE工具QT2DIR指向QT232的文件夹QTEDIR指向QT2310的文件夹当环境变量设置正确后,就可以对它们分别进行编译了。1编译QT232CDQT2DIREXPORTTMAKEPATHTMAKEDIR/LIB/LINUXGEXPORTQTDIR
35、QT2DIREXPORTPATHQTDIR/BINPATHEXPORTLD_LIBRARY_PATHQTDIR/LIBLD_LIBRARY_PATH/CONFIGURENOXFTMAKECPARFBIN/UICQTEDIR/BIN/2编译QVFBEXPORTTMAKEPATHTMAKEDIR/LIB/LINUXGEXPORTQTDIRQT2DIREXPORTPATHQTDIR/BINPATHEXPORTLD_LIBRARY_PATHQTDIR/LIBLD_LIBRARY_PATHCDQTEDIR/TOOLS/QVFB/ROOT/2410SQT/TMAKE113/BIN/TMAKEOMAKEFI
36、LEQVFBPROMAKEMVQVFBQTEDIR/BIN/173编译QT/EMBEDDEDCDQTEDIREXPORTTMAKEPATHTMAKEDIR/LIB/QWS/LINUXX86GEXPORTQTDIRQTEDIREXPORTPATHQTDIR/BINPATHEXPORTLD_LIBRARY_PATHQTDIR/LIBLD_LIBRARY_PATH/CONFIGURENOXFTQVFBDEPTHS4,8,16,32MAKE开始几次编译时,对整个编译过程还不了解,在设置环境变量时容易漏掉“”符号或是拼写错误,而且担心MAKE失败后,中间生成的文件会对下一次MAKE产生影响。几天时间后,
37、编译了近十次才完全编译成功。其中编译QVFB时,在输入MAKE指令后,提示“NOTHINGTOBEDONEFORALL”,查找资料后知道要在MAKE前先执行MAKECLEAN命令,以清除上次编译产生的中间文件。当编译全部通过后,就可以在QVFB上来检测自己编写的应用程序,其步骤如下1生成工程文件PRO每一个QT程序都对应着一个工程文件,因为TMAKE工具要借此工程生成相应的MAKEFILE文件。生成工程文件需要使用PROGEN工具,它的位置在TMAKEDIR/BIN下,使用PROGEN生成工程文件的方法如下TMAKEDIR/BIN/PROGENTAPPTOHELLOPRO2生成MAKEFILE
38、文件QT提供了生成MAKEFILE文件的工具TMAKE,这极大地方便了应用程序的开发,节省了大量的时间,而且还可根据不同平台的需要生成适合于不同平台的MAKEFILE文件。在命令行中输入如下命令TMAKEDIR/BIN/TMAKEOMAKEFILEHELLOPRO完成上面的步骤以后就可以在当前的目录中生成一个MAKEFILE文件,之后在命令行中输入MAKE命令就可以对整个程序进行编译链接了。最终可以生成一个二进制的可执行文件,其在QVFB中的显示结果如图44所示。18图44HELLOQT/EMBEDDED在QVFB中的显示结果43QTDESIGNER的使用QTDESIGNER是一个GUI工具,
39、它可以帮助我们来加快编写QT应用程序的速度。利用QTDESIGNER可以用一种所见既所得的方式来生成QT程序GUI图形界面的程序源码,并且只需要手工编写一个MAIN函数就可以进行编译了。利用QTDESIGNER可以非常快速的学会QT,但是在编写大型应用程序时并不使用QTDESIGNER,这是因为QTDESIGNER所产生的程序源码有些繁琐,运行起来也比较慢,因此,只是借助QTDESIGNER来更好的理解和学习QT,不是直接去运行QTDESIGNER生成的程序源码。QT应用程序的完成包括以下几个步骤1创建和初始化子部件2设置子部件的布局3设置TAB键的次序4建立信号与插槽的连接将部件布置好后,就
40、可以根据我们的需要来建立连接,QT开创性的使用了信号与插槽机制,与传统的回调函数方式不同,它是一种灵活、类型安全、快速、完全面向对象的C机制。使用传统的回调函数机制来关联某段代码和和一个按键,需要有一个指向函数的指针,并且将这个指针地址传给按钮。当这个按钮被按下,这个函数就会被执行。以前的工具包不能保证函数被执行时所传递的类型是正确的,这使得进程很容易崩溃。另一个问题是,这种回调方法紧紧得绑定了19GUI得基本功能元素,使得很难进行独立的分类开发。QT的信号与插槽机制则不同,QT部件(WIDGETS)事件发生时发出信号,如一个按钮被点击时会发出一个“CLICKED”信号。程序员可以选择建立一个
41、函数(称为插槽)并调用CONNECT来将这个信号与插槽连接起来。用户在编程时可以将两个对象捆绑在一起而不需要知道每个对象的各自的信息,而且可以自己创建信号与插槽,发射自己的信号等等。QTDESIGNER最终生成的文件为UI文件,之后用QT提供的UIC工具可以生成H文件和CPP文件。但只有这两个文件程序还是不能运行的,还需要一个MAINCPP文件才能进行编译链接。到这一步编译出来的QT应用程序只能在宿主机上运行,若要移植到开发板上还要对QT/EMBEDDED重新编译。其编译步骤与前面编译宿主机上的QT/EMBEDDED类似,唯一不同的是编译器的设置EXPORTTMAKEPATHTMAKEDIR/
42、LIB/QWS/LINUXARMG,即将平台由LINUXX86G改为LINUXARMG。44QTOPIA虚拟平台建立QTOPIA是TROLLTECH公司为采用嵌入式LINUX系统的移动计算设备和手持设备而开发的综合应用平台,包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。它是基于QT/EMBEDDED编写的应用程序环境,也是开放源码的一套应用程序包和开发库。使用QT/EMBEDDED不仅可以开发QTOPIA也可以用来开发面向QTOPIA的第三方软件。它包括三个版本QTOPIA手机版QTOPIAPDA版和QTOPIA消费电子产品平台。QTOPIA虚拟平台由文件TMA
43、KE113TARGZ、QTOPIAFREESOURCE211TARGZ、QTEMBEDDED2310TARGZ和QTX11232TARGZ组成。其编译方法和前面建立QT桌面运行环境时的方法类似,不过前面解压出来的文件在这里不可以直接使用,必须重新解压。这里多出了LIBQTE库文件和QTOPIA的编译。其中在编译QTOPIA时容易出现错误,主要是说QTOIPA的运行需要JPEG的支持,提示前面在编译LIGQTE库文件时没有CONFIGURE上SYSTEMJPEG,因此需要重新编译LIBQTE,在CONFIGURE时加上SYSTEMJPEG。在宿主机上编译成功的QTOPIA平台如图45所示。20图
44、45宿主机上的虚拟QTOPIA平台45QTOPIA的移植将QTOPIA211移植到在S3C2410处理器上,其编译方法和建立本机QTOPIA平台类似,不过加上了E2FSPROGSLIBS137、JPEG6B和TSLIB三个工具包,QTOPIA分别用到它们中的LIBUUID、JPEG和TSLIB库文件。在编译完后通过NFS将文件下载到/MNT/YAFFS目录下,同时还要复制几个库文件到开发板上。但是在调试过程中遇到了问题实验文档上给出的是将SRC/QTOPIASH下载到目标机的/USR/BIN目录下将SRC/E2FSINSTALL/LIB/LIBUUIDSO下载到目标机的/LIB目录下将SRC/
45、JPEGINSTALL/LIB/LIBJPEGSO下载到目标机的/LIB目录下通过NFS将开发板挂载到宿主机后,依次执行CP/ROOT/SHARE/QTOPIASH/USR/BINCP/ROOT/SHARE/LIBUUIDSO/LIBCP/ROOT/SHARE/LIBJPEGSO/LIB终端上总提示错误21CPUNABLETOOPEN/LIB/LIBUUIDSOOPERATIONNOTPERMITTEDCPUNABLETOOPEN/LIB/LIBJPEGSOOPERATIONNOTPERMITTEDCPUNABLETOOPEN/USR/BIN/QTOPIASHPERMISSIONDENIED起
46、初认为是CP的参数设置错误,可将CP的每个参数都试了仍然提示上面的错误。后来查了嵌入式文件系统的资料,知道YAFFS文件系统的属性是可读、可写、可修改的。而根文件系统是只读的,/LIB和/USR/BIN都是属于根文件系统,所以文件无法复制。后来发现是实验文档书写有误,应该把文件都复制到YAFFS文件系统下将SRC/QTOPIASH下载到开发板的/MNT/YAFFS/QTOPIA目录下将SRC/E2FSINSTALL/LIB/LIBUUIDSO下载到开发板的/MNT/YAFFS/LIB目录下将SRC/JPEGINSTALL/LIB/LIBJPEGSO下载到开发板的/MNT/YAFFS/LIB目录
47、下经过改正,最终调试通过,解决了系统的问题。225触摸屏图形操作界面的实现51LINUX设备驱动程序511设备驱动程序分类LINUX中的驱动程序设计是嵌入式LINUX开发中十分重要的部分,驱动程序是应用程序与硬件之间的一个中间软件层。目前LINUX支持的设备驱动可分为三种字符设备(CHARACTERDEVICE)、块设备(BLOCKDEIVCE)和网络接口设备(NETWORKINTERFACE)。1字符设备所有能够像字节流一样访问的设备比如文件等在LINUX中都通过字符设备驱动程序来实现。在LINUX中它们也被映射为文件系统的一个节点,常放置在/DEV目录下。字符设备驱动程序一般要包含OPEN
48、,CLOSE,READ,WRITE等几个系统调用。2块设备LINUX的块设备通常是指诸如磁盘,内存,FLASH等可以容纳文件系统的存储设备。与字符设备类似,块设备也是通过文件系统来进行访问,它们之间的区别仅仅在于内核内部管理数据的方式不同。它也允许像字符设备一样的访问,可以一次传递任意多的字节。3网络接口设备网络接口设备是LINUX中比较复杂的一种设备,通常它们指的是硬件设备,但有时也可是一个软件设备(如回环接口LOOPBACK)。它们由内核中网络子系统驱动,负责发送和接收数据包。它们的数据传送往往并不是面向流的(少数如TELNET,FTP等是面向流的),所以不容易把它们映射到一个文件系统的节
49、点上。在LINUX中采用给网络接口设备分配一个唯一名字的方法来访问该设备13。512LINUX设备驱动程序的构成应用程序一般有一个MAIN函数,从头到尾执行一个任务;驱动程序却不同,它没有MAIN函数,通过使用宏MODULE_INIT初始化函数名将初始化函数加入内核全局初始化函数列表中,在内核初始化时执行驱动的初始化函数,从而完成驱动的初始化和注册,之后驱动便停止等待被应用软件调用。驱动程序中有一个宏MOUDULE_EXIT退出处理函数名注册退出处理函数。它在驱动退出时被调用。应23用程序可以和GLIBC库连接,可以包含标准的头文件,比如,在驱动程序中是不能使用标准C库的,包含的头文件只能是内核的头文件。内核需要一对称作主次设备号的参数,才能唯一标识一个设备。主设备号相同的设备使用相同的驱动程序,次设备号用于区分具体设备的实例。设备操作宏MAJOR和MINOR可分别用于获取主次设备号设备类型、主次设备号是内核与设备驱动程序通信时所使用的,但是对于开发应用程序的用户来说比较难于理解和记忆,所以LINUX使用了设备文件的概念来统一对设备的访问接口,在引入设备文件系统DEVFS之前LINUX将设备文件放在/DEV目录下,设备的命名一般为设备文件名加上数字或字母表示的子类。在LINUX24内核中引入了设备文件系统DEVFS,所有的设备文件作为
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。