2016-04-15 16:46:38 hailang5337 阅读数 2684
  • Qt4移植开发板

    Linux环境图形用户界面应用程序开发,面向对象程序设计,Linux/Windows多平台图形应用开发,嵌入式设备图形界面开发。Qt绘图,事件机制,网络,数据库,嵌入式移植

    2880课时 0分钟 1024人学习 沈寒
    免费试看

一、平台说明
主机平台:Ubuntu14.04
交叉编译器:arm-linux-gnueabihf-gcc-4.8
目标平台:iMX6S单板
Qt版本:qt-everywhere-opensource-src-5.3.2.
二、Qt5.3.2在Ubuntu平台交叉编译
1、下载Qt5.3.2
Qt官方网站下载qt-everywhere-opensource-src-5.3.2.tar.gz。然后解压缩到/home/qt目录下,命令:tar xzvf qt-every-opensource-src-5.3.2.tar.gz –C /home/qt。

2、下载arm-linux-gnueabihf-gcc、arm-linux-gnueabihf-g++
通过sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf命令下载gcc和g++。

3、指定交叉编译器
修改配置文件/home/qt/qt-everywhere-opensource-src-5.3.2/qtbase/mkspecs/
linux-arm-gnueabi-g++/qmake.conf

#
#qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QMAKE_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE        += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE  += -O2 -march=armv7-a

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

#modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc
QMAKE_CXX               = arm-linux-gnueabihf-g++
QMAKE_LINK              = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++

#modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_NM                = arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-linux-gnueabihf-strip
load(qt_config)

4、配置Qt5.3.2
执行命令:./configure -release -opensource -xplatform linux-arm-gnueabi-g++ -prefix $PWD/qtbase -no-openssl -qreal float

5、编译安装
配置完成后,执行:make –j4,然后再执行:make install –j4

三、Qt5.3.2在ARM-Linux平台的移植
1、文件lib plugins拷贝到单板上
把/home/qt/qt-everywhere-opensource-src-5.3.2/qtbase/目录下的lib、plugins拷贝到单板/opt/qt5目录下。

2、单板进行环境变量设置
在/etc/profile中添加如下变量:

export QTDIR=/opt/qt5
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QTDIR/lib:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QTDIR/lib/fonts
修改完成后,执行:source /etc/profil,使环境变量生效。

3、执行测试程序test
执行命令:./test

2016-07-15 17:30:31 xiaoxiaodongshige 阅读数 1162
  • Qt4移植开发板

    Linux环境图形用户界面应用程序开发,面向对象程序设计,Linux/Windows多平台图形应用开发,嵌入式设备图形界面开发。Qt绘图,事件机制,网络,数据库,嵌入式移植

    2880课时 0分钟 1024人学习 沈寒
    免费试看

Arm 烧录 根文件系统 +移植qt图形化界面

移植根文件系统

平台:友善6140
工具:arm-linux-gcc 4.5.1 http://download.csdn.net/detail/xiaoxiaodongshige/9577171
maketool:
http://download.csdn.net/detail/xiaoxiaodongshige/9577199
busybox:
http://download.csdn.net/detail/xiaoxiaodongshige/9577180

大致参照博客http://www.cnblogs.com/Charles-Zhang-Blog/p/3419301.html
但是要修改3个地方:
1,根文件系统文件夹rootfs下的/lib文件下的文件需要到arm-linux-gcc下面的sys-root下/lib复制。
2,根文件系统文件夹rootfs下的/usr/lib 要到sys-root下/usr/lib复制。
3,需要在rootfs下添加两个设备

mknod -m 600 dev/console c 5 1
mknod -m 666 dev/null c 1 3

不然引导的时候会出现 can`t open /r/dev/console 这个设备的错误
注意
用 mkyaffs2image-128M 打包的个文件镜像包要和“FriendlyARM.ini”
保持一致。配置如下

#This line cannot be removed. by FriendlyARM(www.arm9.net)

LCD-Mode = No
LCD-Type = S70

CheckOneButton=No
Action=install
OS= Linux

VerifyNandWrite=No

StatusType = Beeper| LED

#################### Linux #####################
Linux-BootLoader = Superboot-6410.bin
Linux-Kernel = linux/zImage
Linux-CommandLine = root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200
Linux-RootFs-InstallImage = linux/rootfs.img

qt移植

qt版本qt4.70。这个是网上暂时移植成功了的qt版本。要移植5.0以后的版本估计得费点劲。qt5 和qt4差距还是稍微有点大。
大概参照:
http://blog.csdn.net/chenaini119/article/details/39312599
这个交叉编译后的库也是需要复制到开发板/opt/下的。
另外要开发可以在板子上跑的程序,需要在linux下(不是板子上,依赖的库挺多的)安装qt creater。把qt creater的编译器设置为arm-linux-gcc,qt的版本选为交叉编译出来的qmake,然后就在lnux上面开发编译好了才能复制到板子上去运行。如果你把qt也是拷贝到了板子上的/opt下。假设你的编译好的其他程序叫做qttest运行命令如下:

./qttest -qws

效果展示

很丑,难得写,就拖了个日历控件

居然无法上传图片,那就不怪我咯。不过相信我,运行是成功了。

2018-03-21 15:59:28 Linux_ARM_G 阅读数 1063
  • Qt4移植开发板

    Linux环境图形用户界面应用程序开发,面向对象程序设计,Linux/Windows多平台图形应用开发,嵌入式设备图形界面开发。Qt绘图,事件机制,网络,数据库,嵌入式移植

    2880课时 0分钟 1024人学习 沈寒
    免费试看

Qt 是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。


2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP。


可以说,Qt 同 Linux 系统 X Window 上的 Motif、Openwin、GTK 等图形界面库,以及Windows 平台上的 MFC、OWL、VCL、ATL是同类型的东西。


Qt的移植包括步骤如下:


下载新版qt;
编译tslib;
编译qt;
配置编译后的qt,以便在主机上用qmake编译适用目标板的qt应用;
拷贝lib文件到目标板。
1 下载 tslib 和 Qt


Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。


到 github 下载 tslib最新版,地址:https://github.com/kergoth/tslib,下载后文件名为:tslib-master.zip。
tslib


到 Qt 官网下载合适的 Qt 版本,地址:http://download.qt-project.org/archive/qt/。本教程以 4.8.5为例,下载的压缩包名称为: qt-everywhere-opensource-src-4.8.5.tar.gz。
 


2 环境准备


安装automake、libtool 和主机上的 Qt 工具:


$ sudo apt-get install automake autoconf libtool m4
$ sudo apt-get install libX11-dev libXext-dev libXtst-dev libXrender-dev 
(!!!!!这句不能运行不然重启后无法进入系统$ sudo apt-get install libqt4-core libqt4-dev libqt4-webkit qt4-demos!!!!!!)
如果还没有交叉编译器的路径添加到PATH,要先把该路径添加到PATH中,本例使用的交叉编译器的路径为 /usr/local/arm-2010q1/bin(一定要指定自己目标板的交叉编译器路径),则执行以下命令:


$ export PATH=$PATH:/usr/local/arm-2010q1/bin
 


3 编译tslib


(1)建立工作目录


$ cd ~
$ sudo mkdir /usr/local/tslib
$ sudo mkdir /usr/local/qt4.8.5-arm
$ mkdir qt
$ cd qt
(2)编译安装tslib


将下载的tslib源码复制到工作目录,并解压:


$ unzip tslib-master.zip
$ cd tslib-master
(3)编译


配置tslib,安装路径可以通过 --prefix 参数设置,这里安装到 /usr/local/tslib:


$ ./autogen.sh
$ ./configure CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ --host=arm-none-linux-gnueabi  --prefix=/usr/local/tslib ac_cv_func_malloc_0_nonnull=yes
编译安装:


$ make
$ sudo make install
完成后,tslib会按安装到主机 /usr/local/tslib 目录下。
进入下一步之前,先将主机中 /usr/local/tslib/etc/ts.conf 文件第二行“#module_raw input”的注释去掉,变为“module_raw input”,注意一定要顶格。


 


4 编译安装qt


(1)解压


$ cd ~/qt-arm
$ cp qt-everywhere-opensource-src-4.8.5.tar.bz2 ./
$ tar xjvf qt-everywhere-opensource-src-4.8.5.tar.bz2
$ cd qt-everywhere-opensource-src-4.8.5
(2)指定交叉编译器


打开解压目录下的mkspecs/qws/linux-arm-g++/qmake.conf:


 $ vi mkspecs/qws/linux-arm-g++/qmake.conf
用vi打开qmake.conf 后,将arm-linux-全部替换 arm-none-linux-gnueabi-(注意:根据自己板子而定,并且一定要先将交叉编译器的路径加入PATH变量中),并加上-lts,然后保存退出,更改后如下:


# modifications to g++.conf
QMAKE_CC = arm-none-linux-gnueabi-gcc -lts
QMAKE_CXX = arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK = arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++ -lts
# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_STRIP = arm-none-linux-gnueabi-strip
(3)配置Qt
如下,先通过 --prefix 指定qt安装的路径,-I后面指定上一步tslib的include路径,-L后面指定上一步tslib的lib路径,


$ sudo mkdir /usr/local/qt4.8.5-arm
$ 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 demo -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/usr/local/tslib/include -L/usr/local/tslib/lib -confirm-license
可以执行./configure --help查看参数的详细说明,根据需要来配置合适的参数
如果配置的时候提示:


The tslib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR and QMAKE_LIBDIR in
/home/veryarm/qt/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-g++.
说明找不到合适的交叉编译工具,请重新设置PATH环境变量。如果还是不能解决,再修改mkspecs/qws/linux-arm-g++/qmake.conf,将交叉编译工具改为绝对路径,如下:


# modifications to g++.conf
QMAKE_CC = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc -lts
QMAKE_CXX = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-g++ -lts


# modifications to linux.conf
QMAKE_AR = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-objcopy
QMAKE_STRIP = /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-strip
(4)编译安装


$ sudo make
$ sudo make install
完成后,qt4.8.5即会安装到主机/usr/local/qt4.8.5-arm目录下。


 


5 配置主机Qt


以便在主机上用 qmake 编译嵌入式qt应用


(1)设置环境变量
在主机(如Ubuntu)当前终端下执行以下命令:


$ export PATH=$PATH:/usr/local/qt4.8.5-arm/bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qt4.8.5-arm/lib
或将以上命令添加到/etc/profile 文件中,这样系统登录时就自动设置好这些环境变量。


 


6 移植Qt到开发板


开发板上要使用的东西就2个,一个是编译后的tslib,一个是编译后qt目录下的lib目录。如下步骤将这两个目录拷贝到开发板上。
(1)打包lib
我们Qt 安装完成之后,为解决符号链接的问题,可以利用先打包,然后直接解压到开发板的做法:


$ cd /usr/local/qt4.8.5-arm
$ tar -zcf lib.tar.gz lib
$ cd /usr/local
$ tar -zcf tslib.tar.gz tslib
将打包好的压缩文件 lib.tar.gz 和 tslib.tar.gz 复制到开发板,然后解压:


$ mkdir -p /usr/local/qt4.8.5-arm
$ tar xzvf lib.tar.gz -C /usr/local/qt4.8.5-arm
$ tar xzvf tslib.tar.gz -C /usr/loacal
(2)设置开发板上的环境变量


在目标板上新建一个名为 setqtenv 的文件,


$ vi setqtenv
并加入以下内容:


export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH
export QTDIR=/usr/local/qt4.8.5-arm
export T_ROOT=/usr/local/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/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_KEYBOARD=USB:/dev/input/event1
export QWS_MOUSE_PROTO=Tslib:/dev/ input/event0
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
执行以下命令设置好qt环境变量的设置:


$ source setqtenv
 


OK了,新版本的qt就可以使用了!~~~

2020-01-10 18:33:54 qq_35556006 阅读数 279
  • Qt4移植开发板

    Linux环境图形用户界面应用程序开发,面向对象程序设计,Linux/Windows多平台图形应用开发,嵌入式设备图形界面开发。Qt绘图,事件机制,网络,数据库,嵌入式移植

    2880课时 0分钟 1024人学习 沈寒
    免费试看

本来编译移植Qt主要是要跑多国语言输入法,看看能不能成功运行。这是最开始的一步了,相对比以前的x11环境搭建,效率快多了,就算是错了,删了等15分钟又是一条好汉 =v= 

开始

      1、准备工作

官网下载源码压缩包

https://download.qt.io/archive/qt/5.13/5.13.0/single/ 

解压:sudo tar -xvJf   qt-everywhere-src-5.13.0.tar.xz   j 还是大写

还有少不了的交叉编译器

Linaro官网下载: https://snapshots.linaro.org/components/toolchain/gcc-linaro/

1.解压

2.在环境变量加上编译器环境

3.在qt中添加编译器,并构建套件kits

ARM40-A5 GCC交叉编译环境搭建


      2、编译源码

首先修改参数

打开/qt-everywhere-src-5.13.0-qtbase/mkspecs/linux-arm-gnueabi-g++路径下的

  qmake.conf  文件。

加上:
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a

并把交叉编译器全部换成本地的交叉编译器,我的只要在arm-linux-gnueabi后面加上hf

开始编译:

配置:

../configure -linuxfb -release -nomake examples -no-iconv -no-opengl -no-assimp -no-qt3d-profile-jobs -no-qt3d-profile-gl -xplatform linux-arm-gnueabi-g++ -prefix /usr/local/Trolltech/QtEmbedded-5.13-Arm -opensource -confirm-license -tslib -I/home/zhj/Desktop/Arm-tslib/include  -L/home/zhj/Desktop/Arm-tslib/lib  -recheck-all 
-L -I 需要链接上tslib的库 因为要用到触摸屏,所以还有移植Tslib这个步骤

make

make install

 


 Tslib的移植:

配置:./configure --host=arm-linux --build=i386-linux --prefix=/home/_install/usr --cache-file=arm-linux.cache --sysconfdir=/home/_install/usr/etc --enable-static CC=/usr/local/arm/4.4.1/bin/arm-linux-gcc ac_cv_func_malloc_0_nonnull=yes --enable-inputapi=no

然后在板子上./ts_calibrate 出现校准界面,按照四个顶点 点击即成功,然后./test成功画图写字(触摸校准成功)、

其中出现过各种校准的问题:什么 open fileure啊、运行4个校准点立刻点完了然后校准失败等等问题。请看下面:

Tslib步骤以及出现问题的解决方案


      3、配置环境变量:

根据自身需要结合官网的解释即可

https://doc.qt.io/qt-5/embedded-linux.html

 

Qt常用的有如下

export QTDIR=/opt/QtEmbedded-5.13-Arm         设置Qt主目录
export QT_QPA_FONTDIR=$QTDIR/lib/fonts      设置Qt字体库路径
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins    设置Qt插件库路径
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x600:mmSize=800x600:offset=0x0:tty=/dev/console 

                  linuxfb使用的平台cha,有四种。 size表示屏幕大小, offset偏移量,tty是虚拟控制台的路径

export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1   触摸屏输入驱动,需要根据板子修改
export QT_QPA_FB_TSLIB=1    使用Tslib

export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$TSLIB_ROOT/lib  使用Qt链接库的位置
export QT_DEBUG_PLUGINS=1   开启debug模式,在调试时会有意向不到的好处。

 

Tslib:

export TSLIB_ROOT=/opt/Arm-tslib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export  LD_PRELOAD=$TSLIB_ROOT/lib/libts.so


      4、运行例子 

./hello


/--------------------------出现的问题-----------------------------/


    1、打包编译好的arm环境的qt。移到板子上,./文件名 报错误 ..../no found 
        在PC上用arm-linux-arm-gnueabi-readlf -l 文件名  (查看运行库)
                
        发现是运行库缺少/lib/ld-linux-armhf.so.3 然后把PC上的库拉到ARM板上
    2、./文件名 提示需要运行库
        在PC上用arm-linux-arm-gnueabi-readlf -d 文件名  (查看依赖库)
        把所有的库复制进去,运行成功
    3、QT程序不显示字符及文字
        没有fonts字库文件,复制fonts字库文件进去
        cp /udisk/fonts/ ./QtEmbedded-5.13-Arm/lib/ -r
    4、    Available platform plugins are: linuxfb, minimal, offscreen, vnc.(开启debug模式才有提示)  

    相比qt4,-qws 。在qt5下,默认有四种平台插件

    Qt5以后,删除了嵌入式的QWS(Qt windows system-Qt窗体系统)换成QPA(Qt Platform Abstration -Qt平台抽象) 
    在linux X11 下是xcb
    如果有OPENGL支持,那么选eglfs
    对于无硬件加速的设备, 选择linuxfb, 
    minimal 仅仅是让程序跑通,不起任何作用(看不到界面). 

当时还要看环境支持不支持
    所以我现在用的是 ./hello -platform linuxfb
    或者环境变量加上 QT_QPA_PLATFORM=linuxfb


相关资料:

QT5.7+tslib1.4库的交叉编译、移植到开发板ARM9上.......

 

2018-08-06 21:25:07 xbfct 阅读数 2295
  • Qt4移植开发板

    Linux环境图形用户界面应用程序开发,面向对象程序设计,Linux/Windows多平台图形应用开发,嵌入式设备图形界面开发。Qt绘图,事件机制,网络,数据库,嵌入式移植

    2880课时 0分钟 1024人学习 沈寒
    免费试看

学习嵌入式Linux也有一段时间了,最近在弄qt的移植,一个下午搞定(电脑编译太慢了  》==《  ),我来大概介绍下移植步骤:

一.  环境

linux主机:ubutun 16

开发板:mini2440

内核    : linux 3.4.2

busybox :1.20

qt版本:4.8.5

二.  移植步骤

移植QT的前提,首先你的开发板带有lcd驱动,触摸屏驱动并把这两个驱动编译进内核,这两个驱动可以参考韦老师去自己写,然后移植tslib,最后移植qt系统。总结下:

a.写lcd驱动(当然如果板子已经有就不用写了) 

b. .写触摸屏驱动(当然如果板子已经有就不用写了) 

c.移植tslib 

 d.移植QT

 

1.写lcd驱动,这个可以参考韦老师的驱动,但是有一点注意要注意

比如:lcd_regs->lcdcon3=(37<<19) | (239<<8) | (10<<0);     我刚开始设置不对,然后发现屏幕显示左移了。所以驱动要根据自己的显示屏去设置,看看手册,要调。

2.触摸屏驱动,这一部分完全可以参考韦老师的驱动,了解输入子系统,以及ADC误差消除。

3.tslib移植

如果你的linux服务器是比较高的版本(我的是ubutun16)就得安装几个库,这样才能配置编译tslib

# apt-get install autoconf(或autoconf2.13)
# apt-get install automake
# apt-get install libtool

网上下载 tslib-1.4.tar.gz,拷贝到linux服务器,

然后解压缩     tar xzf tslib-1.4.tar.gz   ,   进入解压后的目录 cd tslib   ,执行其内部脚本./autogen.sh  ,创建一个目录mkdir tmp,待会我们安装到这个目录tmp,  执行echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache 再执行./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp  。

如果你用的编译版本和我一样,编译器要修改一点东西:把   /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/linux/input.h  里的   #define EV_VERSION       0x010000改为   #define EV_VERSION     0x010001。不然编译后的tslib不能用。

现在make编译   然后make install  .安装结束后进入tmp目录  执行 cp * -rf   /开发板文件系统根目录(我的是/work/nfsroot/min_fs)。

在开发板串口控制台,修改/etc/ts.conf  (去掉#和空格): 

# module_raw input
改为:
module_raw input

修改/etc/profile文件添加下面几句话:

export TSLIB_ROOT=/                                  #刚刚我是把tmp的目录拷贝到开发板文件根目录 /
export TSLIB_TSDEVICE=/dev/event0         #  这个是我触摸屏上报事件对于的设备文件节点,根据实际情况填您自己的。
export QWS_MOUSE_PROTO=tslib:/dev/event0
export TSLIB_CALIBFILE=/etc/pointercal   
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf    
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  
export TSLIB_FBDEVICE=/dev/fb0      #这个是我lcd驱动对应的设备文件节点,根据实际情况填您自己的
export TSLIB_CONSOLEDEVICE=none   
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

输入ts_calibrate  ,就会进入校准界面,此时tslib就移植完成。

4.QT移植

下载QT4.8.5源码  qt-everywhere-opensource-src-5.6.0.tar 

把它放到linux服务器解压tar zxvf qt-everywhere-opensource-src-5.6.0.tar

进入刚解压的qt-everywhere-opensource-src-5.6.0目录 ,vi mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf  修改编译参数,不然可能编译报错

我的qmake.conf被修改为:

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)


QMAKE_INCDIR=/work/tools/tslib/tmp/include
QMAKE_LIBDIR=/work/tools/tslib/tmp/lib

# modifications to g++.conf
QMAKE_CC                = /work/tools/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc -lts
QMAKE_CXX               = /work/tools/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK              = /work/tools/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB        = /work/tools/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++ -lts

# modifications to linux.conf
QMAKE_AR                = /work/tools/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = /work/tools/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-objcopy
QMAKE_STRIP             = /work/tools/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-strip
QMAKE_CFLAGS           += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4 -mtune=arm920t
QMAKE_CXXFLAGS         += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4 -mtune=arm920t

然后配置./configure -prefix /usr/local/QT4.8.5-ARM-mini2440/ -force-pkg-config -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -depths 16,18,24 -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -qt-mouse-tslib -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit -no-qvfb -I/opt/tslib/tmp/include -L/opt/tslib/tmp/lib

其中/usr/local/QT4.8.5-ARM-mini2440/来表达编译linux服务器哪个目录下,

其中-I/opt/tslib/tmp/include,您刚刚不是在linux服务器编译了tslib  ,并且生成tmp目录吗,这里就是用这个tmp目录的子目录include来头文件。

其中-I/opt/tslib/tmp/lib,您刚刚不是在linux服务器编译了tslib  ,并且生成tmp目录吗,这里就是用这个tmp目录的子目录lib来编译。

然后编译sudo  make -j3     开3个线程 ,我话了2个小时,是个人电脑配置而定

安装  make install ,默认是按安装到  /usr/local/Trolltech/  ,进入目录  ,你会发现有以下文件:

bin/    demos/     examples/     imports/      include/      lib/          mkspecs/      plugins/      translations/

把plugins,imports,lib,mkspecs复制到开发板某个目录下,我是把它们拷贝到 /opt/qte目录,还要拷贝 demos目录到开发板根目录,这个目录有些QT例子,我们待会就用来测试

在开发板串口控制台,修改/etc/ profile 文件,我最后的内容如下:

#tslib

export TSLIB_ROOT=/
export TSLIB_TSDEVICE=/dev/event0
export QWS_MOUSE_PROTO=tslib:/dev/event0
export TSLIB_CALIBFILE=/etc/pointercal   
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf    
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  
export TSLIB_FBDEVICE=/dev/fb0   
export TSLIB_CONSOLEDEVICE=none   
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

#QT

export QTDIR=/opt/qte                              #刚才我把plugins,imports,lib,mkspecs拷贝到这的
export QPEDIR=/opt/qte                          
export PATH=$QTDIR/bin:$PATH
export QWS_DISPLAY=LinuxFb:/dev/fb0        #我显示屏对应的设备文件节点
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH

 

 

最后我们就看看我们的成果了:

进入demo目录,里面有很多测试程序  我就拿mainwindow程序来测试吧

进入mainwindows   ,执行  ./mainwindow -qws

就会看到结果了。

 

sss

  

 

 

 

QT就移植可以用了,喜欢我的博客,麻烦关注下,一起学习进步。我会把用到的资料发布出来。

 

 

     

 

 

 

 

 

 

 

 

 

移植qt5.3.1到arm

阅读数 27224