Qt_Embedded在嵌入式Linux上的移植
- 格式:pdf
- 大小:94.68 KB
- 文档页数:3
QT4移植到FL2440开发板的详细过程(转载并加以修改)不知道是大家的系统环境不同还是网友们打错字了,我在网上找了不下十篇有关QT移植的文档。
文档大部分相同,但有一些不一样,但我全都试了,都有一些小问题!后来我一篇文档为主,其他文档为辅,对比错误,修改文档,得出这个适合我自己移植QT的完整版,这供大家参考!因为我的板子是飞凌的2440开发板。
网上关于qt4移植到飞凌2440的文章并不是很多,其中移植这部分我也走了很多弯路,遇到很多问题,但最后还是搞出来了,其实这过去也有快一个月了,那个时候也没时间写文章,但为了跟大家一同学习,今天特花了点时间把前面的经验写下来,希望能帮到各位,好了下面就开始我们的移植之旅吧!一、系统环境(蓝色是我的配置)宿主机:window xp sp3虚拟机linux centOS 或者fedora9,10linux编译器(交叉编译器):arm-linux-gcc 3.4.1开发板:飞凌2440--LCD 3.5寸系统linux-2.6.24(2.6.28也可以)2.6.12文件系统为yaffs系统所需软件包:arm-linux-gcc-3.4.1.tar.bz2 下载地址:/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2qt-embedded-linux-opensource-src-4.5.3.tar.gz下载地址大家到网上搜一下就出来了。
tslib-1.4.tar.gz(用于触摸验证)说明:说明一下这里为什么选择这些软件,首先fl2440板子需要编译器可以是2.95.3也可以使3.4.1这里我只是试了这两个,可能其他的也可以。
而qt/embeded则是我随便下了一个。
补充:这里为了说的完整些,我把qt的各版本也给大家说一下,关于Qt,Qt/E,Qtopia Core, Qtopia。
Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。
《基于QT-Embedded嵌入式数据采集系统》篇一基于QT-Embedded嵌入式数据采集系统一、引言随着科技的不断发展,嵌入式系统在各个领域的应用越来越广泛。
其中,基于QT/Embedded的嵌入式数据采集系统以其强大的功能、友好的界面以及高效的性能,受到了广泛关注。
本文将详细介绍基于QT/Embedded嵌入式数据采集系统的设计、实现及其应用,并探讨其高质量的实现方法和优势。
二、QT/Embedded嵌入式数据采集系统概述QT/Embedded是一种用于嵌入式系统的C++图形界面开发工具包,具有跨平台、高效率、易扩展等优点。
基于QT/Embedded 的嵌入式数据采集系统,可以实现对各种传感器数据的实时采集、传输、处理和存储。
系统采用模块化设计,具有良好的可扩展性和可维护性。
三、系统设计1. 硬件设计:系统硬件包括传感器、微处理器、存储器等部分。
传感器负责采集数据,微处理器对数据进行处理,存储器用于存储数据。
硬件设计应考虑到系统的实时性、稳定性和功耗等因素。
2. 软件设计:软件设计包括操作系统、QT/Embedded开发环境以及应用程序设计。
操作系统采用嵌入式Linux,QT/Embedded用于开发界面和应用程序,实现数据的采集、传输、处理和存储等功能。
四、系统实现1. 数据采集:系统通过传感器实时采集各种数据,如温度、湿度、压力等。
数据采集应具有高精度、实时性和可靠性。
2. 数据传输:采集到的数据通过串口、网络等方式传输到微处理器。
传输过程中应保证数据的完整性和安全性。
3. 数据处理:微处理器对接收到的数据进行处理,如滤波、标定、计算等。
处理后的数据可进行存储或通过QT/Embedded界面进行显示。
4. 数据存储:处理后的数据可存储在本地存储器或云端服务器中,以便后续分析和应用。
五、系统优势及应用1. 高质量界面:基于QT/Embedded的界面具有友好的用户交互体验,可实现数据的实时显示和监控。
终于正确安装QtEmbedded开发环境经历N多磨难后,终于成功安装上了 Qt/Embedded开发环境,其间由于一些概念的不了解以及一些步骤的错误操作,前前后后大概装了 3次,当然还有4,5次是测试一些配置选项以及命令的。
为了让刚开始学习Qt的人不再跟我一样犯同样的错误,花费许多不该花费的时间,我把自己的安装经历说一下,希望能对大家有利。
PC所用 Linux系统版本:Ubuntu8.04Qt/Embedded版本:qt- embedded-linux-opensource-src-4.4.3Qt/X11版本:qt-x11-opensource-src-4.4.3(这两个版本时目前最新的,且在官网上都有下载)整个安装过程,其实也就时几个指令的问题:------>解压缩Qt/Embedded, 指令tar zxvf qt- embedded-linux-opensource-src-4.4.3.tar.gz------>为以后方便观看,可将解压缩后的文件夹重命名为qte:mv qt- embedded-linux-opensource-src-4.4.3 qte------>进入qte文件夹,进行配置,我的指令是:./comfigure -prefix /opt/qte -qt-mouse-linuxup -qvfb(其中-qvfb是必须的,否则你编译完后发现自己的Qt/E连qvfb 调试器都不支持,白忙活一场,-prefix /opt/qte是指将最终编译得到的各种工具,如qvfb,qmke,designer等以及库都安装在指定路径/opt/qte,当然这个选项你也可以不写,如果你不写的话系统编译后会自动帮你创建一个/usr/local/trolltech/qt...目录,上面所说的文件就都安装在这个目录下了;但是如果你要安装在指定目录下的话,必须要先手动创建这么一个目录,如我这个就必须先在执行./configure命令之前先创建/opt/qte目录,否则会出错,又白忙活了。
移植QT5.6到嵌⼊式开发板(史上最详细的QT移植教程)⽬前⽹上的⼤多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更⽼的 Qtopia ,但是⽬前 Qt 已经发展到最新的 5.7 版本了,我个⼈也已经使⽤了很长⼀段时间的 qt5.6 for windows ,本⽂就来介绍⼀下QT在嵌⼊式环境的搭建。
移植以到 JZ2440 为例,使⽤韦⽼⼤提供的 ubuntu9.10 虚拟机作为移植环境。
当然,其它虚拟机也是可以的,我同样在 ubuntu14.04 移植成功,只不过需要额外装⼀些库,后⾯我会简单提及。
此外,我尝试使⽤ 4.3.2 版本的交叉编译⼯具编译 Qt5.6 ,编译过成功很多错误,编译成功之后使⽤ qt 编译应⽤程序时也存在问题,因此我是⽤的是友善提供的 4.4.3 版本的交叉编译⼯具。
建议新⼿使⽤与我相同的编译环境。
因为我们更换了编译⼯具,因此,我们有接下来的4个⼯作。
1、重新编译内核2、制作⽂件系统3、移植tslib4、移植qt⼀、更换交叉编译器⾸先,将下载好的⽂件全部放在 /work ⽬录下1、解压交叉编译器sudo tar zxvf arm-linux-gcc-4.4.3.tar.gz -C / #展开在根⽬录ls /opt/FriendlyARM/toolschain/4.4.3/bin #检查是否⽣成了编译⽬录2、设置环境变量sudo vi /etc/environment将现在原有的交叉编译器路径替换为我们新解压的交叉编译器,举例:1. #PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin"//注释2. PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/FriendlyARM/toolschain/4.4.3/bin" //增加后期测试时我发现这⾥是有问题的,由于我的安装⽬录都指定的是 usr ⽬录,需要 root 权限,然⽽在 environment 中设置的环境变量导致使⽤ root 权限 make install 过程中出现了个别的 command not found ,于是我将环境变量放到了 /etc/profile 中,这个⽂件是对所有⽤户⽣效的。
Qt/E 的嵌入式Linux GUI 研究与实现摘要:嵌入式GUI(Graphical User Interface 〉为嵌入式系统提供了一种应用于特殊场合的人机交互接口(Man-MachineInterface 〉。
由于嵌入式系统本身的硬件资源有限,要求嵌入式不同的硬件条件和使用需求。
本文首先介绍了嵌入式LinuxGUI 目前的发展状况及各自的特点,然后针对目前主流的嵌入式 Qt/Embedded ,阐述其图形引擎的实现。
最后,结合三星公司 具体平台上的实现和应用。
关键字:ARM9 Linux 交叉编译 嵌入式 GUI Qt Qt/Embedded Qtopia FrameBuffer Signals/SlotsResearch and Realization of Embedded Linux GUI based on Qt/EmbeddedTang Wei, Li Qiang(College of Computer Science, HangZhouDianZiUniversity, Hang Zhou, 310018, China>Abstract: The Embedded GUI(Graphical User Interface>provides a Man-Machine Interface used in special occasions for Embedded Systems. Since the embedded system itself limited hardware resources, whose requirements of embedded GUI is highly portable and can be cut of, so as to adapt to the conditions and use different hardware requirements. This article firstly introduces the current development of embedded Linux GUI and their own characteristics, and then for the current mainstream embedded GUI system--Qt/Embedded,described the realization of its graphics engine. What ' more, it Combined with Samsung S3C2410 development board, introduced the achieving and application on a specific platform for embedded GUI system .Keywords: ARM9 Linux Cross-Compiling Embedded GUI Qt Qt/Embedded Qtopia FrameBuffer Signal/Slots1引言由于嵌入式系统的特殊性,它一般不会建立在庞大的操作系统以及GUI 之上,女口 Windows 或XWindows,它对实时性的要求非常高,对GUI 的要求更高。
Qt/Embedded触摸屏的智能家居无线传输系统设计①李新春徐英华(辽宁工程技术大学电子信息与工程学院辽宁葫芦岛 125105)摘要:设计了一个基于Qt/Embedded触摸屏的智能家居控制平台,并通过zigbee组网的方式,实现家居的智能化控制。
首先,智能家居的界面用Qt/Embedded设计,然后,界面被移植到以ARM9为微处理器的控制平台上,并实现界面的触摸屏功能;最后,通过串口驱动将设计的具有触摸屏功能的界面与zigbee组网的协议连接起来,实现对智能家居控制的无线传输。
关键词:Qt/Embedded;ARM;zigbee;触摸屏;GUIDesign of Intelligence Home Wireless Transmission System Based on Qt / Embedded of Touch Screen LI Xin-Chun, XU Ying-Hua (Department of Electronic Information and Engineering, Liaoning EngineeringTechnology University, Huludao 125105, China)Abstract:This paper designs the intelligence home control platform based on Qt/Embedded of touch screen, realizing the intelligence control of home by way of zigbee networking. Interface designer of intelligence home usesQt/Embedded. At the same time, interface will be transplanted to the control platform for microprocessor ofARM9, and achieve the touch-screen features of interface. Finally, the paper connects the interface of atouch-screen features with zigbee networking through the serial port driver, to realize wireless transmissionabout the intelligence home.Keywords: Qt/Embedded; ARM; zigbee; touch screen; GUI1 引言随着生活质量的提高,家居智能化已经成为当今时代的一种主流。
收稿日期:2005-10-10作者简介:张方辉(1978-),男,山西人,硕士研究生,研究方向为嵌入式信息处理;王建群,教授,博士,研究方向为数据采集。
Q t/Embedded 在嵌入式Linux 上的移植张方辉,王建群(北京理工大学,北京100083)摘 要:嵌入式Linux 在手持信息设备领域的应用出现了一个强劲的发展势头。
手持设备的关键在于人机交互技术的体现,所以一个十分友好的图形用户界面(GU I )是必不可少的。
文中介绍了Qt/Embedded 在构建图形界面、实现事件响应等方面的优点,分析和介绍了Qt/Embedded 在嵌入式Linux 上的实现方案,并在此基础上给出了详细的的设计和实现。
它将成为未来嵌入式系统的主要GU I 。
关键词:嵌入式Linux ;Qt/Embedded ;图形用户界面中图分类号:TP311.54 文献标识码:A 文章编号:1673-629X (2006)07-0064-03T ransplantation of Q t/Embedded in Embedded LinuxZHAN G Fang 2hui ,WAN G Jian 2qun(Beijing University of Technology ,Beijing 100083,China )Abstract :Embedded Linux presents a driving impetus in handset domain.The key of handset is embodiment of people communicating with machine.So it is necessary to have a friendly graphic user interface.This paper introduces the excellent characteristics of Qt/Embedded in building Linux graphical user interface ,binding events and event processing ,analyzes a realization scheme of Qt/Embedded ,which aims at ensuring reliability and stability of embedded Linux.And a design and realization of the system are developed.It will becomes a cen tral GU I in intending embedded system.K ey w ords :embedded Linux ;Qt/Embedded ;GU I1 概 述嵌入式系统是以应用为中心,以计算机技术为基础且软硬件均可裁剪的专用计算机系统,嵌入式系统已广泛应用到工业控制领域,负责各种数据的处理和存储,并进行控制决策。
Linux 是一种类UN IX 的免费操作系统,该平台上的应用软件和程序开发工具已经很丰富。
Linux 操作系统具有稳定性高、源码完全公开等优点,因此把Lin 2ux 运用到工业控制领域,将大大提高控制系统的可靠性,并可以降低系统成本。
Qt/Embedded 是著名的Qt 库开发商Trolltech 公司开发的面向嵌入式系统的Qt 版本。
Qt/Embedded 是Server/Client 结构[1],延续了Qt 在X 上的强大功能,在底层摒弃了Xlib ,仅采用帧缓冲作为底层图形接口。
同时,将外部输入设备抽象为keyboard 和mouse 输入事件,底层接口支持键盘、GPM 鼠标、触摸屏以及用户自定义的设备等。
Qt/Embedded 类库完全采用C ++封装,提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。
Qt/Embedded 是完全面向对象的,很容易扩展,提供了丰富的窗口部件集,并且允许真正的组件编程。
库的稳定性和健壮性比较好。
它的类库接口完全兼容于同版本的Qt-X11,使用X 下的开发工具可以直接开发基于Qt/Em 2bedded 的应用程序QU I 界面。
Qt/Embedded 具有下列优点:优良的跨平台特性;面向对象;良好封装机制使得Qt/Embedded 的模块化程度非常高,可重用性较好;提供了一种称为信号/槽(signals/slots )的安全类型来替代回调函数,这使得各个元件之间的协同工作变得十分简单;丰富的API (应用程序接口);支持2D/3D 图形渲染,支持XML (可扩展标记语言)[1]。
Qt/Embedded 使系统获得高效的工作性能是它拥有一个重要机制———信号与槽机制。
信号和槽是一种高级接口,应用于对象之间的通信,是Q T 的核心特性,也是区别于其它工具包的地方。
信号和槽能携带任意数量和类型的参数,它们是类型完全安全的,不像回调函数那样会产生内核泄露。
信号和槽机制的实现机制主要分为两种方式。
(1)所有从QObject 或其子类派生的类都能够包含信号和槽。
当对象改变其状态时,信号就由该对象发射出去,接收方未知。
这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。
槽用于接收信号,但它们是普通的对象成员函数。
一个槽并不知道是否有任何信号与自己相连接。
可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,甚至将一第16卷 第7期2006年7月 计算机技术与发展COMPU TER TECHNOLO GY AND DEV ELOPMEN T Vol.16 No.7J ul. 2006个信号与另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。
(2)对于非QObject派生类,另有一套处理方法。
2 移 植现在介绍将Qt/Embedded在以Motorola MC9328 MX1为核心的硬件平台上的移植。
该系统采用CPU内部LCD控制器和320×240分辨率的16bpp TFT LCD作为显示设备,使用IO扩展出16按键的键盘,同时配置了9位A/D量化精度的电阻触摸屏作为鼠标类输入设备;同时移植了ARM Linux作为操作系统。
2.1 帧缓冲驱动程序帧缓冲是在Linux内核架构版本2.2以后推出的标准显示设备驱动接口。
采用mmap系统调用,可以将帧缓冲的显示缓存映射为可连续访问的一段内存指针。
帧缓冲驱动程序通常有3层。
最底层是基本控制台驱动程序,它提供了文本控制台常规接口的一部分。
通过使用控制台驱动程序函数,能将文本打印到屏幕上,但图形或动画还不能实现。
第2层驱动程序提供了视频模式中绘图的常规接口。
第3层驱动程序是特定于硬件的驱动程序。
帧缓冲驱动程序属于字符设备,对于硬件来说就是通过配置MC9328MX1的寄存器,在一段指定的内存与LCD之间建立一个自动传输的通道。
这样任何程序(包括Qt/ Embedded)只要修改这段内存中的数据,就可以改变LCD 上的显示内容。
驱动程序的实现分为两个方面[2]:(1)编写初始化函数,初始化LCD控制寄存器,设置显示模式和显示颜色数,分配LCD显示缓冲区,初始化一个fb-info结构,填充它的成员变量,然后调用register-framebuffer(&fb-info),将fb-info登记到内核[3]。
(2)编写fb-info中fb-ops对应的成员函数。
static struct fb-ops dbmx1fb-ops={ owner:THIS-MODUL E, fb-get-fix:dbmx1fb-get-fix, fb-get-var:dbmx1fb-get-var, fb-set-var:dbmx1fb-set-var, fb-get-cmap:dbmx1fb-get-cmap, fb-set-cmap:dbmx1fb-set-cmap,};这些函数是用来设置/获取fb-info结构中的成员变量的。
当应用程序对设备文件进行Ioctl操作时会调用它们。
至于将画面缓冲区的内容输出到LCD显示屏上,则由硬件自动完成,对于软件来说是透明的。
当对于DMA 通道和画面缓冲区设置完成后,DMA开始正常工作,并将缓冲区中的内容不断发送到LCD上,这个过程是基于DMA对于LCD的不断刷新的[4]。
基于该特性,帧缓冲驱动程序必须将画面缓冲区的存储空间(物理空间)重新映射到一个不加高缓存和写缓存的虚拟地址区间中,这样能保证应用程序通过mmap将该缓存映射到用户空间后,对于该画面缓存的写操作能够实时地体现在LCD上。
Qt/Embedded的底层图形引擎完全依赖于帧缓冲,因此在移植时需考虑目标平台的Linux内核版本和帧缓冲驱动程序的实现情况,包括分辨率和颜色深度等内在的信息。
Qt/Embedded能够较好地根据系统已有的帧缓冲驱动接口构建上层的图形引擎。
Qt/Embedded图形发生引擎中的图形绘制操作函数都是由源码目录中的src/ker2 nel/qgfxreaster-qws.cpp中所定义的QgfxRasterBase类发起声明的。
对于设备更加底层的抽象描述,则在src/ker2 nel目录中的qgfx-qws.cpp中的Qscreen类中给予相应定义。
这些是对帧缓冲设备直接操作的基础,包括点、线、区域填充、alpha混合、屏幕绘制等函数均在其中定义实现。
在帧缓冲驱动程序调试通过后,以静态方式编译进内核,在系统启动时由传递进内核的启动参数激活该设备,配置Qt/Embedded的编译选项,可以保证Qt/Embedded的图形引擎正常工作。
2.2 输入设备驱动程序Qt/Embedded中的输入设备,同样分为鼠标类与键盘类。
(1)鼠标设备在源码目录中的src/kernel/qwsmouse-qws.cpp中实现,从该类又重新派生出一些特殊鼠标类设备的实现类,根据具体的硬件驱动程序实现的接口,可以实现类似的接口函数。
Qt/Embedded中鼠标设备类的关系为:QMouseDriverFactory或QMouseDriverPlugin类,根据指定的驱动协议名称创建QWSMouseHandler对象,系统实际调用由QWSMouseHandler类派生的具体设备驱动接口类的readMouseData方法,获取鼠标的状态和位置。
对应目标系统,鼠标类使用了触摸屏。
触摸屏是用于嵌入式设备的最基本的用户交互设备之一。
触摸屏设备的主要功能是随时报告用户的触摸并标识触摸的坐标。
这通常在每次发生触摸时通过生成一个中断来实现。
然后,这个设备驱动程序的角色是每当出现中断时就查询触摸屏控制器,并请求控制器发送触摸的坐标。