摘 要: 概述了基于达芬奇技术的TM320DM365的硬件环境搭建,介绍了嵌入式系统软件架构,并详细阐述了Qt/E的安装移植,包括tslib1.4库的编译并做相应的设置,概述了嵌入式GUI开发流程。最后,使用一个简单的应用程序对移植的情况进行了测试。
关键词: 达芬奇技术;Qt嵌入式系统;移植
0 引言
随着嵌入式系统以及图像处理技术的发展,嵌入式监控设备已经广泛用于视频监控中。客户对于视频监控终端需要人性化的人机交互界面。Qt/Embedded是Trolltech发布的面向嵌入式系统的Qt版本[1],具有很好的跨平台特性以及为用户提供丰富的API接口和界面设计友好等优点[2]。但由于PC机编译的应用程序不能直接在嵌入式系统中应用,本文针对这一问题,主要介绍了基于以TI的TMS320DM365为代表支持触摸屏的嵌入式界面开发与移植。为类似的嵌入式Qt应用程序开发提供了参考。
1 总体设计
1.1 硬件平台搭建
达芬奇技术是为数字视频而设计的系统解决方案,采用了ARM+DSP双核架构,ARM处理器上使用Linux操作系统来负责外围模块的管理,而DSP端执行音视频编解码算法[3]。既满足视频应用在控制方面、计算能力的需求,又降低了系统成本,同时也降低了系统的复杂性。TI的TMS320DM365芯片正是达芬奇平台的典型代表。DM365芯片的优点还包括提供了丰富的外设接口,比如DDR接口、Flash接口、SD卡接口、UART串口等[4]。DM365的视频处理后端将经视频处理子系统处理的图像输出到外部显示器上。显示模块选用的是一款支持触摸屏的5.7英寸、分辨率为640×480的TFT-LCD。整体的硬件设计如图1所示。
1.2 嵌入式系统开发环境搭建
启动过程中,首先加载系统引导程序,包括RBL(ROM Boot Loader)、UBL、U-Boot。首先执行RBL,从NAND上读取UBL并复制到内存中。UBL初始化系统硬件,从NAND中读取U-Boot的内容复制到DDR里,U-Boot加载内核,完成内核的启动。启动后,会将NAND Flash中的yaffs2文件系统挂载到根目录下,至此,整个系统开发环境搭建完毕。
2 Qt/Embedded-arm开发环境搭建
嵌入式系统中常用的图形用户界面有MiniGui、Micro Windows和Qt。与其他软件相比,Qt可移植性强,开发周期短;信号和槽这一机制使得用户交互更方便。从开发周期、应用领域等多方面考虑,选用Qt设计图形界面。但由于PC机上的系统与嵌入式Linux系统差异比较大,因此不能直接复制PC机上调试好的Qt应用程序到嵌入式系统中运行。而且针对不同的嵌入式系统,需要不同的Qt平台开发应用程序。本文介绍了基于Qt/Embedded开发应用程序,并移植到DM365硬件平台的方法。
2.1 tslib库的研究与编译安装
带触摸屏的移动终端,电磁噪声会导致触摸屏出现触摸不准确等问题。tslib为驱动处获得原始的采样数据提供去噪、去抖等功能,将设备坐标转换为对应的屏幕坐标,为应用层提供接口。先下载tslib源码包,解压tslib1.4.tar.gz到工作目录下。
tslib文件夹中ts.conf配置了需要加载的插件、插件顺序以及一些约束参数。由于源码中没有指定module_raw,而需要input模块从输入设备读取数据,所以去掉module_raw input语句前注释。同时TSLIB_PLUGINDIR一定要配置正确,使tslib找到模块文件。驱动向应用层汇报的是绝对坐标信息,为了获取到触摸屏的驱动数据,应修改plugins目录下的input-raw.c源码。否则校准触摸屏没有反应。
static int ts_input_read(…)这个函数体中,ABS_X获取的为x坐标,ABS_Y获取的y坐标,ABS_PRESSURE为报告触摸事件,需定义ABS_X为0x35,ABS_Y为0x36,ABS_PRESSURE为0x30。数据为读取的设备接口信息。
$./autogen.sh//生成configure脚本
$./configure--host=arm-linux--perfix==/usr/local/tslib
配置成功生成makefile文件,make编译生成库文件,但是发现make的时候报错,需要建立一个cache文件。则编译之前需要执行如下命令:
$echo“ac_cv_func_malloc_0_nonnull=yes”>make.cache
编译成功后,执行make install进行安装。
宿主机常用的是以X86为核心的PC机,而目标板是ARM体系结构,需要在宿主机上建立适用于在目标板上的交叉编译环境[5]。达芬奇DVSDK为DM365提供的交叉编译工具链为arm_v5t_le-gcc和arm_v5t_le-g++。修改/home/sml/QT/tslib目录以及子目录下所有makefile文件,将文件中所有的arm-linux-和arm-unkown-linux-用arm_v5t_le-替换。安装完成后将/usr/local目录下生成的tslib文件夹复制到目标板文件系统/usr/local/下。
2.2 Qt/Embedded-arm编译安装与移植
Qt/Embedded-arm是Qt嵌入式版本。为了在开发板上运行Qt程序,需利用交叉编译器对Qt/Embedded编译生成库文件。解压源码qt-everywhere-opensource-src-4.7.2.tar.gz。进入生成的qt-embedded目录后配置参数,参数的选择也影响到arm资源的占用率。键入make会根据生成文件夹中的makefile文件进行编译。编译完成后生成一个QtE-4.7.2-dm365库文件夹,键入make install将库文件安装设定的/usr/local/Trolltech目录下。而此时仅将库文件拷贝到内核文件系统中是不可用的,为了让嵌入式系统找到头文件、动态库、设备等资源,需要设定环境变量。基于硬件平台,执行如下操作:
$./configure-prefix/usr/local/Trolltech/QtEm-4.7.2-dm365-opensource-confirm-license-embedded arm-release-fast-qt-libpng-no-qt3support-qt-libtiff-qt-libjpeg-shared-no-webkit-make tools-no-largefile-nomake demos-nomake examples-multimedia-no-cups-xplatform qws/linux-arm-g++-nomake docs-no-qvfb-qt-mouse-pc-no-mouse-linuxtp-qt-mouse-tslib-L/usr/local/tslib1.4/lib(指定动态库的路径)-I/usr/local/tslib1.4/include(指定tslib的路径)
$make
$make install
$ cp-r/usr/local/Trolltech/QtE-4.7.2-dm365/home/sml/filesys/usr/local/(拷贝上位机生成库文件到内核系统存放库文件的路径)
修改/home/sml/filesys/etc/profile文件,例如指定Qt文件目录,校准文件的存放位置,触摸屏设备,指定帧缓冲设备,tslib库文件路径等。设置开发板环境变量:
$export QTDIR=/usr/local/Trolltech/QtEm-4.7.2-dm365
$export PATH=$QTDIR:$PATH
$export QWS_DISPLAY=LinuxFb:/dev/fb0
$export TSLIB_CALIBFILE=/etc/pointercal
$export TSLIB_TSDEVICE=/dev/input/event0
$export TSDIR=/usr/local/Trolltech/tslib
…
2.3 Qt/Embedded应用程序开发流程
基于DM365硬件平台的嵌入式GUI开发流程中,首先使用安装好的软件Qt Creator开发应用程序。大致步骤是创建初始化对象,对控件进行布局,然后通过建立信号连接自定义的槽函数来实现窗口动作。完成的工程利用集成开发工具和嵌入式Qt4库进行交叉编译。接着将编译通过的应用程序通过NFS网络文件系统挂载到目标板调试。调试通过后,将应用程序拷贝到文件系统中,并打包烧写到开发板的Flash中,最后设置为目标板自启动[5]。流程如图2所示。
3 实验测试
ts_calibrate是一个应用程序,采集了五组点坐标,用户点击校准光标后获取相应数据,对其进行一套算法变化后得到X值、Y值和scaling等共7个值,写到校准文件中。运行tslib/bin/ts_calibrate校准程序,屏幕上会陆续出现5个光标图,依次点击完毕后/etc目录下产生一个pointercal文件,证明触摸库已经安装成功。终端显示运行的结果如图3所示。
拷贝一个编译通过的demo程序到文件系统dm365目录下:
$ cp /usr/local/qt-demo/home/sml/filesys/opt/dm365/
通过串口连接目标板,文件系统挂起之后minicom执行如下操作:
#cd/opt/dm365/
#./qt-demo-qws&
触摸屏上显示如图4所示结果,且鼠标跟随触摸位置的移动而移动,移植测试成功。
4 结束语
本文从硬件平台的搭建到软件环境搭建的介绍,重点介绍了如何移植触摸屏的库和阐述了Qt/E基于DM365嵌入式系统下的移植方法。在此嵌入式监控终端之上,可以进行各种各样的嵌入式GUI开发。
参考文献
[1] 张春艳.基于Qt的嵌入式图形用户界面研究与实现[D].大连:大连海事大学,2008:11-14.
[2] 陈敬,向伟.基于嵌入式Linux的Qt/Embedded移植与应用开发[J].电脑信息与技术,2013,21(1):57-60.
[3] Texas Instruments. TMS320DM365 digital media system on-chip[EB/OL].(2011-07-01)[2014-10-10]. http://www.ti.com/lit/ds/symlink/tms320 dm365.pdf.
[4] 张晨鹏.基于DM365的音视频服务器的设计[D].武汉:武汉理工大学,2011:17-27.
[5] 孙巍,冯伟兴.Qt/Embedded应用程序在ARM-Linux系统中的开发与应用[J].自动化技术与应用,2011,30(8):37-38.