EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1引言5 m+ {# z7 l0 c" E3 l
通常情况下工程师在调试Qt程序时,需要频繁制作镜像烧录到核心板来测试Qt程序是否完善,这样的操作既费时又费力。这时我们可以通过QtCreator设备功能,定义设备后,在x86_64虚拟机上交叉编译qt程序,将程序远程部署到ARM64的机子上,然后远程调试,大大提高开发效率。 % j' X3 e" W) C/ E. _9 _
- y) r; Y& r) q' t* b9 g& v
2. 调试环境, i5 N9 \7 ~$ s& m& c- [& n
本文基于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 |
% y, t5 C$ `6 P7 X. J- Q( x& ]9 ]0 u, j4 Y$ _: N) D
! H6 p2 N$ x# K
! H; p1 v. e" i. l0 m+ V' i
1 K' p8 q! _8 m8 ^% i' p/ \* G2.1 调试前准备
1 s- j0 B% P2 ?' j. X% I使win10主机、arm开发板和linux虚拟机处于同一网段且三者能互相ping通配置虚拟机ip。虚拟机需要按照以下截图步骤进行设置。 # D! r7 m0 E9 R" W
# ~& I; `' \+ C
- }- I$ v, w! {9 s8 N& G, _# o- m- a( G
2 C ^) H& X# @# k) Y: \
; N/ P5 o; s; Y8 N5 _# H
1 c, }0 ]" ^7 U$ B4 ^8 O5 i
; { _0 I( T$ j+ M5 b/ M* i; u
2.2 交叉编译环境设置( N$ K0 z. a) R+ k5 n
- a# E/ R& E( q! \2 C
3 N7 e: ^4 d9 T0 p7 U
/work/T113_Tina5.0/out/t113/hd-t113-evm-emmc/buildroot/buildroot/host/qt5/bin/qmake ; E+ h4 O. Q& ~' q& ^# A
3 F3 G% e: x e# _. l( _9 `
2.2.1 编译器' Q0 J! f/ t- C& F& z2 l! ?0 ^5 s
+ L9 z' i1 {+ s" F
: e$ ]! P6 z* _; t0 T9 h2 g
GCC 4 n6 j! i1 ~. U% [& i7 ~: ?
/work/T113_Tina5.0/out/t113/hd-t113-evm-emmc/buildroot/buildroot/host/bin/arm-linux-gnueabihf-gcc 7 `* ^1 T' ?$ D; K
G++ 8 q; G9 O$ x" }8 P# L) N
/work/T113_Tina5.0/out/t113/hd-t113-evm-emmc/buildroot/buildroot/host/bin/arm-linux-gnueabihf-g++
. A' {& l( {5 J" Q! v |
4 Z2 s# K3 r5 M" ~2.2.2 Kits
3 O+ S0 j2 b/ n6 G- D! \- f6 t+ V5 e; y; x/ f- e% ~
( I# t: v* }+ F" P: _ {6 Z7 u0 M
% W! {( `! D( Y) [2.3 创建新设备2 `% N, \5 c! y) l; ~0 o3 e
打开工具->选项->设备,添加新的Generic Linux Device设备。 , O1 B9 u S# D' @4 E2 I+ t& [
# a3 Z) S- h0 h1 G5 J& r
6 I0 _6 a# Y: _8 U$ ~2.3.1 测试成功6 k% }% @, y0 l, V( @) G
g, X" Z! l6 C' B
8 T/ \6 Z5 _8 d. s& m# c/ B* O
6 i! X( _3 t5 N' ~7 T2.3.2 测试失败
4 x1 S2 m4 c( `2 o6 Z! Y1 - 错误描述SSH connectionfailure / {+ {- i: Q' W! x9 y) o$ Y
0 K* {7 o+ U9 }
错误分析No routeto tohst找不到主机 ; P! y+ ]* f9 a3 y, C6 T( h7 b
解决方案检查虚拟机与开发板ip是否处于同一网段并且能互相ping通 - C7 N5 U% i. m' a
3 o/ i# u) h2 e( A
2 - 如虚拟机与开发板可以正常ping通但无法ssh登录开发板 2 G! ]- P& k$ F: A
) x/ e# X/ h: V- O$ N- H
原因:一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。 ! E% S8 P0 x( w. y" X7 Y c
- K- u5 [5 {3 l0 J2 Z
有以下两个解决方案:
# Q* A3 {4 b+ q G
1.删除修改known_hsots记录,重新登录,使known_hsots生成新的记录; ' K) }+ z( S. p9 Y( H6 a: c# `
2.修改配置文件“~/.ssh/config”,添加下两行,
3 R: C5 x& I% M9 `8 R8 r' t1 T
StrictHostKeyChecking no
r8 M& a1 t( u
UserKnownHostsFile /dev/null
5 L' z4 O, X8 H( z1 A+ D
重启服务器。
6 h; V' z( I8 O) ?
+ C7 R% `. ?+ L2 o7 X. n
优缺点: 4 R+ M1 l/ c5 V6 P- {
1.需要每次手动删除文件内容,一些自动化脚本的无法运行(在SSH登陆时失败),但是安全性高; & m+ k5 ]2 b: l" S+ W7 R& s5 j9 d: R
2.SSH登陆时会忽略known_hsots的访问,但是安全性低;
0 }/ l( D# j9 \2 r* X$ ?0 f7 }0 O
% _# f9 e$ Z0 i2 G0 E* x
2 L5 ]5 X$ F8 y0 z
2.4 设置Kits->Device
+ P2 m2 j5 X1 J" U
" u; {. T( c! R; V* M0 y
. p! \7 p* F$ `. T) ^# ^
) T- |4 @- r" l4 P! d
2.5 部署应用4 G e. _5 z, |4 J& c; W/ h. V
1 - 新建项目时,选择Kits为T113 ! y8 n5 D2 j6 Y( b
! N# i3 K2 w3 Q B8 W+ B
2 - 编译应用
8 }, O/ v/ k3 f. H
. _4 S: F( j6 Y8 U' V3 P
3 - 部署应用到开发板 ' z' e+ O+ t3 n) J
& d, D7 B3 h) W, A7 O
4 - 提示
, E" d0 {7 {9 b/ k
部署成功后,可能会提示。kbcommon: ERROR: failed to add defaultinclude path /usr/share/X11/xkb
! E, I5 _+ i4 U/ M; j$ D
5–运行结果展示
- \2 b% U) E9 [% ? s- n2 ^ |