1.2 通過(guò)網(wǎng)絡(luò)調(diào)試Qt工程
本小節(jié)使用led_control案例演示通過(guò)網(wǎng)絡(luò)調(diào)試Qt工程的方法。
(1)配置環(huán)境
點(diǎn)擊"Devices -> Devices -> Add",選擇"Generic Linux Device",然后點(diǎn)擊"Start Wizard"確認(rèn)。
圖?30
在彈出的界面中,將"The name to identify this configuration"修改為"RK3562-Device","The device's host name or IPaddress"修改為單板機(jī)IP地址,本次操作單板機(jī)IP地址為"192.168.13.30","The usernameto log into the device"修改為"root",然后點(diǎn)擊"Next >"。
圖?31
彈出配置密鑰界面,此處無(wú)需密鑰文件,配置為空即可,繼續(xù)點(diǎn)擊"Next >"。
圖?32
然后點(diǎn)擊Finish連接單板機(jī)。
圖?33
圖?34
再次查看Devices,可見(jiàn)添加一個(gè)了新設(shè)備。
圖?35
請(qǐng)打開(kāi)led_control工程源碼目錄的led_control.pro文件,并在文件中添加以下內(nèi)容。該內(nèi)容作用是將編譯生成的led_control可執(zhí)行程序安裝至單板機(jī)系統(tǒng)的"/root/"目錄下。
qnx: target.path = /root
else: unix:!android: target.path = /root
!isEmpty(target.path): INSTALLS += target
圖?36
點(diǎn)擊"Projects -> Run -> Add Deploy Step",選中"Deploy files via rsync",通過(guò)rsync部署文件。
圖?37
點(diǎn)擊"Projects -> Run",選中"System Environment",點(diǎn)擊"Fetch Device Environment"獲取設(shè)備環(huán)境。
圖?38
點(diǎn)擊調(diào)試按鈕。因目前未設(shè)置斷點(diǎn),所以無(wú)任何信息打印。
圖?39
(2)設(shè)置斷點(diǎn)
打開(kāi)led_control工程源碼目錄的mainwindow.cpp文件,點(diǎn)擊代碼行號(hào)的左側(cè)邊框欄即可設(shè)置斷點(diǎn),或直接按下F9進(jìn)行設(shè)置。斷點(diǎn)將以紅色實(shí)心圓點(diǎn)顯示,表示程序執(zhí)行到該行時(shí)將暫停。本次以分別在58、156處設(shè)置斷點(diǎn)為例進(jìn)行演示。
圖?40
圖?41
(3)啟動(dòng)調(diào)試
點(diǎn)擊工具欄的調(diào)試按鈕(或按F5),觀察程序運(yùn)行。程序會(huì)執(zhí)行到第一個(gè)斷點(diǎn)處暫停,此時(shí)可觀察變量的值,調(diào)用堆棧、線程狀態(tài)等信息。
圖?42
(4)調(diào)試操作
a)單步調(diào)試
使用單步跳過(guò)(F10)、單步進(jìn)入(F11),單步跳出(Shift+F11)按鍵來(lái)逐行執(zhí)行代碼,觀察程序的執(zhí)行流程。按下F11可以進(jìn)入函數(shù)里面進(jìn)行調(diào)試,按下"Shift+F11"可跳出。可見(jiàn)黃色箭頭已跳至UpdateLabelStatus函數(shù)。
圖?43
按下F10進(jìn)行調(diào)試,請(qǐng)重復(fù)按下F10,直到界面顯示即停下。
圖?44
圖?45
然后點(diǎn)擊led_control程序按鍵,可通過(guò)狀態(tài)欄查看信息。
b)查看變量和表達(dá)式
點(diǎn)擊led_control程序按鍵,可見(jiàn)按鈕被按下時(shí),LED的值為0。
圖?46
c)繼續(xù)執(zhí)行
目前斷點(diǎn)已是最后一個(gè),若還存在斷點(diǎn),則按下F10讓程序繼續(xù)執(zhí)行,直到遇到下一個(gè)斷點(diǎn)或者程序結(jié)束。
(5)調(diào)試結(jié)束
當(dāng)調(diào)試完后,點(diǎn)擊工具欄上的停止按鈕結(jié)束當(dāng)前會(huì)話(huà)。
圖?47
(6)分析調(diào)試結(jié)果
根據(jù)調(diào)試過(guò)程中觀察到的信息,分析程序的執(zhí)行流程和潛在問(wèn)題,并運(yùn)行相應(yīng)的修改和優(yōu)化。
1.3 基于命令行方式開(kāi)發(fā)
本章節(jié)以led_control案例為例,演示基于命令行方式開(kāi)發(fā)Qt程序的方法。
進(jìn)入led_control工程源碼目錄,配置交叉編譯工具鏈環(huán)境變量,執(zhí)行qmake命令生成Makefile文件,再執(zhí)行make命令編譯生成可在單板機(jī)上正常運(yùn)行的ARM端Qt程序鏡像,如下圖所示。
Host# source /home/tronlong/RK3562/environment
Host# qmake
Host# make
圖48
圖49
1.4 Qt程序自啟動(dòng)說(shuō)明
本章節(jié)以led_control案例為例,演示Qt程序自啟動(dòng)功能。
請(qǐng)將led_control案例bin目錄下可執(zhí)行程序led_control拷貝至單板機(jī)系統(tǒng)"/root/"目錄。單板機(jī)上電啟動(dòng)進(jìn)入系統(tǒng)后,執(zhí)行如下命令,在"/etc/default/"下新建qtapp文件,并添加以下內(nèi)容設(shè)置Qt程序運(yùn)行依賴(lài)環(huán)境變量。
Target# vi /etc/default/qtapp
圖50
添加內(nèi)容如下:
UNTIME_DIR=/run/user/0
DISPLAY=":0"
QT_ROOT=/usr/lib/qt-5.15.10
QT_QPA_FONTDIR=/usr/share/fonts
QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt-5.15.10/plugins
QT_PLUGIN_PATH=/usr/lib/qt-5.15.10/plugins
LD_LIBRARY_PATH=/usr/lib/qt-5.15.10/lib:/usr/lib/qt-5.15.10/plugins/platform
圖51
執(zhí)行如下命令,在"/etc/systemd/system/"目錄下新建qtapp.service文件,并添加以下內(nèi)容設(shè)置Qt程序自啟動(dòng)服務(wù)依賴(lài)環(huán)境以及Qt程序的路徑。
Target# vi/etc/systemd/system/qtapp.service
圖52
添加內(nèi)容如下:
[Unit]
Description=Qt App Service
Requisite=display-manager.service
After=display-manager.service
[Service]
EnvironmentFile=-/etc/default/qtapp
ExecStart=/root/led_control
Restart=always
[Install]
WantedBy=multi-user.target
圖53
執(zhí)行如下命令,開(kāi)啟Qt程序自啟動(dòng),并重啟單板機(jī)。
Target# systemctl enable qtapp
Target# reboot
圖54
單板機(jī)重啟后,Qt程序?qū)?huì)自啟動(dòng)。Qt程序運(yùn)行成功后,可觀察到LVDS顯示屏顯示LED控制界面,可通過(guò)點(diǎn)擊下方的按鈕控制LED的亮滅。如下圖所示。
圖55
如需取消單板機(jī)Qt程序自啟動(dòng),請(qǐng)執(zhí)行如下命令。
Target# systemctl disable qtapp
圖56
由于篇幅過(guò)長(zhǎng)等原因,部分內(nèi)容均不逐一展示,如需獲取完整版詳細(xì)資料,請(qǐng)關(guān)注Tronlong創(chuàng)龍科技微信公眾號(hào)或官網(wǎng),或者評(píng)論區(qū)留言,感謝您的支持!
審核編輯 黃宇
-
單板機(jī)
+關(guān)注
關(guān)注
1文章
42瀏覽量
18884 -
LVGL
+關(guān)注
關(guān)注
3文章
126瀏覽量
4611 -
RK3562
+關(guān)注
關(guān)注
0文章
100瀏覽量
718
發(fā)布評(píng)論請(qǐng)先 登錄
RK3562 單板機(jī) Linux-RT 系統(tǒng)開(kāi)發(fā)指南:內(nèi)核配置、實(shí)時(shí)性?xún)?yōu)化與案例詳解
單片機(jī)與單板機(jī)的區(qū)別
SBC8100單板機(jī)設(shè)計(jì)及使用指南
基于Qt4的圖形用戶(hù)界面程序設(shè)計(jì)
RK3562開(kāi)發(fā)板:安卓Linux開(kāi)發(fā)從入門(mén)到精通(二)
新一代低價(jià)開(kāi)發(fā)板芯片RK3562來(lái)啦! — 觸覺(jué)智能RK3562開(kāi)發(fā)板
嵌入式開(kāi)發(fā)必備-RK3562演示Linux常用系統(tǒng)查詢(xún)命令(下)
觸覺(jué)智能RK3562開(kāi)發(fā)板新版強(qiáng)勢(shì)亮相
RK3562單板機(jī)系統(tǒng)使用與開(kāi)發(fā)手冊(cè):基礎(chǔ)操作、升級(jí)部署與工具鏈配置(一)
3562 單板機(jī) Linux 系統(tǒng)固化完全指南:從 SD 卡啟動(dòng)到 eMMC 永久部署
RK3562 單板機(jī)系統(tǒng)開(kāi)發(fā)完全手冊(cè):U-Boot/Kernel/Rootfs 開(kāi)發(fā)與性能優(yōu)化
RK3562 單板機(jī) Linux 應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)手冊(cè):LED/CAN/TCP/UART 案例與 Python 開(kāi)發(fā)(二)
RK3562 單板機(jī)圖形用戶(hù)界面開(kāi)發(fā)完全手冊(cè):Qt Creator 配置與 LVGL 案例詳解(一)
RK3562 單板機(jī)圖形用戶(hù)界面開(kāi)發(fā)完全手冊(cè):Qt Creator 配置與 LVGL 案例詳解(二)
評(píng)論