搭建Tiny4412的Qt交叉开发调试环境

前言

最近在学习Tiny4412下的Qt编程。第一步,首先得搭建好交叉开发调试环境。几经折腾之后,总算基本完成。兹整理一下期间的笔记,发到博客上,作为总结。也希望我入过的坑,其他人避免再入 。

另外提一点(也是事后查网才了解到的),目前业界流行Yocto/OpenEmbedded框架,很多厂商使用这个框架来构建分发开发板的BSP(包括kernel,rootfs,toolchain、gdb、库以及qt的库等),用户可以直接基于该BSP来搭建Qt交叉开发环境,从而免去自己搭建环境时所遇到的诸如依赖库缺失、toolchain版本不匹配等问题,节约了不必要的时间成本。相关案例非常多,“参考资料2~5”里列了几个例子(都未经验证,仅供参考)。

不过,Tiny4412好像还没有提供yocto的BSP,所以目前还没法体验,但Yocto估计是大趋势,有空要学习一下。

一、实验环境

1.1 虚拟机环境

a) Vmware版本:Vmware Workstation 12.5.7

b) Ubuntu版本:Ubuntu 16.04.4 LTS(我用的是百问网JZ2440资料光盘_20180516中的版本,地址是:http://wiki.100ask.org/Download,然后找到:002_JZ2440资料光盘_20180516(免费) )

c) 内核版本:4.13.0

d) gcc版本:5.4.0

e) toolchain版本:

arm-linux-gcc 4.3.2

1.2 开发板环境

1.2.1 硬件

开发板:友善之臂tiny4412,底板:Tiny4412/Super4412SDK 1611,核心板:Tiny4412 版本号1412

1.2.2 软件

a) 内核版本(tiny4412光盘自带): linux-3.5-20170221

b) 根文件系统(tiny4412光盘自带): rootfs_qtopia_qt4-20160514

二、具体过程

2.1 编译、安装qte-4.8.5

注:tiny4412的光盘里有已经编译好的target-qte-4.8.5-to-hostpc.tgz,但由于我的Ubuntu版本和友善在编译target-qte-4.8.5-to-hostpc.tgz时所使用的Ubuntu版本不一样,所以解压后,无法直接在qt-creator中使用(在点击build按钮后会报:The Qt version is invalid. Could not determine the path to the binaries of the Qt installation, maybe the qmake path is wrong?),只能从头开始编译。

把arm-qte-4.8.5-20131207.tar.gz 拷贝到开发机里,然后在mobaXterm串口终端执行以下命令:

tar xzvf arm-qte-4.8.5-20131207.tar.gz

cd arm-qte-4.8.5

./build.sh

注:第一次执行./build.sh时,报错:tslib functionality test failed。但重新执行./build.sh后,却又没再报这个错。原因不明,待查。

2.2 下载、编译、安装gdb-7.10,然后编译安装gdbserver

为什么选择这个版本?因为以前学韦东山嵌入式Linux培训三期摄像头监控项目时,曾经用gdb-7.10成功搭建过远程调试开发板的环境(其实那时选择7.10版本也是有点凭感觉Smile)。

2.2.1 下载、编译、安装gdb-7.10(下载地址:http://ftp.gnu.org/gnu/gdb/gdb-7.10.tar.gz

把gdb-7.10.tar.gz下载到开发机里(假设下载到/home/book/Downloads/),然后在mobaXterm串口终端执行以下命令:

tar xzvf gdb-7.10.tar.gz

cd /home/book/Downloads/gdb-7.10

mkdir build && cd build

../configure --target=arm-linux --prefix=/usr/local/arm-gdb-7.10 --with-python

注:可能还要加:--with-expat --includedir=/home/book/Downloads/expat-2.2.9/bin/include --libdir=/home/book/Downloads/expat-2.2.9/bin/lib,详见下文注释

make

make install

export PATH=$PATH:/usr/local/arm-gdb-7.10

(可以把这句话添加到/etc/environment或者~./bashrc,以保存对$PATH环境变量的修改)

注1:在对gdb-7.10进行configure时,要加入 --with-python选项(可能还要先下载安装python2.7-dev),否则在qt-creator里启动调试时,可能会报错:

        image

注2:如果configure加入--with-python选项后,报:

         checking for python2.7... no

         configure: error: python is missing or unusable

         解决办法是:先下载安装python2.7-dev:apt-get install python2.7-dev,安装完成后,可以执行 dpkg -l | grep python2.7-dev来验证是否安装成功        

注3:编译安装完gdb-7.10后,如果在qt-creator里启动调试时,在Application Output里报错:warning: Can not parse XML target description; XML support 
         was disabled at compile time,则要先下载、编译、安装expat(http://sourceforge.net/projects/expat/):

         ./configure --prefix=$PWD/bin

          mkdir bin

          make && make install

          然后重新编译、安装gdb-7.10(在configure时,还要加入以下选项:--with-expat --includedir=/home/book/Downloads/expat-2.2.9/bin/include   
          --libdir=/home/book/Downloads/expat-2.2.9/bin/lib –v)

注4:如果接下来执行make时报错:

         checking for libexpat... (cached) no

         configure: error: expat is missing or unusable

         解决办法是:删除gdb-7.10整个文件夹,然后重新解压gdb-7.10.tar.gz,编译、安装。

         原因是:

         为了加快速度,configure会把上次的检查结果作为一个cache变量(名字是ac_cv_libexpat)缓存到gdb/configure.cache中,而本次configure时,会先从

         这个文件中查该cache变量,如果找不到,才会真正去检查libexpat这个库是否存在。所以,应该清除这个cache文件,强制configure去执行真正的检查。

2.2.2 编译、安装gdbserver

在mobaXterm串口终端执行以下命令:

cd /home/book/Downloads/gdb-7.10/gdb/gdbserver

mkdir build && cd build

../configure --target=arm-linux  -host=arm-linux

make CC=arm-linux-gcc

完成之后,会在build目录下生成gdbserver可执行文件。把它拷贝到开发板的/usr/bin里(可以用ftp或者nfs,过程略):

2.3 把根文件系统拷贝解压到开发机上

把Tiny4412随机光盘中的rootfs_qtopia_qt4-20160514.tgz拷到开发机上(假设拷贝到/home/book/Downloads/friendly_arm/tiny4412/linux_rootfs/),然后执行:

tar xzvf rootfs_qtopia_qt4-20160514.tgz

2.4 下载、安装Qt-5.9.0(下载地址:https://download.qt.io/archive/qt/5.9/5.9.0/qt-opensource-linux-x64-5.9.0.run

为什么选择这个版本?因为网上有很多成功案例,用这个版本搭建了交叉调试平台,有经验可借鉴。

把qt-opensource-linux-x64-5.9.0.run下载到开发机里,然后在mobaXterm串口终端执行以下命令:

chmod +x qt-opensource-linux-x64-5.9.0.run

./qt-opensource-linux-x64-5.9.0.run

然后按照安装向导的提示,一步步做即可(注:在“选择组件”这一步,把Qt5.9.0下面的所有组件都选上,保险起见)

2.5 打开qt-creator,进入Tools==>Options进行配置

2.5.1 添加device

image

image

image

image

image

image

image

image

image

2.5.2 添加Qt version

image

2.5.3 添加compiler

image

2.5.4 添加debugger

image

2.5.5 添加kit

image

2.5.6 添加环境变量,以支持触摸屏操作

方法1)修改开发板上的/etc/profile,(仿照/bin/setqt4env的内容)添加以下环境变量:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

export QWS_DISPLAY=:1

export QWS_KEYBOARD=TTY:/dev/tty1

export QWS_MOUSE_PROTO="Tslib MouseMan:/dev/input/mice"

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=/etc/ts-mt.conf

export TSLIB_PLUGINDIR=/usr/lib/ts

export TSLIB_TSDEVICE=/dev/touchscreen-1wire

方法2)在开发机的qt-creator里,进入project==>Build&Run==>tiny4412==>Run==>Base environment for this run configuration,添加上述环境变量:

image

2.5.7 修改开发板上的/usr/local/etc/sshd_config,以解决debug时报:“SFTP initialization failed: Server could not start SFTP subsystem”的问题

Subsystem sftp /usr/libexec/sftp-server

改为:

Subsystem sftp /usr/local/libexec/sftp-server

2.6 qt-creator新建一个widget测试程序test,然后做一些配置

2.6.1 修改“test.pro”文件,加入以下两行:

target.path = /opt   #为程序指定在开发板上的安装路径

INSTALLS += target

image

2.6.2 进入Project==>Build&Run==>Tiny4412==>Run Settings

image

至此,Tiny4412的Qt开发调试环境总算搭建完成,效果图如下:

1)启动调试:

image

2)停止调试:

image

三、参考资料

1)《Tiny4412用户手册》

2)QtCreator+Arm开发和联机调试

3)imx6开发环境搭建之yocto全记录(L4.1.15_2.0.0)

4)QTCreator + gdbserver 实现远程调试

5)在 NXP iMX8 上进行 Qt5移植和开发

猜你喜欢

转载自www.cnblogs.com/normalmanzhao2003/p/12445331.html
今日推荐