嵌入式Linux下Qt/Embedded应用关键技术研究
Qt/Embedded中与用户输入事件相关的信号是建立在对底层输入设备的接口调用。Qt/Embedded中的输入设备主要有鼠标和键盘设备。在2.x和3.x版本系列中鼠标设备的抽象基类为QWSMouseHander,从该类又重新派生出一些具体的鼠标类设备的实现类,鼠标类设备的派生结构如图2。键盘类设备接口的基类QWSKeyboardHandler,移植时需要根据键盘驱动程序从该类派生出实现类,实现键盘事件处理函数 processKeyEvent(),并在QWSServer::setKeyboardHandler函数中注册自已的键盘类设备。其中对于点击键码定义在QT/Embedded的命名空间src/kernel/qnamespace.h中。
3.3 QT/Embedded的移植
本文使用的系统采用320*240分辨率的TFT LCD和S3C2410内部LCD控制模块为显示设备,S3C2410有内部触摸屏控制器和USB Host控制器,可采用USB接口的鼠标、键盘或触摸屏作为输入设备。Linux操作系统内核为2.4.18。
Qt/Embedded的移植首先要准备好要使用的源文件。需要准备的源文件有:qt-x11-2.3.2.tar.gz,提供qvfb虚拟缓冲帧工具,uic用户界面编译器和Designer Qt应用程序设计工具等。Qt/Embedded直接写入帧缓冲,而在宿主机上则是通过qvfb(vitural framebuffer)来模拟帧缓冲。qvfb是X窗口用来运行和测试Qtopia应用程序的系统程序,允许在桌面上开发Qt嵌入式程序,而不需要在命令台和X11之间来回切换。qvfb使用了共享存储区域(虚拟的帧缓冲)来模拟帧缓冲并且在一个窗口中模拟一个应用,显示的区域被周期性的改变和更新。通过指定显示设备的宽度和颜色深度,虚拟出来的缓冲帧和物理的显示设备在每个像素上保持一致。这样在每次调试应用时不需要总是刷新嵌入式设备的Flash存储空间,从而加速了应用的编译、链接和运行周期。qt-embedded-2.3.7.tar.gz和qt-embedded- 2.3.7.tar.bz2,提供Qt库的支持。qtopia-free-1.7.0.tar.gz,提供应用程序开发包桌面环境。tmake- 1.11.tar.gz,用于生成和管理Makefile。
Qt/Embedded到目标设备的移植也需要相应的交叉编译工具链,交叉编译就是在主机平台编译器链接产生运行于目录平台的可执行文件,可采用Cygwin平台下的arm-linux-gcc.exe系列编译器。
3.4 添加应用到qtopia
Qtopia即QPE(Qt Palmtop Environment)是由著名的Trolltech公司基于Qt的嵌入式版本Qt/Embedded库的基础上,专门针对PDA、智能手机这类运行嵌入式Linux的移动计算设备和手持设备所开发的开放源码的一套应用程序包和开发库。移植好Qt/Embedded和Qtopia后,需要将编写的应用程序添加到Qtopia。要为开发的应用程序建立好一个图标文件,然后要重新交叉编译Qtopia,建立.desktop文件,将其保存在 qtopia/apps/applications目录下。最后制作新的文件系统映像文件,把新建的应用程序文件加入其中,若要使QPE能够自动运行,需要对嵌入式系统上的Linux启动过程进行修改,主要是要修改etc/profile里的脚本文件。
4 结论
QT能稳定、可靠地运行于Linux 系统下,并且可以快速构建一个可视化嵌入式软件系统。本文的创新之处是分析了嵌入式Linux+QT/Embedded图形系统的嵌入式图形软件开发中的关键技术,这种开发模式可以大大缩短嵌入式可视化软件的开发周期。
参考文献:
[1] 纪竞舟,付宇卓.基于ARMLINUX的嵌入式GUI的研究和移植[J].计 算 机 仿 真,2004,22(3):224-238
[2]吴姣梅,李红艳等.改善嵌入式Linux实时性能的方法研究[J].微计算机信息,2006,1:72-74
[3] Xterm(中国)软件技术有限公司.Qt程序设计[M].北京:清华大学出版社,2002
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论