准备
默认以下所列举的软件都已安装完毕,主机和目标机可以通讯。
- 主机平台:Ubuntu 16.04 LTS(x64)
- 目标平台:ARM40-A5D3
- 虚拟机:VMware® Workstation 12 Pro
- Qt版本:Qt4.8.7
- IDE版本:Qt Creator 3.4.2 (opensource)
- 编译工具链:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi
- 终端工具:putty
部署网络
- 设置VMware网络为“桥接模式”
- 查看Ubuntu IP地址
连接到ARM40-A5网络,并查看IP
- 查看NFS Server运行状态
默认NFS服务器搭建完成,参考“搭建NFS服务器”
$ sudo service nfs-server status
- 查看ARM40 IP地址
ARM40默认IP地址:192.168.6.5
putty默认已完成安装配置,参考“部署ARM40终端调试工具”
部署ARM40
- 连接NFS服务器
使用putty登录ARM40,在它的/home目录下创建nfs目录。
将Ubuntu上的/home/nfsroot目录挂载到ARM40的/home/nfs/目录下。
查看nfs目录,发现test目录,挂载成功。
root@ARM40:# cd /home
root@ARM40:# mkdir nfs
root@ARM40:# mount -t nfs -o nolock 192.168.6.10:/home/nfsroot /home/nfs
root@ARM40:# ls nfs
test
- ARM40文件部署
将Ubuntu上/opt目录下的gdbserver,tslib库,Qt4相关库拷贝到/home/nfsroot目录下,ARM40通过访问本地nfs目录就可以直接调用了。
$ cd /opt/
$ ls
>>
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi qte4.8.7 zlib-1.2.8
qt4.8.7 sqlite3
qtcreator-3.4.2 tslib
$ cd gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/
$ sudo cp -p gdbserver /home/nfsroot/
$ ls /home/nfsroot/
>>
gdbserver test
$ sudo tar cvf tslib.tar tslib/
$ sudo tar cvf qtelib.tar qte4.8.7/lib
$ sudo cp qtelib.tar tslib.tar /home/nfsroot/
$ ls /home/nfsroot/
>>
gdbserver qtelib.tar test tslib.tar
查看ARM40本地/home/nfs目录下,文件变化。
并将gdbserver,qtelib.tar,tslib.tar文件释放到本地/opt目录下。
root@ARM40:# cd /home/nfs/
root@ARM40:# chmod 755 ./*
root@ARM40:# mkdir -p /opt/gdbserver/bin/
root@ARM40:# cp -a gdbserver /opt/gdbserver/bin/
root@ARM40:# ls /opt/gdbserver/bin/
root@ARM40:# tar xvf qtelib.tar -C /opt/
root@ARM40:# tar xvf tslib.tar -C /opt/
root@ARM40:# ls /opt/
添加gdbserver的路径到ARM40系统环境变量中。
root@ARM40:# echo 'export PATH=$PATH:/opt/gdbserver/bin' >> /etc/profile
root@ARM40:# source /etc/profile
root@ARM40:# export
root@ARM40:# gdbserver --version
- ARM40 LCD部署
本教程使用的是4.3吋LCD,编辑S01user1lcd文件匹配相关尺寸LCD.
root@ARM40:# vi /etc/init.d/S01user1lcd
编辑profile文件,添加开启LCD背光的相关代码,保存退出,并使其生效。
root@ARM40:# vi /etc/profile
root@ARM40:# source /etc/profile
echo 115 > /sys/class/gpio/export
echo out > /sys/class/gpio/pioD19/direction
echo 1 > /sys/class/gpio/pioD19/value
- 部署ARM40 Qt运行环境
创建qtenv43.sh文件,添加Qt程序运行所需要的环境变量,并使其生效。
root@ARM40:# vi qtenv43.sh
root@ARM40:# source qtenv43.sh
root@ARM40:# export qtenv43.sh
#export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH
export QTDIR=/opt/qte4.8.7
export TS_ROOT=/opt/tslib
export PATH=$TS_ROOT/bin:$PATH
export LD_LIBRARY_PATH=/lib:$TS_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TS_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TS_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
#export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
export QWS_DISPLAY="LinuxFb:/dev/fb0"
export QWS_SIZE="480x272"
export QWS_MOUSE_PROTO="Tslib:/dev/input/event0"
#export QWS_KEYBOARD="LinuxInput:/dev/input/event0"
export QWS_KEYBOARD="TTY:/dev/tty0"
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
默认Qt库文件中,不包含中文语言包。将wqy_wmh.ttf复制到ARM40的相关路径下,就可以使得Qt支持中文。
root@ARM40:# cp wqy_wmh.ttf /opt/qte4.8.7/lib/fonts/
Qt远程调试
- 创建HelloWorld工程
默认Qt Creator部署完成,参考部署Qt Creator 3.4.2
创建helloworld Qt程序。
双击“界面文件”下的“mainwindow.ui”文件,创建UI界面。
添加相关代码,右击左下角“锤子”图标,开始编译工程。
- 调试HelloWorld工程
开始调试程序前,要在ARM40上运行gdbserver程序。
root@ARM40:# gdbserver 192.168.6.10:1234 helloworld -qws
每调试一次程序,都必须点击“Attach to Running Debug Server…”,否则就会连接不到ARM40;当然,gdbserver也要重新执行一次,有点鸡肋,不如打印来的直接。
下图中的参数不能有错,否则就会调试失败。
屏幕已经点亮,程序跑起来了。
至此,Qt4.8.7远程调试结束。