您现在的位置是:首页 >技术杂谈 >【RP-RV1126】Ubuntu上配置Buildroot Qt 开发板远程开发调试环境(SSH)网站首页技术杂谈

【RP-RV1126】Ubuntu上配置Buildroot Qt 开发板远程开发调试环境(SSH)

liefyuan 2023-06-03 00:00:03
简介【RP-RV1126】Ubuntu上配置Buildroot Qt 开发板远程开发调试环境(SSH)


描述一个场景,在ubuntu上的qtcreator上编写了一个带UI的程序,点击左下角的运行,就可以在开发板上看到效果!

以下都是为了实现这个场景。

一、前提

  • Buildroot添加了qt5并且成功的编译出来了
  • Buildroot文件系统需要有ssh(默认有)
  • Buildroot文件系统需要有账号密码
  • 开发板需要联网,并且与Ubuntu虚拟机在同一个网段
  • Buildroot文件系统在构建的时候需要将rsync打开

我的RV1126的SDK上面有两个交叉编译器
sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf是用于编译上层应用的
sdk/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf是用于编译uboot和linux kernel的

需要的路径信息:

  • 交叉编译器之gcc的路径:/home/liefyuan/rv1126/rp_rv1126_sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
  • 交叉编译器之g++的路径:/home/liefyuan/rv1126/rp_rv1126_sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
  • Qt交叉编译器之qmake的路径:sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate/host/bin/qmake

二、基础设置建设

Buildroot编译Qt5

配置SSH

Buildroot 系统默认是支持 ssh 的,用户名是 root,密码是 rockchip。

Buildroot文件系统添加账号密码

首先对开发板进行上电,开发板正常启动后,使用命令“vi /etc/inittab”对文件进行修改,如下图所示:
在这里插入图片描述

# Startup the system
::sysinit:/bin/mount -t proc proc /proc
::sysinit:/bin/mount -o remount,rw /
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mkdir -p /dev/shm
::sysinit:/bin/mount -a 2>/dev/null
::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
#::respawn:-/bin/sh
::sysinit:/etc/init.d/rcS

# Put a getty on the serial port
ttyFIQ0::respawn:/sbin/getty -L  ttyFIQ0 0 vt100 # GENERIC_SERIAL

# Stuff to do for the 3-finger salute
#::ctrlaltdel:/sbin/reboot

# Stuff to do before rebooting
::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
  • 用户名是:root
  • 密码是:rockchip

开发板联网

插上网线,编辑文件vi /etc/init.d/rcS最后一行添加

udhcpc -i eth0

这样就可以使用DHCP动态分配IP地址了。

使用命令ifconfig查看以确保与虚拟机ubuntu在同一个网段。

Buildroot文件系统构建时打开rsync功能

在这里插入图片描述编译的时候出错了!

2023-04-21T01:05:46 gzip: /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/dl/popt-1.16.tar.gz: not in gzip format
2023-04-21T01:05:46 tar: This does not look like a tar archive
2023-04-21T01:05:46 tar: Exiting with failure status due to previous errors
2023-04-21T01:05:46 package/pkg-generic.mk:159: recipe for target '/home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/popt-1.16/.stamp_extracted' failed
2023-04-21T01:05:46 make[1]: *** [/home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/popt-1.16/.stamp_extracted] Error 2
2023-04-21T01:05:46 /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate/Makefile:16: recipe for target '_all' failed
2023-04-21T01:05:46 make: *** [_all] Error 2
2023-04-21T22:17:47 umask 0022 && make -C /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot O=/home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate
2023-04-21T22:17:53 /usr/bin/make -j1 O=/home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate HOSTCC="/usr/bin/gcc" HOSTCXX="/usr/bin/g++" silentoldconfig
2023-04-21T22:17:53 GEN     /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate/Makefile
2023-04-21T22:17:53 >>> popt 1.16 Extracting
2023-04-21T22:17:53 gzip -d -c /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/dl/popt-1.16.tar.gz | tar --strip-components=1 -C /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/popt-1.16   -xf -
2023-04-21T22:17:53 
2023-04-21T22:17:53 gzip: /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/dl/popt-1.16.tar.gz: not in gzip format
2023-04-21T22:17:53 tar: This does not look like a tar archive
2023-04-21T22:17:53 tar: Exiting with failure status due to previous errors
2023-04-21T22:17:53 package/pkg-generic.mk:159: recipe for target '/home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/popt-1.16/.stamp_extracted' failed
2023-04-21T22:17:53 make[1]: *** [/home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/popt-1.16/.stamp_extracted] Error 2
2023-04-21T22:17:53 /home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate/Makefile:16: recipe for target '_all' failed
2023-04-21T22:17:53 make: *** [_all] Error 2
Command exited with non-zero status 1
you take 0:10.18 to build builroot
ERROR: Running build_buildroot failed!
ERROR: exit code 1 from line 557:
    /usr/bin/time -f "you take %E to build builroot" $COMMON_DIR/mk-buildroot.sh $BOARD_CONFIG

通过查看这个文件是有问题的,popt-1.16.tar.gz格式都不对!

~/rv1126/rp_rv1126_sdk/buildroot/dl$ file popt-1.16.tar.gz 
popt-1.16.tar.gz: HTML document, UTF-8 Unicode text, with very long lines

文件系统里面的文件是错误的,需要替换下载地址:

把这个地址替换进去:http://ftp.rpm.org/popt/releases/historical/popt-1.16.tar.gz
替换:buildroot/package/popt/popt.mk文件里面的下载地址!
如下:

################################################################################
#
# popt
#
################################################################################

POPT_VERSION = 1.16
POPT_SITE = http://ftp.rpm.org/popt/releases/historical/popt-1.16.tar.gz
POPT_INSTALL_STAGING = YES
POPT_LICENSE = MIT
POPT_LICENSE_FILES = COPYING
POPT_AUTORECONF = YES
POPT_GETTEXTIZE = YES
POPT_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)

POPT_CONF_ENV = ac_cv_va_copy=yes

ifeq ($(BR2_PACKAGE_LIBICONV),y)
POPT_CONF_ENV += am_cv_lib_iconv=yes
POPT_CONF_OPTS += --with-libiconv-prefix=$(STAGING_DIR)/usr
POPT_DEPENDENCIES += libiconv
endif

$(eval $(autotools-package))
$(eval $(host-autotools-package))

在地址:http://ftp.rpm.org/popt/releases/historical/下载源文件

在这里插入图片描述

为了快速,直接下载源文件拷贝到sdk/buildroot/dl目录下

$ cp popt-1.16.tar.gz ./buildroot/dl/

安装好rsync的文件系统可以在命令行里这样:

[root@RV1126_RV1109:/]# rsync
rsync  version 3.1.3  protocol version 31
Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
    no socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, no ACLs, xattrs, iconv, symtimes, prealloc

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

三、QtCreator配置

3.1 配置Qt交叉编译套件(Kits)

配置Kits里面的交叉编译器

打开 Ubuntu 的 Qtcreator,依次点击“工具”,“选项”,如下图所示:
在这里插入图片描述

在弹出的对话框中依次点击“kits”,“编译器”,“添加”,“GCC”,“C++”,如下图所示:
在这里插入图片描述在弹出的界面中依次填写名称,编译器路径,编译器路径为 Buildroot 交叉编译器路径,点击“浏览”,根据实际情况填写“/home/liefyuan/rv1126/rp_rv1126_sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc”,填写完后点击“apply”,如下图所示
在这里插入图片描述
然后点击“添加”,“GCC”,“ C”,依照上面添加gcc的步骤添加 g++ 的交叉编译工具。

最后结果如下:
在这里插入图片描述

配置Kits里面的qmake工具

qmake工具地址是:/home/liefyuan/rv1126/rp_rv1126_sdk/buildroot/output/rockchip_rv1126_rv1109_facial_gate/host/bin/qmake
在这里插入图片描述

最后配置Kits

在这里插入图片描述

3.2 配置远程部署设备

打开工具栏Tools里面的Options,如下图:
在这里插入图片描述点击Devices添加设备,如下图:
在这里插入图片描述点击选择Generic Linux Device然后点击start Wizard按钮,如下图:
在这里插入图片描述下一个界面填下如下信息:
在这里插入图片描述创建私钥秘钥然后部署,地址一般默认是:/home/liefyuan/.ssh/
点击Create New Key Pair按钮来创建私钥公钥
在这里插入图片描述选择如下图配置:
在这里插入图片描述生成以后,点击Deplay Public Key按钮进行部署公钥。
在这里插入图片描述这时候弹出对话框,输入开发板的用户密码:rockchip
在这里插入图片描述部署完成如下:
在这里插入图片描述还可以点击Test进行测试
在这里插入图片描述最后记得点击Apply按钮进行保存设置。

最后在Kits里面,根据下图选择好运行的设备。在这里插入图片描述
运行左下角的点击:
在这里插入图片描述

在这里插入图片描述然后开发板上就运行起来了。

在这里插入图片描述

3.3 如果配置设备失败

在目录:/home/liefyuan/.ssh/如果在私钥、公钥配置好的情况下有三个文件:

  • qtc_id
  • qtc_id.pub
  • known_hosts

配置设备失败,可以删除qtc_id和qtc_id.pub文件,清空known_hosts文件里面的内容。
然后重新生成秘钥私钥,配置ssh。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。