[EasyARM-MX283]速记Kernel + Busybox + Qt5.6 + tslib移植

/ 6评 / 0

移植过程其实不难,但是也不是特别简单.使用的平台是EasyARM IMX283A平台,他原来用的Qt4.7.3,其实我比较喜新厌旧,所以直接上Qt5.我们移植过程从上到下移植.
开发板:EasyARM iMX283A,128M NAND,64M RAM
系统环境:Ubuntu 16.04 LTS,32Bit,root login
软件包完整文件名和校验(使用shasum):

  1. d6e96fefb6f0fb8079f27468b9bf22d8dd96108e busybox-1.22.1.tar.bz2
  2. 触摸库:https://github.com/kergoth/tslib
  3. 08ff0db4df01d39732753dfc05bbb7ade4d8dcbb qt-everywhere-opensource-src-5.6.0.tar.xz
  4. 内核就是Zlg自带的,2.6内核,有点老.不过没所谓.

首先autogen要的工具是sudo apt-get install automake autogen autoconf libtool,下面尽量图记录.

然后获取tslib代码.

可见opt目录下没有文件的,我们也是把东西装到那里.

比较长的那个命令是这个:

./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/opt/tslib

然后一直make,make install下去.

取消注释打开开关:

然后开始编译Qt,这是大东西.要编辑这个文件.

红色是重点.

开始配置:

具体我用到的指令是:

./configure -prefix /opt/Qt5.6-arm -opensource -confirm-license -release -shared -xplatform linux-arm-gnueabi-g++ -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -tslib -no-opengl -no-sse2 -no-openssl -no-nis -no-cups -no-glib -no-dbus -no-xcb -no-eglfs -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -no-iconv -make libs -make examples -nomake tools -nomake tests -skip qt3d -skip qtcanvas3d -skip qtdoc -skip qtwayland -I/opt/tslib/include -L/opt/tslib/lib

然后make,接着make install吧,可以多线程的,不过我虚拟机设置了峰值,所以不快.

make过程各种花啊.

编译OK.

安装:

这样/opt下就有Qt的目录.

解压busybox源码.

第190行,指定一下平台:

第164行指定编译器:

不用编译成静态也不指定前缀.

指定安装路径:

然后保存配置,一路make,make install下去.安装后检查如图.

还要创建必要的目录.

mkdir dev etc lib proc sys tmp var

结果如图:

复制lib文件,毕竟我们是动态链接的.

参照第二句指令同理,复制etc文件.

此etc配置有个tty2,在/etc/inittab下,我们注释他或者删掉它.

fstab也要编辑,这样才能挂在其他文件系统,不然只有proc.

还有pts设备要创建 ,编辑/etc/init.d/rcS

刚才忘了缩减lib大小,这里缩减一下.

把tslib放进去.要先创建一个usr/lib然后分别放内容进去.

Qt也是同理的,我再创建了一个plugins目录.

文件系统73M,确实比Qt4大不小.

如果有不对,修正一下,大致目录结构.

当然啦,还没可以,还要配置一下环境变量.比如我的配置如下:

export TSLIB_PLUGINDIR=/usr/lib/ts/
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export LD_LIBRARY_PATH=/usr/lib
export QT_QWS_FONTDIR=/usr/lib/fonts
export QWS_MOUSE_PROTO=/dev/input/event0
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/qt-plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=/usr/lib/fonts

保存给/etc/profile.

然后启动qtcreator.新建一个Qt5的make.

编译器什么应该很好搞的定.

最后新建Device后才能新建Kit.

Kit如下:

当然ssh服务还没好,Device也无法访问啦,这个自己想想办法移植啦.新建工程:

指定工程位置文件名,目录需要预先创建.

下一步:

拖了个大按钮.

插入一个叫click的slot.

插入个提示:

然后报错了:

原来创建工程时候需要这么选择.

只好重新创建按钮,slot了.

代码还是这样:

顺利编译:

把程序复制到目标目录.

编译内核需要先复制内核文件.

修改Makefile,调整ARCH,CROSS_COMPILE.

整个文件系统就OK了,准备要打包.两种方法均可打包镜像,不同的镜像方式.

使用熟悉的方法,进行rootfs的烧写.执行ts_calibration后执行Qt程序,记得加参数.

./tslib-test -plugin tslib:/dev/input/event0

一切测试OK.

  1. 说道:

    配置QT的时候,到create qmake以后出错,提示没有找到g++。这是怎么回事?

  2. ZZW说道:

    ./tslib-test -plugin tslib:/dev/input/event0
    为什么要加参数-plugin tslib:/dev/input/event0。亲测,不然触摸失效
    MX283开发板自带的qt库编译的程序运行的时候不要加参数,是不是在哪里有特殊处理

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注