版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、hefei university 毕业论文(设计)bachelor dissertation论文题目: 基于s3c2440的qt移植与编程实现 学位类别: 工 学 学 士 学科专业: 自 动 化 完成时间: 2012年5月 基于s3c2440的qt移植与编程实现中 文 摘 要随着计算机技术和信息网络技术的飞速发展,嵌入式系统的应用越来越广泛,而嵌入式产品以其小巧、使用方便、实用等特点越来越受到人们的青睐。特别是近几年来,嵌入式产品越来越多的被应用于各个领域,如国防、工业控制、通信、办公自动化和消费电子领域等。图形用户界面是嵌入式系统软件开发的重要内容,基于linux内核开发实用、高效、美观的g
2、ui是目前研究的一个重要课题。本课题研究了基于linux的典型嵌入式图形界面支持系统qt,基于嵌入式linux操作系统和s3c2440硬件平台,完成qt开发环境搭建和qt相关平台移植,最后完成应用程序编程实例实现,并将应用程序成功移植到gt2440开发板上,测试结果证实该程序运行稳定,性能良好。关键词:嵌入式系统;qt;嵌入式linux;s3c2440transplantation and programming of qt based on s3c2440abstractthis paper introduces the qt / embedded linux embedded system
3、 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 ver
4、sion of qt. it inherits the qts 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, power
5、ful 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,
6、have been widely used.key word: embedded ;transplant and program; qt/embedded; linux;s3c2440第一章前言41.1 嵌入式系统概述41.2 图形开发71.3 本文章节安排8第二章 qt编程环境92.1 qt概述92.2 qt开发环境搭建92.2.1 安装qt对系统的要求102.2.2 qt开发环境及工具102.2.3 qt-embedded-linux安装102.2.4 嵌入式linux中qt环境变量112.2.5 qt/x11安装122.2.6 qt/embedded安装122.3 qt在嵌入式linux
7、的应用132.3.1 在嵌入式linux上运行qt程序132.3.2 嵌入式linux qt显示管理142.3.3 输入设备键盘和鼠标的设置于管理15第三章 qt应用程序开发实例173.1 软硬件平台173.1.1 硬件平台173.1.2 软件平台183.2 qt开发流程193.3 应用程序实现20第四章 总结25参考文献26致谢27第一章 前言1.1 嵌入式系统概述嵌入式系统的出现最初是基于单片机的。70年代单片机的出现,使得汽车、家电、工业机器、通信装置以及成千上万种产品可以通过内嵌电子装置来获得更佳的使用性能:更容易使用、更快、更便宜。这些装置已经初步具备了嵌入式的应用特点,但是这时的应
8、用只是使用8位的芯片,执行一些单线程的程序,还谈不上“系统”的概念。从80年代早期开始,嵌入式系统的程序员开始用商业级的“操作系统”编写嵌入式应用软件,这使得可以获取更短的开发周期,更低的开发资金和更高的开发效率,“嵌入式系统”真正出现了。确切点说,这个时候的操作系统是一个实时核,这个实时核包含了许多传统操作系统的特征,包括任务管理、任务间通讯、同步与相互排斥、中断支持、内存管理等功能。嵌入式系统的分类如下:(1) 嵌入式系统的硬件从硬件方面来讲,嵌入式系统的核心部件是嵌入式处理器。据不完全统计,全世界嵌入式处理器的品种数量已经超过1000多种,流行体系结构有30多个,其中8051体系占大多数
9、。生产8051单片机的半导体厂家有20多个,共350多种衍生产品,仅philips就有近100种。目前嵌入式处理器的寻址空间可以从64kb到256mb,处理速度从0.1mips到2000mips。 近年来嵌入式微处理器的主要发展方向是小体积、高性能、低功耗。专业分工也越来越明显,出现了专业的ip(intellectual property core,知识产权核)供应商,如arm、mips等,他们通过提供优质、高性能的嵌入式微处理器内核,由各个半导体厂商生产面向各个应用领域的芯片。 一般可以将嵌入式处理器分成4类,即嵌入式微处理器(micro processor unit,mpu)、嵌入式微控制
10、器(micro controller unit,mcu单片机)、嵌入式dsp处理器(digital signal processor,dsp)和嵌入式片上系统(system on chip,soc)。 (2) 嵌入式系统的软件 嵌入式系统的软件一般由嵌入式操作系统和应用软件组成。操作系统是连接计算机硬件与应用程序的系统程序。嵌入式系统的特点:1) 系统内核小由于嵌入式系统一般是应用于小型电子装置,系统资源相对有限,所以内核较之传统的操作系统要小得多。比如enea公司的ose分布式系统,内核只有5kb而windows的内核则要大得多。 2) 专用性强 嵌入式系统的个性化很强,其中的软件系统和硬件
11、的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时,针对不同的任务,往往需要对系统进行较大更改;程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念。 3) 系统精简 嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能的 设计及实现过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。 4) 高实时性 高实时性的操作系统软件是嵌入式软件的基本要求。而且软件要求固化存储,以提高速度。软件代码要求高质量和高可靠性。 5)多任务的操作系统 嵌入式软件开发要想走向标准化,就必须使用多任务
12、的操作系统。嵌入式系统的应用程序可以没有操作系统而直接在芯片上运行;但是为了合理地调度多任务,利用系统资源、系统函数以及专家库函数接口,用户必须自行选配rtos(real time operating system)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。 6)专门的开发工具和环境 嵌入式系统开发需要专门的开发工具和环境。由于嵌入式系统本身不具备自主开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行修改,因此必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主
13、机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。1.2 嵌入式系统图形用户界面现状由于受到硬件条件等的限制,现在许多嵌入式设备的用户界面仍然非常简单。看习惯了pc机上华丽美观的用户界面,总希望在这些设备上也能得到同样美的享受。随着嵌入式设备的硬件条件提高,对于嵌入式系统中轻量级图形用户界面的需求也越来越迫切。这些系统一般不希望建立在庞大累赘的、非常消耗资源的操作系统和图形用户界面之上,比如windows。同时,嵌入式系统对图形用户界面轻量型和可定制方面有较高的要求,它们希望图形用户界面占用资源少、性能高、可靠性高、易移植、可配置。本论文的选题正是结合lin
14、ux操作系统和嵌入式系统研究这两个热点领域,选择适合于嵌入式特点的图形用户界面qt来进行应用程序开发。1.3 本文章节安排论文的结构安排如下:第一章,前沿,分析并阐述了本课题研究背景及意义。第二章,qt编程环境,首先介绍了qt的概述, qt环境的搭建以及要求。第三,qt应用程序开发实例,介绍了qt应用程序开发所涉及的软、硬件平台,完成应用程序实例,并移植到gt2440开发板。第四章,总结,对已完成的工作进行了简要总结,并指出了其中的不足,并对今后的做了展望。第二章 qt编程环境2.1 qt概述qt是一个跨平台的 c+ 图形用户界面库,由挪威 trolltech 公司于1995年底出品。trol
15、ltech 公司在 1994 年成立,但是在 1992 年,成立 trolltech 公司的那批程序员 就已经开始设计 qt 了,qt 的第一个商业版本于 1995 年推出。2008年1月31日,nokia公司宣布通过公开竞购的方式收购trolltech公司,旗下包括qt在内的技术都归入nokia旗下。并且nokia针对自己的移动设备平台规划的需要,将qt按不同的版本发行。qt 的良好封装机制使得 qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简
16、单。qt包括多达250个以上的 c+ 类,还提供基于模板的 collections, serialization, file, i/o device, directory management, date/time 类。还包括下列功能:(1)支持 2d/3d 图形渲染,支持 opengl 大量的开发文档; (2)xml 支持; (3)webkit 引擎的集成,可以实现本地界面与web内容的无缝集成。2.2 qt开发环境搭建qt/embedded是基于qt的嵌入式gui和应用程序开发的工具包,它可运行多种嵌入式设备上,主要运行在嵌入式linux系统上,并且需要c编译器的支持,并为嵌入式应用程序提
17、供qt的标准api。 qt/embedded 的api是基于面向对象技术的。在应用程序开发上使用与qt相同的工具包,只需在目标嵌入式平台上重新编译即可。使用所熟悉的桌面开发工具,来编写和保存一个嵌入式应用程序的源代码树,在移植到多种嵌入式平台时,只需要重新编译代码。 qt/embedded提供自身的轻量级窗口系统,比使用xlib和x window更加紧凑; qt/embedded 的设计原则是不依赖于x server或者xlib,而是直接访问帧缓存,同其他解决方案如qt/x11相比这样做最显著的效果是减少了内存消耗。只需要一个qt/embedded动态链接库就足以替代x server、xlib
18、库和其他嵌入式解决方案的图形工具包2.2.1 安装qt对系统的要求安装qt的过程在不同的平台上会有所不同,主要在嵌入式linux平台上安装。若需要提供对openssl的支持,需要通过单独安装openssl toolkit,来获得secure sockets layer (ssl)。对于不同的平台上,会有不同的要求。如果要在qt上对qtwebkit模块的支持,必须使用uclibc 0.9.29或者更高的版本,以对pthread的支持。在内存方面的要求主要取决于体系架构以及在编译过程中使能的qt选项。2.2.2 qt开发环境及工具qt/embedded的应用程序也可以使用标准工具在用户熟悉的环境下
19、的工具开发,如window平台下的visual c和borland c builder,unix平台下的kdevelop等。在unix平台下编译qt/embedded应用程序,可以在独立的控制台模式,也可以用x11应 用程序虚拟的帧缓存。通过指定目标设备的长、宽和色深,虚拟帧缓存可以点对点的模拟物理设备,免除了调试过程中反复擦写闪存,加快了编译、链接、运行的环节。qt/embedded提供许多支持嵌入式开发的工具,其中两个非常重要的qt工具qmake和qt designer。qmake可以为qt/embedded链接库和应用程序生成makefile文件。qmake可以从项目文件(.pro)为多
20、种平台 生成makefile文件,通过不同设置可以使应用程序方便的在多种平台间移植。qt designer可以使用可视化的方式设计对话框、窗口的,替代了设计代码手工编写。在qt designer中还可以使用布局管理器来平滑的设置窗口部件的布局,使用代码编写器编写代码,并且整合了qmake。2.2.3 qt-embedded-linux安装(1)下载源码包,解压;qt news:qt downloads:qt quarterly:qt bugs:qt supported platforms:qt version changes :qt books: (2)建立支持库 通过./configure来
21、设置,主要配置可以通过-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 expo
22、rt path(4)建立虚拟的frambuffer。 建立虚拟的frambuffer,需要安装x11 platforms。2.2.4 嵌入式linux中qt环境变量qt环境变量如下:pointercal_file:指定文件包含的数据,用来校准触摸笔设备。同时可以参考qwscalibratedmousehandler and qt for embedded linux pointer handling.qt_onscreen_paint:如果定义了的话,可以用来将控件显示在屏幕上。如果没有其他控件在同一个区域的话,该设备响应的区域将不会随着屏幕设备驱动的改变而改变。设置这个环境变量相当于在控件中
23、应用程序中设置qt:wa_paintonscreen。qws_sw_cursor:如果定义了的话,软件鼠标的光标将一直是可用的。(即使使用硬件加速驱动器来支持硬件光标)qws_display:指定显示形式和framebuffer.例如:export qws_display=:.:qws_size:指定嵌入式linux qt窗口在屏幕上的大小。export qws_size=xqws_mouse_proto: xport qws_mouse_proto=:,参数可以是mouseman, intellimouse, microsoft, vr41xx, linuxtp, yopy. tslib a
24、nd keys。/dev/mouse 指的是鼠标设备, /dev/ts for touch panels。qws_keyboard为输入设备指定输入设备和驱动。比如:export qws_keyboard=:。参数可以是sl5000, yopy, vr41xx, tty, usb and keys,指定的是一个标准设备。2.2.5 qt/x11安装 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 /设置环境变量,在编译的
25、时候要用到#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 install2.2.6 qt/embedded安装编译并安装qt/embedded主要是为了生成基于arm内核的qt/e库文件,将这些库文件移植到arm平台中就可以运行通过qt开发出来的gui程序了,下面列出其安
26、装步骤:#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中,因为在编译的时候要用到。#cp /usr/include/jpeglib.h $qtdir/include/#cp /usr/include/j
27、config.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 -q
28、vfb -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.3 qt在嵌入式linux的应用qt在嵌入式linux中应用需要完成这几个方面:字体库移植,设置环境变量以及framebuffer的支持。字体库的支持:是在qt的/lib/fonts目录下。由于程序运行的时候是到这个文件夹下面来调用,因此需要将字体库复制到这个目录下。 环境变量的设置:通常情况下,与默认的环境变
29、量不同,因此需要设置的有qws_mouse_proto, qws_keyboard 以及 qws_display,用来指定鼠标、键盘以及显示设备管理。在./configure 的时候需要加入的选项是-qt-kbd- and -qt-mouse- ,这样才能使能这些设备驱动。但是还需要指定一个具体的设备,因此需要通过设置环境变量来完成。framebuffer的支持:没有特殊需求的情况下,要求在目标设备上使能framebuffer。linux framebuffer在标准设置情况下是使能的。2.3.1 在嵌入式linux上运行qt程序任何嵌入式linux应用程序可以通过构建qapplication
30、 对象qapplication:guiserver的格式,被构建为服务server application。或者通过qws命令行选项的方式。本文当假设用the virtual framebuffer 或者嵌入式linux的vnc协议,或者正确配置的linux framebuffer。而且没有服务进程在运行。可以使用的显示方式有:using a single display 单显示,运行这种显示方式,改变linux console,而且选择一个应用来运行。它要求在安装过程中,环境变量是可用的。它要求指定的硬件设备驱动必须工作正常。比如: cd path/to/qtembedded/demos/t
31、extedit ./textedit -qws * using multiple displays linux同时也是支持多设备显示。有两种方式可以完成。当在运行多服务程序的时候,显示屏的驱动(以及数量)必须为每一个程序进行指定。用display命令行或者qws_display 来指定。比如: ./myfirstserverapplication -qws -display transformed:rot90:1 ./mysecondserverapplication -qws -display qvfb:2需要注意的是,必须指定一个显示设备,在开始客户端程序的时候。比如:./myclient
32、application -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.3.2 嵌入式linux qt显示管理当需要显示的时候,默认的动
33、作是每一个嵌入式linux的客户端将需要的显示的色调存放在内存中,然后服务端将相关的数据从内存在中送到显示屏上。服务端用显示屏驱动copy内存中的内容到显示屏上显示。显示屏的驱动是在服务端应用加载的时候运行的,用的是qt的插件系统。常用的方式有:可用的驱动;指定一个驱动;子驱动和多驱动。 available drivers可用的驱动嵌入式linux的qt提供的驱动有linux framebuffer, the virtual framebuffer, transformed screens, vnc servers and multi screens.通过运行./configure 选项来列出
34、可用的驱动。默认的配置是不加速的linux framebuffer driver (/dev/fb0) 被打开。其他的设备驱动也可以使能或者禁止,通过以下命令行。例如:./configure -qt-gfx-transformed specifying a driver指定一个驱动 通过设置环境变量qws_display来指定一个设备。比如:格式如下的: export qws_display=:. : 可以用的参数有:linuxfb, qvfb, vnc, transformed, multi and keys identifying custom drivers。参数的被用来分辨用相同驱动的
35、屏幕,而且使能多显示。如下的表格用来指定驱动。环境变量的qws_display也可以通过-display来设置。比如: myapplication -display :. : subdrivers and multiple drivers子驱动和多驱动 vnc, transformed 和multi screen drivers取决于子驱动。通用的语法是: export qws_display=:. :至于子驱动,在每个子驱动之间加上空间是很重要的,在显示设备前加上用来分开各个驱动和显示设备。注意的是多屏幕驱动可以拥有多个子设备驱动,比如: export qws_display=multi:
36、qvfb:0 qvfb:offset=640,0:1 :2注意的是:vnc screen driver在没有指定屏幕驱动的情况下,默认的是虚拟屏幕驱动。在这种情况下,vnc driver有一些额外的参数来指定大小的位宽,参数有: * size= * depth= * mmheight=* mmwidth= 。例如:export qws_display=vnc:size=720x480:depth=32。例如运行vnc屏幕驱动在linux framebuffer driver的情况下,则export qws_display=vnc:linuxfb2.3.3 输入设备键盘和鼠标的设置于管理当运行一
37、个qt for embedded linux应用程序的时候,不管是作为一个服务还是连接到另一个服务,当它开始运行的时候,鼠标驱动被服务的应用加载,用qt的plugin system。 在配置qt的时候通过选项来选择支持的鼠标以及键盘设备,同时测试可用的设备。通过 ./configure -help 查看可用的设备,配置时候默认的是pc的鼠标驱动。如果是自己添加一个设备,比如触摸屏,则需要创建一个qwscalibratedmousehandler subclass来完成校验功能。若提供的pc的鼠标被使能,qt for embedded linux将会自动探测所支持的一种鼠标设备,这个设备是在/d
38、ev/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。多鼠标可以用下列方式来指
39、定。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
40、的环境变量中指出来。tslib 的源码可以在http:/tslib.berlios.de. 下载。通过l 和i 来指定库和头文件的位置。比如: ./configure -l -i 。 为了保证能够使用鼠标,tslib必须正确的安装在目标机上。包括提供一个ts.conf 配置文件和设置必要的环境变量。ts.conf包括两行:内容是: module_raw inputmodule linear在make qt for embedded linux 时候特别指定tslib 鼠句柄,设置环境变量qws_mouse_proto 。可能出现问题的地方是设备文件和文件权限两个方面。为了保证能够正确的使用设备
41、文件,第一步,先测试一下设备文件是否有输出。比如:如果指定的鼠标设备驱动是: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。如果设备
42、文件符号连接到另一个文件的话,必须改变相关文件的属性。第三章 qt应用程序开发实例3.1 软硬件平台3.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 dca
43、che/mmu微处理器外部存储控制器(sdram)控制和片选逻辑lcd控制器提供1通道lcd专用dma4通道dma并有外部请求引脚3通道uart2通道spi1通道iis-bus接口1通道iis-bus音频编解码器接口ac97解码器接口兼容sd主接口协议1.0版和mmc卡协议2.11兼容版2端口usb主机、1端口usb设备4通道pwm定时器和1通道内部定时器/看门狗定时器8通道10比特adc和触摸屏接门具有日历功能的rtc相机接口130个通用i/o口和24通道外部中断源具有普通,慢速,空闲和掉电模式具有pll片上时钟发生器3.1.2 软件平台 嵌入式软件开发不同于一般的软件开发,绝大多数的lin
44、ux软件开发都是以本机方式进行的,即本机开发、调试,本机运行的方式。这种方式通常不适合嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机中运行开发工具盒调试工具。通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。交叉编译的开发和调试环境建立在宿主机上,对应的开发板叫做目标板。开发时使用宿主机上的交叉编译、汇编及链接工具形成可执行的二进制代码,然后把可执行文件下载到目标板上运行。1bootloader引导程序移植bootloader引导程序是嵌入式开发很重要的组成部分,它是嵌入式系统上电后执行的第一个程序,并由它最终将操作系统启动起来并将控制权交给操作系统。bootload
45、er引导程序最基本的功能有对硬件系统的初始化、内核启动参数设置和启动内核。bootloader的主要功能有:(1)初始化cpu运行的时钟频率。(2)初始化flash和内存的数据宽度、读/写访问周期和刷新周期。(3)初始化中断系统。(4)初始化系统中各种运行模式下的寄存器和堆栈。(5)初始化系统各种内片外设备和i/o端口。(6)加载和引导操作系统,为用户提供一个命令接。2.根文件系统根文件系统是linux系统引导启动时默认使用的文件系统。文件系统是linux操作系统的核心组成部分之一,用于文件盒目录的组织,其中包括了linux程序、函数库、用户文件盒设备文件等,同时作为存储数据读写结果的区域。在
46、嵌入式系统中,硬件初始化和内核启动完成之后将执行挂载文件系统的操作。3.2 qt开发流程嵌入式硬件平台的确定pc上搭建qt/embedded开发环境交叉编译qt/embedded库并进行目标版的移植pc上进行qte应用程序的开发交叉编译应用程序在目标平台上进行调试程序运行是否正常发布应用程序过程中我们采取了宿主机和目标板的开发模式。宿主机是一台运行linux 的pc 机,目标板即hybus开发板。先在宿主机上调试通过后,再移植到目标板上。qt/embedded直接写入帧缓冲,在宿主机上则是通过qvfb(vitural framebuffer)来模拟帧缓冲。qvfb是x窗口用来运行和测试qtop
47、ia应用程序的系统程序,允许我们在桌面及其上开发qt嵌入式程序,而不需要在命令台和x11之间来回切换。qvfb使用了共享存储区域(虚拟的帧缓冲)来模拟帧缓冲并且在一个窗口中(qvfb)模拟一个应用来显示帧缓冲,显示的区域被周期性的改变和更新。通过指定显示设备的宽度和颜色深度,虚拟出来的缓冲帧和物理的显示设备在每个像素上保持一致。这样我们在每次调试应用时不需要总是刷新嵌入式设备的flash存储空间,从而加速了应用的编译、连接和运行周期。应用程序的移植将编译好的可执行文件下载到目标板上,目前有四种方式:(1) 通过网络传送文件到开发板(2) 复制到介质(如u盘)(3) 通过串口传送文件到开发板(4
48、) 通过nfs(网络文件系统)直接运行3.3 应用程序实现针对目标板编译应用程序与编译可在宿主机上执行的应用程序类似,只需将编译参数作一定的修改,就可让程序在开发板上运行。安装qt/embedded时,配置参数-xplatform linux-arm-g+表示在arm平台上进行交叉编译。(1) 设置环境变量在根文件系统中已经加入了qt的安装包和qt程序需要链接的库文件,环境变量的设置命令如下:export qtdir=/opt/qt/(2) 使鼠标、键盘工作鼠标设备接口这一基类qwsmousehandler 的实现位于/src/kernel/qmouse文件中;键盘的驱动程序位于/src/ke
49、rnel/qkeyboard-qws.cpp中,键盘类设备接口的基类为qwsmousehandler.为了鼠标、键盘正常工作,使用如下的命令配置:export qws-keyboard=usb:/dev/input/event1export qws-mouse-port =usb:/dev/input/mouse0(3) 程序执行结果分析分别右击三个按钮,点击 go to slot,在 mainwindow 中产生三个槽函数: void mainwindow:on_start_clicked() void mainwindow:on_stop_clicked() void mainwindow
50、: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_sta
51、rt_b_clicked() /这是我定义的一个按钮当按下这个按钮时执行下面的操作 /如果定时器没启动 if (!m_timer.isactive() m_timer.start(1000); /开启定时器 1s this-connect(&m_timer,signal(timeout(),this,slot(timeout(); /计时到达,进入 timeout(), timeout()内容: void mainwindow:timeout() ui-view-settext(tr(retarry()内容:int mainwindow:retarry()int a70= 0,1,2,3,4,
52、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 ai; /定义 70 个数,每次返回一个值 其中,i 在最上面定义:int i; 由于使用到上面的一些函数,需要先声明。 在 mainwindow.h 中添加: protected: void on_start_b_clicked(); int retarry(); private slots: void timeout(); 到这里可以完成点击启动:在 view 中显示不同的数,下面添加停止和清除功能。 void mainwindow:on_stop_clicked() if (m_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年实习合同标准
- 广州市二手房买卖合同标准版
- 广告2026年广告合同范文
- 技术服务 技术许可与转让合同
- 甲状腺手术疼痛护理
- 膀胱癌护理案例分析
- 肺癌手术治疗方法
- 统编版四年级上册语文第八单元 习作我的心儿怦怦跳公开课一等奖创新教学设计
- 第19课 大雁归来 第2课时 公开课一等奖创新教学设计-【课堂无忧】新课标同步核心素养课堂
- 焊工工艺培训课件
- 2022年黑龙江哈尔滨中考满分作文《这也是收获》2
- 第四次全国文物普查工作推进情况汇报3篇
- 2024-2025学年新教材高中地理 第四章 地貌 第二节 地貌的观察教案(2)新人教版必修1
- 《江城子·乙卯正月二十日夜记梦》课件 -2024-2025学年统编版高中语文选择性必修上册
- 新员工岗前安全培训考试题含完整答案【各地真题】
- 第四届“长城杯”网络安全大赛(高校组)初赛备赛试题库-上(单选题部分)
- 国开2024年秋季《形势与政策》大作业答案
- 2024年浙江省初中学业水平考试数学试题(潮汐卷)(解析版)
- 中职教育一年级上学期英语《We Are Friends》课件
- 专题10 议论文阅读(含答案) 2024年中考语文【热点-重点-难点】专练(上海专用)
- 21 小圣施威降大圣 公开课一等奖创新教案
评论
0/150
提交评论