qt embed linux,qt-embed移植及其触摸屏

开发平台:ubuntu 8.04

目标平台:S3c2410

开发工具:arm 交叉工具链版本3.4.5

qt4版本:qt-embedded-linux-opensource-src-4.4.3.tar.gz(可到trolltech的ftp下载)

tslib 版本: tslib-1.4.tar.gz

源码版本:linux-2.6.29

一 触摸屏驱动移植

1. 复制s3c2410_ts.c到drivers/input/touchscreen

2. 修改 Kconfig,增加如下配置

config TOUCHSCREEN_S3C2410

tristate "Samsung S3C2410 touchscreen input driver"

depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN

help

Say Y here if you have the s3c2410 touchscreen.

If unsure, say N.

To compile this driver as a module, choose M here: the

module will be called s3c2410_ts.

3. 修改Makefile,增加如下

obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o

4. make menuconfig

选中 Samsung S3C2410 touchscreen input driver

(并在内核查看是否支持LCD驱动、framebuffer

在界面中找到Graphics support

进入查看Support for framebuffer devices 和 S3C2410 LCD framebuffer support两个选项是否被选中,选中代表内核已支持。                 否则选中两个选项 )

make zImage

cp  arch/arm/boot/zImage    /mnt/tftp

二 . 往文件系统中移植tslib

注释: 因为qt-embedded交叉编译时需要用到tslib的头文件和库,所以需要先交叉编译tslib

1  拷贝“项目代码\tslib源码”目录下的tslib-1.4.tar.gz到linux系统

2 # tar -zxvf tslib-1.4.tar.gz

# cd tslib-1.4

# ./autogen.sh

这一步需要安装一些工具,如:在ubantu系统下可以执行:sudo apt-get install automake 和 apt-get libtool

3 执行autogen.sh脚本所生成的Makefile文件

请打入以下命令:

echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH-linux.cache

./configure --host=arm-softfloat-linux-gnu  --prefix=/home/linux/tslib --cache-file=$ARCH-linux.cache

--host是指你的交叉编译器的前最;例如:你的交叉编译器是arm-linux-gcc,则--host=arm-linux.如果是arm-softfloat-linux-gnu-gcc

则--host=arm-softfloat-linux-gnu

--prefix 是你执行make install 的时候编译后生成的可执行文件和库文件以及配置文所安装的目录;

configure文件下还有好多选项,你可以执行./configure --help 来进行选择其他项,不过在这里这些选项就够了。

4 #make

#make install

5 把指定安装目录下的mytslib的文件都copy到你所挂载的根文件下

#cp -rf /home/linux/tslib/*    /rootfs/tslib

6 修改/rootfs/tslib下的etc目录中ts.conf文件

#vi ts.conf  将第二行的#module_raw input修改成module_raw input 注意一定要顶格写否则程序执行时会发生读取ts.conf错误

7 启动你的开发板

在终端上设置一下环境变量:

export TSLIB_ROOT=/mytslib

export TSLIB_TSDEVICE=/dev/input/event1

export LD_LIBRARY_PATH=/mytslib/lib:$LD_LIBRARY_PATH

export QWS_SIZE=320x240

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_PLUGINDIR=/mytslib/lib/ts

export TSLIB_CONSOLEDEVICE=none

export TSLIB_CONFFILE=/mytslib/etc/ts.conf

export POINTERCAL_FILE=/etc/pointercal

export QWS_MOUSE_PROTO=Tslib:/dev/input/event1

export TSLIB_CALIBFILE=/etc/pointercal

export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"

export TSLIB_TSEVENTTYYPE=H3600

为了实现Tslib的正确运行,需要对如下的Tslib的环境变量进行配置:

TSLIB_TSDEVICE  //触摸屏设备文件名。

TSLIB_CALIBFILE  //校准的数据文件,由ts_calibrate校准程序生成。

SLIB_CONFFILE  //配置文件名。

TSLIB_PLUGINDIR //插件目录

TSLIB_CONSOLEDEVICE //控制台设备文件名

TSLIB_FBDEVICE  //设备名

以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发板上的/dev目录下的设备节点相对应。

为了不浪费时间我们把上面的这些设置写入一个脚本里面:参见5.6节

8 就可以运行mytslib/bin下的测试文件,如ts_calibrate校准程序。

注释:一定要把pointercal 备份一下

三 .  Qt4 embedded 在S3C2410上的移植

1  将QtEmbeded 源码包解压后,把configsh文件考到解压后的目录中,可以根据实际情况修改configsh文件中第一行制定的安装目录

注释:安装的路径要先存在,如:/home/linux/qt4_port/qt/build

./configsh

(configsh脚本内容如下:

#!/bin/sh

./configure -prefix /home/linux/qt4_port/qt/build \

-release -shared \

-fast \

-pch \

-no-qt3support \

-qt-sql-sqlite \

-no-libtiff -no-libmng \

-qt-libjpeg \

-qt-zlib \

-qt-libpng \

-qt-freetype \

-no-openssl \

-nomake examples -nomake demos -nomake tools \

-optimized-qmake \

-no-phonon \

-no-nis \

-no-opengl \

-no-cups \

-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm \

-no-xinerama -no-xshape \

-no-separate-debug-info \

-xplatform qws/linux-arm-g++ \

-embedded arm \

-depths 16 \

-no-qvfb \

-qt-gfx-linuxfb \

-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb \

-qt-kbd-usb \

-confirm-license \

-no-armfpa \

-little-endian \

-qt-mouse-tslib -I/home/linux/tslib/include -L/home/linux/tslib/lib

)

make && make install

cp /home/linux/qt4_port/qt/  /home/yw/       -fr

这个时候在指定的安装目录会出现如下目录:bin include lib mkspecs plugins translations

2   将开发机下的linux-2.6.29文件系统用nfs挂载到开发板上(开发板上/mnt/udisk目录下为可写),

mount –t nfs –o nolock 192.168.1.179:/home/yw  /mnt/udisk

cd /mnt/appfs

mkdir  -p   qt/build/lib

mkdir - p   qt/build/fonts

cp /mnt/udisk/qt/build/lib/libQt*.so  /mnt/appfs/qt/build/lib

注释:只需拷贝.so结尾的库过去,其余如 .so.4 ,.so.4.4.3的建立软链接,以减小体积

例:    ln libQTGui.so -s  libQtGui.so.4

ln libQTGui.so -s  libQtGui.so.4.4.3

cp /mnt/udisk/qt/build/lib/fonts/wenquanyi_160_75.qpf /mnt/appfs/qt/build/fonts/

注释:拷贝字体

3  在开发板上设置环境变量

export QTDIR=/mnt/appfs/qt/build

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export PATH=$QTDIR/bin:$PATH

export QT_QWS_FONTDIR=/mnt/appfs/qt/build/fonts

注释: 最好把这些环境变量设置直接加到 /etc/profile 里去

4  用qt编一个helloworld 程序进行测试。使用qmake、make对程序进行编译。

注意:一定要用qtembed安装目录下bin/下面的qmake

/home/linux/qt4_port/qt/build/bin/qmake  –project

/home/linux/qt4_port/qt/build/bin/qmake

make

注释:若出现

/home/linux/qt4_port/qt/build/lib/libQtCore.so: undefined reference to `clock_gettime'

类似错误,请在Makefile 里的LIBS 后面加上 -lrt

5 最后运行helloworld程序

./helloworld  -qws

注释:加 -qws,是因为字体

就可以看到界面了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值