EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1引言
4 ]+ s) m c* B+ J通常情况下工程师在调试Qt程序时,需要频繁制作镜像烧录到核心板来测试Qt程序是否完善,这样的操作既费时又费力。这时我们可以通过QtCreator设备功能,定义设备后,在x86_64虚拟机上交叉编译qt程序,将程序远程部署到ARM64的机子上,然后远程调试,大大提高开发效率。 + J _. `0 I% N& Y5 K( m
3 ]3 P8 Z3 }) _4 `- O' {
2. 调试环境) v4 y$ c& I5 E
本文基于HD-T113-EVM评估板进行验证,HD-T113-EVM基于HD-T113-S3核心板设计,具备千兆网口、双路CAN-bus、2路RS-232、2路RS-485、LCD、4G/5G、WiFi、音频等,接口丰富,适用于工业现场应用需求,亦方便用户评估核心板及CPU的性能。 | VM16.1.0 + Ubuntu18.04 | 交叉编译器 | arm-linux-gnueabihf | Qt版本 | Qt5.12.12 | 核心板版本 | HD-T113-S3 v1.1 | 内核版本 | Linux kunos 5.4.61 #2 SMP PREEMPT Tue Dec 12 17:29:56 CST 2023 armv7l GNU/Linux | 底板版本 | HD-T113-EVM v1.2 | ( g- I- y4 j. i/ p" k8 b
2 C; I7 K" S1 R) C* q, g
2 P+ \: |3 N4 [/ x M, w# D' S# o
! L. b: R. a0 z9 @1 b4 q, O# T2.1 调试前准备$ R& l4 e+ g/ H/ i: @3 k& }
使win10主机、arm开发板和linux虚拟机处于同一网段且三者能互相ping通配置虚拟机ip。虚拟机需要按照以下截图步骤进行设置。 1 K( Y& `6 `. B/ [, e) b! w
6 [( _' x! L/ A# T2 z. N: D
2 I7 ]1 a' t/ J8 g- U6 L# J* W
5 o$ h( w. J$ c. m1 n
1 W7 D" i2 I; R2 B _% G
5 z& o& ^& X K0 i" S1 d
) v) {, E. y/ @. W
2.2 交叉编译环境设置
" m. ?5 K. j9 G, F+ B* X+ o! v) W
- W. a+ i% Q" \& _
% K, i- ?3 G: T/ ?8 _, K
/work/T113_Tina5.0/out/t113/hd-t113-evm-emmc/buildroot/buildroot/host/qt5/bin/qmake 0 X* g' a1 x: ?% J
* B0 h* k, e' @8 G5 V' F) {2.2.1 编译器2 d# b% i, w5 w' ]6 P
, X/ l9 C: |! H
, U) R& A( J* I, y/ e& P. b
GCC # l5 L/ p- o/ L7 _: \0 K
/work/T113_Tina5.0/out/t113/hd-t113-evm-emmc/buildroot/buildroot/host/bin/arm-linux-gnueabihf-gcc ' U6 a7 u4 ~/ ?
G++ " I# q3 \- p" v& _, q8 j
/work/T113_Tina5.0/out/t113/hd-t113-evm-emmc/buildroot/buildroot/host/bin/arm-linux-gnueabihf-g++ " N' U+ s# I. b
$ Z+ I6 l' K4 }, i+ i# P/ G/ C2.2.2 Kits
: m' p; g. ?4 U% c* \- O
& S. y( ^- M& r( T
; b5 Y' H- @# o# N0 r7 W 8 d$ f w5 ?. a* W0 _3 N# c
2.3 创建新设备5 X* I, K; t; Q' L
打开工具->选项->设备,添加新的Generic Linux Device设备。
1 j2 d% H5 O% N
! {1 h, B. e! Q2 T6 a# N
; P6 N( E6 ~' z8 P" ]/ q
2.3.1 测试成功
* H; ]5 ^1 h/ B5 P4 R
, v. s3 m3 ^" C% u3 Z
0 d1 j$ G, _* B! y$ l1 j9 k
' q' {4 p0 I& P% r2 ?7 ~
2.3.2 测试失败
4 g E: v+ }; ?+ A1 c1 - 错误描述SSH connectionfailure ) ~7 g1 o& z. o7 R, |: s) c
$ ~8 b1 r; G, g; Q% N# U# `/ u
错误分析No routeto tohst找不到主机 + @. j* @, X& i* {4 J# }* ]
解决方案检查虚拟机与开发板ip是否处于同一网段并且能互相ping通
3 W, j4 j9 j% D$ Y$ b* p* ]; o$ I* ~2 ]5 Q# g1 @ R
2 - 如虚拟机与开发板可以正常ping通但无法ssh登录开发板 % Q4 T& o+ e, p" m0 S4 z
0 b) M! v7 e6 p2 {, x0 |
原因:一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。
' s! e* B' Q- H7 [- n
$ Q; G* L8 G& a7 @- ^
有以下两个解决方案:
5 ~, [* ~5 U2 s9 A
1.删除修改known_hsots记录,重新登录,使known_hsots生成新的记录;
0 n6 S! M0 g6 w
2.修改配置文件“~/.ssh/config”,添加下两行, 1 J" G; @0 ]2 T( R
StrictHostKeyChecking no
( F8 ?# _% `4 f- F g8 h0 m
UserKnownHostsFile /dev/null 1 A; g/ O4 P% g! K5 f4 t9 a! X
重启服务器。
5 B% i% }* F; K* `' F" P8 n
) \3 t) [* S) ?6 I1 g) _
优缺点:
9 O! G: \. ?, F8 Z+ b
1.需要每次手动删除文件内容,一些自动化脚本的无法运行(在SSH登陆时失败),但是安全性高;
, ~: |/ _; M8 [2 S7 K. J: Y
2.SSH登陆时会忽略known_hsots的访问,但是安全性低;
, n7 X; R7 `- x5 |/ c. u
! B. M* L! x* L$ H
( E+ t) L- P$ |1 s9 I$ I2.4 设置Kits->Device
2 M9 E' x. J0 {" s9 s, t* t8 N% R
& T- C( X4 e# V. K+ X" z
1 A- d) w1 |, ]6 D- y& ^7 Z
* X1 y# @% f: ]( S4 B7 a2.5 部署应用
- @! c! S4 H9 z8 y2 @1 - 新建项目时,选择Kits为T113 ! L& N* O2 w: y& C# G% q6 W
: J3 L: f0 y9 P& T' {' w
2 - 编译应用
! E/ R. u$ }; i: J0 K$ w! C
/ H3 V& |) i) z. z4 y* U
3 - 部署应用到开发板 ; K8 y) z9 W: q# |
' K* ^1 H* s' e5 u3 v U) }4 J
4 - 提示
) Q1 X6 D! N1 B: d
部署成功后,可能会提示。kbcommon: ERROR: failed to add defaultinclude path /usr/share/X11/xkb 2 b, [% C/ t6 [
5–运行结果展示
X4 z4 }: f9 B |