陈工-创龙科技 发表于 2026-4-23 11:18:18

RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(二)

1.2 通过网络调试Qt工程本小节使用led_control案例演示通过网络调试Qt工程的方法。(1)配置环境点击" Devices -> Devices -> Add",选择"Generic Linux Device",然后点击"Start Wizard"确认。
https://file1.elecfans.com/web3/M00/55/DA/wKgZPGnpiNCANCRLAAFvtleXHdo991.png
在弹出的界面中,将"The name to identify this configuration"修改为"RK3576-Device","The device's host name or IP address"修改为单板机IP地址,本次操作单板机IP地址为"192.168.13.49","The username to log into the device"修改为"root",然后点击"Next >"。https://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpiXmAPLkRAAB9gKMiWu4765.png
弹出配置密钥界面,此处无需密钥文件,配置为空即可,继续点击"Next >"。
https://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpiYCABh0wAADIE-lbAJk674.png
然后点击Finish连接单板机。https://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpiYmAXdNyAABlVyZIpbQ712.png

https://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpiYmARJ-rAACTHaFnMcE054.png
再次查看Devices,可见添加一个了新设备。https://file1.elecfans.com/web3/M00/55/D9/wKgZO2npiY-APW_mAAGyhgZVVPA588.png
请打开led_control工程源码目录的led_control.pro文件,并在文件中添加以下内容。该内容作用是将编译生成的led_control可执行程序安装至单板机系统的"/root/"目录下。
qnx: target.path = /rootelse: unix:!android: target.path = /root!isEmpty(target.path): INSTALLS += targethttps://file1.elecfans.com/web3/M00/55/D9/wKgZO2npiZWAClwvAAHvy3TvIfU857.png
点击"Projects -> Run -> Add Deploy Step",选中"Deploy files via rsync",通过rsync部署文件。https://file1.elecfans.com/web3/M00/55/D9/wKgZO2npiZqALt-PAALfQ9uh1Xo804.png
点击"Projects -> Run",选中"Environment",点击"Fetch Device Environment"获取设备环境。https://file1.elecfans.com/web3/M00/55/D9/wKgZO2npiaWABXDXAAJfnmck4Ww195.png
点击调试按钮。因目前未设置断点,所以无任何信息打印。https://file1.elecfans.com/web3/M00/55/D9/wKgZO2npiayAAWT3AAK5qEignxA888.png
(2)设置断点打开led_control工程源码目录的mainwindow.cpp文件,点击代码行号的左侧边框栏即可设置断点,或直接按下F9进行设置。断点将以红色实心圆点显示,表示程序执行到该行时将暂停。本次以分别在58、156处设置断点为例进行演示。https://file1.elecfans.com/web3/M00/55/D9/wKgZO2npibaATGWXAAApO_ryLfM379.png
https://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpibaAQIgaAAAdgl-RCso367.png
(3)启动调试点击工具栏的调试按钮(或按F5),观察程序运行。程序会执行到第一个断点处暂停,此时可观察变量的值,调用堆栈、线程状态等信息。
https://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpicGAZEIyAAOvvAqfZG8219.png
(4)调试操作a) 单步调试使用单步跳过(F10)、单步进入(F11),单步跳出(Shift+F11)按键来逐行执行代码,观察程序的执行流程。按下F11可以进入函数里面进行调试,按下"Shift + F11"可跳出。可见**色箭头已跳至对应函数。https://file1.elecfans.com/web3/M00/55/D9/wKgZO2npicKAd8W4AAN1xAH4cB0990.png
按下F10进行调试,请重复按下F10,直到界面显示即停下。https://file1.elecfans.com/web3/M00/55/D9/wKgZO2npicqANZ_6AAKV4-q97kQ359.png
https://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpicuAKwspAFj-Xfc8nyM128.png
然后点击led_control程序按键,可通过状态栏查看信息。b)查看变量和表达式点击led_control程序按键,可见按钮被按下时,LED的值为0。https://file1.elecfans.com/web3/M00/55/D9/wKgZO2npidOAN_i1AAN3pFobkC0320.png
c)继续执行目前断点已是最后一个,若还存在断点,则按下F10让程序继续执行,直到遇到下一个断点或者程序结束。(5)调试结束当调试完后,点击工具栏上的停止按钮结束当前会话。https://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpidmAJSBkAAN6P0-4p_0265.png
(6)分析调试结果根据调试过程中观察到的信息,分析程序的执行流程和潜在问题,并运行相应的修改和优化。1.3基于命令行方式开发本章节以led_control案例为例,演示基于命令行方式开发Qt程序的方法。进入led_control工程源码目录,配置交叉编译工具链环境变量,执行qmake命令生成Makefile文件,再执行make命令编译生成可在单板机上正常运行的ARM端Qt程序镜像,如下图所示。Host# source /home/tronlong/RK3576/environmentHost# qmakeHost# makehttps://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpid6AXA3JAAPSbFac6nA488.png
1.4 Qt程序自启动说明本章节以led_control案例为例,演示Qt程序自启动功能。请将led_control案例bin目录下可执行程序led_control拷贝至单板机系统"/root/"目录。单板机上电启动进入系统后,执行如下命令,在"/etc/default/"下新建qtapp文件,并添加以下内容设置Qt程序运行依赖环境变量。Target# vi /etc/default/qtapphttps://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpieOATPUpAAAE2tsC4ao659.png
添加内容如下:
UNTIME_DIR=/run/user/0DISPLAY=":0"QT_ROOT=/usr/lib/qt-5.15.11QT_QPA_FONTDIR=/usr/share/fontsQT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt-5.15.11/pluginsQT_PLUGIN_PATH=/usr/lib/qt-5.15.11/pluginsLD_LIBRARY_PATH=/usr/lib/qt-5.15.11/lib:/usr/lib/qt-5.15.11/plugins/platformhttps://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpieqAXi-iAAATn7OGoY4211.png
执行如下命令,在"/etc/systemd/system/"目录下新建qtapp.service文件,并添加以下内容设置Qt程序自启动服务依赖环境以及Qt程序的路径。Target# vi/etc/systemd/system/qtapp.servicehttps://file1.elecfans.com/web3/M00/55/D9/wKgZO2npie-ACjQJAAAFv2Pijdo536.png
添加内容如下:
Description=Qt App ServiceRequisite=display-manager.serviceAfter=display-manager.service
EnvironmentFile=-/etc/default/qtappExecStart=/root/led_controlRestart=always
WantedBy=multi-user.targethttps://file1.elecfans.com/web3/M00/55/D9/wKgZO2npifOAVXh9AAAYb97Dljo276.png
执行如下命令,开启Qt程序自启动,并重启单板机。Target# systemctl enable qtappTarget# reboothttps://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpifmAQ67_AAAOlN6U_DE236.png
单板机重启后,Qt程序将会自启动。Qt程序运行成功后,可观察到HDMI显示屏显示LED控制界面,可通过点击下方的按钮控制LED的亮灭。如下图所示。https://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpigGAZajEABjcaPBSwSU719.png
如需取消单板机Qt程序自启动,请执行如下命令。Target# systemctl disable qtapphttps://file1.elecfans.com/web3/M00/55/DB/wKgZPGnpigeAYm57AAAMGSIjbOc921.png
页: [1]
查看完整版本: RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(二)

Baidu
map