RK3568開發(fā)筆記(十):開發(fā)板buildroot固件移植開發(fā)的應(yīng)用Demo,啟動(dòng)全屏顯示
前言
??上一篇,移植應(yīng)用前的通訊接口工作和全屏工作都已經(jīng)完成了。本篇移植開發(fā)的商業(yè)應(yīng)用。
交叉編譯好應(yīng)用
??(略),參照《RK3568開發(fā)筆記(八):開發(fā)板燒寫buildroot固件(支持hdmi屏),搭建Qt交叉編譯開發(fā)環(huán)境,編譯一個(gè)Demo,目標(biāo)板運(yùn)行Demo測試》
解決全屏標(biāo)題欄占用問題
??交叉編譯好了應(yīng)用,放過去,跑起來沒問題,也可以正常顯示,但是一旦操作就出現(xiàn)被默認(rèn)的qt程序占用。
??這是默認(rèn)的應(yīng)用:
??

??這是正常全屏應(yīng)用:
??

??這是被占用之后的(點(diǎn)擊任何地方,讓應(yīng)用獲取焦點(diǎn)就這樣了):
??

??所以,這里理論上將原來的qt應(yīng)用停掉,用我們的應(yīng)用作為啟動(dòng)應(yīng)用就可以了。
Buildroot固件系統(tǒng)將設(shè)置啟動(dòng)Qt應(yīng)用
步驟一:定位到Qt啟動(dòng)的地方,驗(yàn)證標(biāo)題欄
??一般linux系統(tǒng)大家會(huì)默認(rèn)都在rcS里面加入一個(gè)界面啟動(dòng)腳本,界面啟動(dòng)腳本也在/etc/inid.d的S???里面。
??

??首先我們先看下這個(gè)桌面進(jìn)程是哪一個(gè),先top,看到與i個(gè)QLauncher,殺掉他試試:
??

Kill -9 685
??變灰了,看起來標(biāo)題欄還是在:
??

??于是我們,跑一下自己的應(yīng)用測試驗(yàn)證一下,確實(shí)點(diǎn)擊之后,標(biāo)題欄還是被占用了,所以不是QLauncher的問題,是有一個(gè)灰色底色+任務(wù)欄,稱之為控制臺(tái)吧。
步驟二:定位到控制臺(tái),驗(yàn)證啟動(dòng)應(yīng)用
??這個(gè)控制臺(tái)可能是weton或者哪里的,不太清楚,咨詢了官方查看了文檔,好像是weston的:
??

??所以直接干掉看效果:
??

??干587
kill -9 587
??結(jié)果如下圖:
??

??確實(shí)是黑了,但是因此,我們使用界面的應(yīng)用也啟動(dòng)不了:
??

??這里陷入兩難了,尋求官方支持。
步驟三:尋求官方支持求改weston的配置
??修改/etc/xdg/weston/weston.ini
??

??

??然后,再重啟開發(fā)板測試:
??

??再啟動(dòng)自己的應(yīng)用:
??

??可以啟動(dòng)了
步驟四:修改為自己的程序?yàn)殚_機(jī)啟動(dòng)
??前面已經(jīng)定位了QLauncher,那么替換一下全路徑就可以了。
??注意:這里要注意若是應(yīng)用中使用了相對(duì)路徑會(huì)直接換成調(diào)用腳本的路徑為起始路徑,這事經(jīng)常容易犯的錯(cuò)誤,且一時(shí)半伙定位不到,所以建議開發(fā)程序的時(shí)候,使用到路徑一定要使用QApplication::applicationDir去獲取可執(zhí)行文件的類路徑作為起始路徑)
??

??修改后為:
??

??然后重啟:
rboot
??重啟就是我們的應(yīng)用了,已經(jīng)實(shí)測驗(yàn)證完了。
應(yīng)用卡頓
??不用想就是RS485的上下拉過程了,因?yàn)閼?yīng)用的界面都做了二級(jí)緩存,所有的界面操作除開時(shí)鐘之外,目前只有探測到變化才會(huì)修改一次界面值,而多次發(fā)送同樣的數(shù)據(jù),理論上不存在,以這個(gè)目標(biāo)去論證。
??官方的usleep,睡眠是100字節(jié)才睡眠0.17ms左右,10016(107+2)約等于0.17ms,這樣檢測是不夠的,直接使用QThread::msleep睡眠,之前做的海思的也是這個(gè)問題,具體值要根據(jù)測試來,這邊測試最終是2ms的時(shí)候,不卡頓,當(dāng)然,可以嘗試1ms。
??

??收發(fā)即使,收-即使處理了,發(fā)-PC即使收到了。
??手癢,測試一下1ms試試,發(fā)現(xiàn)1ms更順利,所以改為1ms了。
??(這里不是105,回發(fā)的只有7字節(jié),等于直接就是1ms之后就拉低了)
小結(jié)
??嵌入式linux系統(tǒng)開發(fā)就是軟硬系統(tǒng)結(jié)合,問題出現(xiàn)確實(shí)比較多,而且涉獵的知識(shí)面比較廣,對(duì)于基礎(chǔ)也有一定要求的入門門檻。