欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ARM40 Qt4.8.7远程调试

程序员文章站 2022-05-31 18:05:23
...

准备

默认以下所列举的软件都已安装完毕,主机和目标机可以通讯。

  • 主机平台: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网络为“桥接模式”

ARM40 Qt4.8.7远程调试

  • 查看Ubuntu IP地址
    连接到ARM40-A5网络,并查看IP

ARM40 Qt4.8.7远程调试

$ sudo service nfs-server status

ARM40 Qt4.8.7远程调试

ARM40 Qt4.8.7远程调试

部署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 Qt4.8.7远程调试

  • 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 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试

查看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/

ARM40 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试

添加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 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试

  • ARM40 LCD部署

本教程使用的是4.3吋LCD,编辑S01user1lcd文件匹配相关尺寸LCD.

root@ARM40:# vi /etc/init.d/S01user1lcd

ARM40 Qt4.8.7远程调试

编辑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 Qt4.8.7远程调试

  • 部署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

ARM40 Qt4.8.7远程调试

默认Qt库文件中,不包含中文语言包。将wqy_wmh.ttf复制到ARM40的相关路径下,就可以使得Qt支持中文。

root@ARM40:# cp wqy_wmh.ttf /opt/qte4.8.7/lib/fonts/

ARM40 Qt4.8.7远程调试

Qt远程调试

  • 创建HelloWorld工程

默认Qt Creator部署完成,参考部署Qt Creator 3.4.2
创建helloworld Qt程序。

ARM40 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试

双击“界面文件”下的“mainwindow.ui”文件,创建UI界面。

ARM40 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试

添加相关代码,右击左下角“锤子”图标,开始编译工程。

ARM40 Qt4.8.7远程调试

  • 调试HelloWorld工程

开始调试程序前,要在ARM40上运行gdbserver程序。

root@ARM40:# gdbserver 192.168.6.10:1234 helloworld -qws

ARM40 Qt4.8.7远程调试

每调试一次程序,都必须点击“Attach to Running Debug Server…”,否则就会连接不到ARM40;当然,gdbserver也要重新执行一次,有点鸡肋,不如打印来的直接。

ARM40 Qt4.8.7远程调试

下图中的参数不能有错,否则就会调试失败。

ARM40 Qt4.8.7远程调试
ARM40 Qt4.8.7远程调试

屏幕已经点亮,程序跑起来了。

ARM40 Qt4.8.7远程调试

至此,Qt4.8.7远程调试结束。

参考引用

相关标签: ARM40