Qt 4.5.3 +tslib1.4移植

Qt 4.5.3  tslib1.4 移植

 

我的编译环境是: ubuntu 10.04+Qt 4.5.3+tslib1.4

需要的软件包:     arm-linux-gcc-3.4.1.tar.bz2 (交叉编译)

                                            qt-x11-opensource-src-4.5.3.tar.gz

                                            qt-embedded-linux-opensource-src-4.5.3.tar.gz

                                            tslib-1.4.tar.gz


一 配置交叉编译环境

下载 arm-linux-gcc-3.4.1.tar.bz2 地址: http://download.csdn.net/source/2889583

具体安装就不细讲了,可以参照 http://blog.csdn.net/qq419036154/archive/2010/12/05/6056803.aspx

我的交叉编译安装路径是 /usr/local/arm/3.4.1

 

二 安装 X11

 

# tar -zxvf qt-x11-opensource-src-4.5.3.tar.gz

# cd qt-x11-opensource-src-4.5.3

# ./configure

# make

# make install

qt-x11 被安装到此目录下 /usr/local/Trolltech/Qt-4.5.3

编译 qvfb:

# cd qt-x11-opensource-src-4.5.3/tools/qvfb

# make

会在 qt-x11-opensource-src-4.5.3/bin 下生成 qvfb 文件

 

 

三 . 安装pc 机的 x86

 

解压:

# tar -zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz

更名:

# mv qt-embedded-linux-opensource-src-4.5.3 qt-embedded-linux-opensource-src-4.5.3-x86

编译:

# cd qt-embedded-linux-opensource-src-4.5.3-x86

# ./configure -embedded x86 -qvfb ( 千万不要落了- qvfb)

# make

# make install

qt-embedded 被安装在这个目录下 /usr/local/Trolltech/QtEmbedded-4.5.3

新建一个 setenv.sh 文件内容如下:

export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3

export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbeded-4.5.3/lib:$LD_LIBRARY_PATH


将 qt-x11-opensource-src-4.5.2/bin 下生成的 qvfb 文件 copy  /usr/local/Trolltech/QtEmbedded-4.5.2-x86/bin 


 

四 安装 tslib1.4

 

下载 tslib1.4 地址: http://download.csdn.net/source/2889575

1. 安装编译过程需用到的程序 
sudo apt-get install autoconf(
 
或 autoconf2.13)
sudo apt-get install automake
sudo apt-get install libtool

2. 解压配置

$tar xzvf tslib-1.4.tar.gz

$./autogen.sh

$echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache 
$./configure --prefix=/usr/local/tslib --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no

 

其中ac_cv_func_malloc_0_nonnull=yes 是为解决如下编译错误设置的
ts_test.o: In function `main':
ts_test.c:(.text+0x1d8): undefined reference to `rpl_malloc'
fbutils.o: In function `open_framebuffer':
fbutils.c:(.text+0xa20): undefined reference to `rpl_malloc'
collect2: ld returned 1 exit status

参数--enable-inputapi=no. 是为了解决运行中提示 ts_open:Inappropriate ioctol for devic 
它表示不使用ioctl来控制触摸屏。

3. 编译安装
$make 
$sudo make install
PC/ usr/local/tslib/
下生成触摸屏运行库。

五 安装 embedded-ARM 

 

解压

tar -zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz

更名

$mv qt-embedded-linux-opensource-src-4.5.3 qt-embedded-linux-opensource-src-4.5.3-arm

进入

$cd qt-embedded-linux-opensource-src-4.5.3-arm


配置

$./configure -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib


(蓝色标注的路径最好不要改变) 

$make

#make install

qt-embeded 被安装在这个目录下 /usr/local/Trolltech/QtEmbedded-4.5.3-arm

这里你可以新建一个 setenv.sh 文件

把下面复制到文件中

export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm

export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib:$LD_LIBRARY_PATH

 


六 移植到开发板

 

接下来通过 NFS 测试是否成功( NFS 安装请参照http://blog.csdn.net/qq419036154/archive/2010/12/05/6056824.aspx 

先创建 3  nfs 共享文件夹, /nfsboot  /fonts  /tslib

1. 准备库

sudo cp -a /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/ /nfsboot/ 然后在 /usr/local/arm/3.4.1/arm-linux/lib 里面找这些库

librt.so , librt.so.1 , librt-2.3.2.so , libstdc++.so , libstdc++.so.6 ,libstdc++.so.6.0.1,libgcc_s.so.1

将上面这些库拷贝到 /nfsboot/lib


2. 准备字体

cp -arf /usr/local/Trolltect/QtEmbedded-4.5.3- arm/lib/fonts /fonts


3. 准备 tslib 文件

sudo cp -a /usr/local/tslib/* /tslib

 

4. 修改触摸屏配置文件 

tslib 程序在运行的时候是通过打开 关闭 ts.conf 配置文件来配置相应的文件,根据我们板子的实际需求我们修改如下:

vi /usr/local/tslib/etc/ts.conf

我的设备驱动是 h3600 ,所以将  14  # module_raw h3600 前面的 和空格去掉

内容如下:

module_raw h3600

module pthres pmin=1 // Pthres  Tslib 提供的触摸屏灵敏度门槛插件

module variance delta=30 // Variance: 为 Tslib 提供的触摸屏滤波算法插件

module dejitter delta=100 //Dejitter: 为 Tslib 提供的触摸屏去噪算法插件

module linear // Linear: 为 Tslib 提供的触摸屏坐标变换插件


去掉哪个主要取决于你的驱动类型

 

5. 挂载文件

接下来将开发板和主机通过网线连接起来,并在开发板里进行 mount , 先配置 PC 机上的 IP ,所配

 

置的 IP 要于开发板的 IP 在同一个网段,在开发板上建立目录 /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib 和 /usr/local/tslib

然后挂载:

(a). 挂载 Qt 库文件

mount -t nfs -o nolock -o tcp 192.168.0.16:/nfsboot /mnt


(b). 挂载字体 ( 在 lib 目录的 fonts 

因为 Qtopia 默认查找字体的目录是 /usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts ,所以我们要在开发板

 

上建立一条 /usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts 路径

 

#mkdir /usr/local && mkidr /usr/local/Trolltech &&mkdir /usr/local/Trolltech/QtEmbedded-4.5.3-arm &&/usr

 

/local/Trolltech/QtEmbedded-4.5.3-arm/lib


然后进行挂载:

mount -t nfs -o nolock -o tcp 192.168.0.16:/fonts /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib


(c). 挂载 tslib 库文件

在开发板上建立一条 /usr/local/tslib 路径

然后进行挂载:

mount -t nfs -o nolock -o tcp 192.168.0.16:/tslib /usr/local/tslib (挂载 tslib 库文件)


6. 设置环境变量

export T_ROOT=/usr/local/tslib                                 // 开发板上 tslib 的路径

export TSLIB_CONSOLEDEVICE=none                // 设定控制台设备为 none

export TSLIB_FBDEVICE=/dev/fb0                          // 指定帧缓冲设备

export TSLIB_TSDEVICE=/dev/h3600_tsraw         // 触摸屏设备节点文件

export QWS_MOUSE_PROTO=Tslib:/dev/h3600_tsraw

export LD_LIBRARY_PATH=$T_ROOT/lib:/mnt/lib          // 库文件的路径

export TSLIB_CALIBFILE=/etc/pointercal                  // 指定触摸屏校准文件 pintercal 的存放位置

export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf      //tslib 配置文件的位置

export TSLIB_PLUGINDIR=$T_ROOT/lib/ts             // 触摸屏插件所在路径

export QWS_SIZE=640x480


在配置环境变量时要注意 TSLIB_TSDEVICE ,这取 决于具体的设备驱动了 事件驱动用 export TSLIB_TSDEVICE=/dev/input/event0 ,而 h3600 用如下配置, export TSLIB_TSDEVICE=/dev/h3600_tsraw

 

 

7.校准触摸屏

触摸屏的前提是你的触摸屏驱动已经写好 并加载进了内核。 你可以测试有没有加载触摸屏驱动, /dev/touchscreen/0( 这是我板子上的触摸节点 )

# cat /dev/touchscreen/0

看终端有无信息显示,若有则表明正确

进行校准:

# cd /usr/local/tslib/bin
# ./ts_calibrate

如果正常,则会在校准文件会保存在 /etc/pointercal

接下来就可以运行 qt 程序了

#./dialog -qws &

如果出现问题一般都是缺少库文件或者环境变量没设置好

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值