qt210 android 内核移植,移植QT到210的体会

本文详细介绍了如何将QT和tslib移植到X210开发板上,包括tslib的移植步骤,如配置交叉编译工具链,修改配置文件,安装和校验版本宏等。接着讲述了QT源码的移植过程,包括配置QT源码,编译和安装。最后提到了环境变量设置和在开发板上运行QT程序的注意事项。
摘要由CSDN通过智能技术生成

1、将QT移植到X210上,让X210开发板可以运行QT东西,需要几个东西。tslib

QT源码编译后的lib库等

(1)tslib移植:

@1:下载tslib,官方上下就可以。

@2:解压。比如解压到了/root/xin_210/下

@3:选择固定的交叉编译工具连,内核,tslib,QT源码都要用这一个编译,我用的是arm-2009q3.这个工具链中的arm-none-linux-gnueabi/libc/usr/include/linux/input.h中的EV_VERSION宏的的值要和内核

中的include/linux/input.h中的EV_VERSION宏的值一样,同时,这个宏的值也要和tslib中的/plugins/input-raw.c中的

if (! ((ioctl(ts->fd, EVIOCGVERSION,

&version) >= 0)

&&

(version ==

EV_VERSION) &&

(ioctl(ts->fd, EVIOCGBIT(0,

sizeof(bit) * 8), &bit) >= 0)

&&

(bit

& (1 << EV_ABS))

&&

(ioctl(ts->fd, EVIOCGBIT(EV_ABS,

sizeof(absbit) * 8), &absbit) >= 0)

&&

(absbit

& (1 << ABS_X))

&&

(absbit

& (1 << ABS_Y))

&& (absbit & (1

<< ABS_PRESSURE)))) {

//debug

printf("EV_VERSION=%p\n",

EV_VERSION);//0x10000

printf("version=%p\n", version);

//0x10001

printf("bit

& (1 <<

EV_ABS)=%d\n", (bit & (1

<< EV_ABS))); //0

printf("absbit & (1

<< ABS_X)=%d\n", (absbit

& (1 << ABS_X)));

//82344

printf("absbit & (1

<< ABS_Y)=%d\n", (absbit

& (1 << ABS_Y)));

//82344

printf("absbit & (1

<< ABS_PRESSURE)=%d\n",(absbit

& (1 <<

ABS_PRESSURE))); //-33272

fprintf(stderr, "selected device is not a

touchscreen I understand\n");

return -1;

}

version值一样。就是说,内核中的版本宏和所使用的交叉编译工具链的版本宏要和tslib中的版本宏一样,否则tslib会说找不到触摸屏

@4:  在解压的tslib中,执行./autogen.sh

@5:  之后在执行

./configure CC=arm-none-linux-gnueabi-gcc

CXX=arm-none-linux-gnueabi-g++ --host=arm-none-linux-gnueabi

--prefix=/root/rootfs/rootfs/opt/jiuding_tslib

ac_cv_func_malloc_0_nonnull=yes

prefix指定的是你的tslib:在make后,make install时的安装目录

@6:执行 make install,之后tslib就会安装在你的指定目录下。里面有bin lib include

etc四个文件夹

@7:进行到安装后的tslib的etc目录下,打开ts.conf文件。修改内容如下

module_raw input

module pthres pmin=1

module variance delta=30

module dejitter delta=100

module linear

保存退出

@8:将bin lib include etc

四个文件全部弄到你的开发板要用的文件系统中。哪个目录下都行,我的是在文件系统的/opt/jiuding_tslib/目录下

@9:nfs启动根文件系统,运行./ts_calxxx什么的那个,点击十字架后就会得到你要的pionterxx什么的触摸屏检验的信息文件,会在tslib的etc目录中出现。

@10:如果是一路下来的,就不会有错误。至此tslib移植成功

(2)QT源码移植

@1:下载 qt-everywhere-opensource-src-4.7.4.tar.gz,

这个QT源码压缩包,

@2:这里我当你的 qt creator已经安装在了你的Linux环境下,我的是Ubuntu。

@3:将下载下来的QT源码进行解压。我解压在了

/QT/QT_ARM/目录下。并确保你的交叉编译工具链已经导入到了环境变量中。

@4:解压后,进入qt-everywhere-opensource-src-4.7.4/mkspecs/qws/linux-arm-g++/目录下,打开qmake.conf文件。修改内容如下

#

# qmake configuration for building with

arm-linux-g++

#

include(../../common/g++.conf)

include(../../common/linux.conf)

include(../../common/qws.conf)

# modifications to g++.conf

QMAKE_CC

=

/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc

-lts

QMAKE_CXX

=

/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-g++

-lts

QMAKE_LINK

=

/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-g++

-lts

QMAKE_LINK_SHLIB

=

/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-g++

-lts

# modifications to linux.conf

QMAKE_AR

=

/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-ar

cqs

QMAKE_OBJCOPY

=

/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-objcopy

QMAKE_STRIP

=

/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-strip

load(qt_config)

修改后保存退出。

@5:进行配置,执行如下

sudo ./configure --prefix=/usr/local/qt4.8.5-arm

-opensource -release -shared -Declarative -importdir /opt/imports

-fast -no-largefile -qt-sql-sqlite -qt3support -exceptions

-xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2

-svg -no-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make

libs -make tools -nomake examples -nomake docs -nomake demos

-no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++

-embedded arm -little-endian -qt-freetype -depths 16,24,32

-qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc

-no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb

-qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT

-DQT_NO_QWS_CURSOR -no-pch

-I/root/rootfs/rootfs/opt/jiuding_tslib/include

-L/root/rootfs/rootfs/opt/jiuding_tslib/lib

-confirm-license

prefix=是将来编译QT源码后,安装QT时所在的目录。-I后面的是你的tslib所在的头文件路径。-L后面是tslib所在的lib路径。

@6:make

编译。如果缺少什么东西,需要自己去网上搜,全部安装下。不然编译会有很大的问题。前面的tslib也是。

@7:我在make 时,最后出现了libhelpso unreference什么的问题,最后并不是完全的编译通过

,但是我实在找不到原因了,就直接make install了,居然成功了

@8:make install 后,QT就安装在了你的指定目录下了。

@8:开发板上需要的是你QT安装目录下的lib中的库文件。为了防止将这个lib文件夹直接复制到文件系统中后会有符号链接等不正常的问题,我们可以将这个

lib文件夹进行打包,然后复制到文件系统中合适的路径下,进行解压,最后是在和你的QT安装路径一样的对应到文件系统中。避免后面有可能的错误。

@9:进入到文件系统中,将这个lib进行解压。然后创建一个sh脚本,或者是在/etc/profile中进行环境变量的设置,内容如下

export TSLIB_TSEVENTTYPE=INPUT

export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH

export QTDIR=/usr/local/qt4.8.5-arm

export T_ROOT=/opt/jiuding_tslib

export PATH=$T_ROOT/bin:$PATH

export

LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/input/event2

export TSLIB_PLUGINDIR=$T_ROOT/lib/ts

export TSLIB_CONFFILE=/etc/ts.conf

export

TSLIB_CALIBFILE=/opt/jiuding_tslib/etc/pointercal

#export QWS_KEYBOARD=USB:/dev/input/event1

export QWS_MOUSE_PROTO=Tslib:/dev/input/event2

export QT_QWS_FONTDIR=$QTDIR/lib/fonts

export QWS_SIZE=1024x600

我的触摸屏是event2,你的如果你不知道,你可以cat去看event,并触摸触摸屏,看哪个是你的触摸屏设备文件

运行这个脚本,或者设置在文件系统的profile中后关机机重启

@10: 在Linux下的 qt

creator中写QT程序,选定好你用的交叉编译工具链,选定好的QT版本(就是你安装的QT目录下的bin文件中的qmake文件)

@11:编写好QT程序,可以先stat

这个可执行程序,看下是不是arm架构的,是就可以复制到文件系统中了,运行这个程序了,但是要注意

运行这个程序时,后面要加上 -qws

@12:结束,其他错误的地方,可以去网上进行一步看

然后启动开发板,nfs挂载根文件系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值