前言
上一篇,移植應用前的通訊接口工作和全屏工作都已經完成了。本篇移植開發的商業應用。
(略),參照《RK3568開發筆記(八):開發板燒寫buildroot固件(支持hdmi屏),搭建Qt交叉編譯開發環境,編譯一個Demo,目標板運行Demo測試》
交叉編譯好了應用,放過去,跑起來沒問題,也可以正常顯示,但是一旦操作就出現被默認的qt程序佔用。
這是默認的應用:
這是正常全屏應用:
這是被佔用之後的(點擊任何地方,讓應用獲取焦點就這樣了):
所以,這裏理論上將原來的qt應用停掉,用我們的應用作爲啓動應用就可以了。
一般linux系統大家會默認都在rcS裏面加入一個界面啓動腳本,界面啓動腳本也在/etc/inid.d的S???裏面。
首先我們先看下這個桌面進程是哪一個,先top,看到與i個QLauncher,殺掉他試試:
Kill -9 685
變灰了,看起來標題欄還是在:
於是我們,跑一下自己的應用測試驗證一下,確實點擊之後,標題欄還是被佔用了,所以不是QLauncher的問題,是有一個灰色底色+任務欄,稱之爲控制檯吧。
這個控制檯可能是weton或者哪裏的,不太清楚,諮詢了官方查看了文檔,好像是weston的:
所以直接幹掉看效果:
幹587
kill -9 587
結果如下圖:
確實是黑了,但是因此,我們使用界面的應用也啓動不了:
這裏陷入兩難了,尋求官方支持。
修改/etc/xdg/weston/weston.ini
然後,再重啓開發板測試:
再啓動自己的應用:
可以啓動了
前面已經定位了QLauncher,那麼替換一下全路徑就可以了。
注意:這裏要注意若是應用中使用了相對路徑會直接換成調用腳本的路徑爲起始路徑,這事經常容易犯的錯誤,且一時半夥定位不到,所以建議開發程序的時候,使用到路徑一定要使用QApplication::applicationDir去獲取可執行文件的類路徑作爲起始路徑)
修改後爲:
然後重啓:
rboot
重啓就是我們的應用了,已經實測驗證完了。
不用想就是RS485的上下拉過程了,因爲應用的界面都做了二級緩存,所有的界面操作除開時鐘之外,目前只有探測到變化纔會修改一次界面值,而多次發送同樣的數據,理論上不存在,以這個目標去論證。
官方的usleep,睡眠是100字節才睡眠0.17ms左右,10016(107+2)約等於0.17ms,這樣檢測是不夠的,直接使用QThread::msleep睡眠,之前做的海思的也是這個問題,具體值要根據測試來,這邊測試最終是2ms的時候,不卡頓,當然,可以嘗試1ms。
收發即使,收-即使處理了,發-PC即使收到了。
手癢,測試一下1ms試試,發現1ms更順利,所以改爲1ms了。
(這裏不是105,回發的只有7字節,等於直接就是1ms之後就拉低了)
嵌入式linux系統開發就是軟硬系統結合,問題出現確實比較多,而且涉獵的知識面比較廣,對於基礎也有一定要求的入門門檻。
33021990)