[菜鳥(niǎo)修煉]移植ok210,ok6410的QT界面到FL2440開(kāi)發(fā)板上

原創(chuàng) 2015-09-12 09:00:00 移植QT



剛剛到飛凌嵌入式公司實(shí)習(xí),經(jīng)驗(yàn)不足,現(xiàn)在處于學(xué)習(xí)階段,每天都有機(jī)會(huì)向大神請(qǐng)教,感覺(jué)幸福滿滿的,記錄下學(xué)習(xí)的點(diǎn)滴,希望可以幫到跟我一樣的小菜鳥(niǎo),加油吧!?。?nbsp;

首先移植GPRS。
第一步直接將飛凌OK210的GPRS編譯好的放入到FL2440對(duì)應(yīng)位置之后上電,點(diǎn)擊圖標(biāo)出現(xiàn)N多個(gè)警告。如下:


 
是bin文件下的二進(jìn)制代碼因編譯環(huán)境不同而不一樣。

按照qtopia-free-2.2.0搭建手冊(cè)和ok6410手冊(cè)中的qtopia安裝移植安裝qtopia2.2.0環(huán)境,剛開(kāi)始的嘗試在Ubuntu 12.04上安裝,出現(xiàn)n多個(gè)報(bào)錯(cuò),當(dāng)時(shí)看到這么多錯(cuò)誤都不知道怎么下手,現(xiàn)在知道大部分是因?yàn)?.gcc和g++版本,2.缺少庫(kù)造成的,錯(cuò)誤信息可以從當(dāng)前目錄下的
Qtopia2.2.0Makelog文件里面查看。具體可以參考飛凌OK6410和qtopia-free-2.2.0的使用手冊(cè)進(jìn)行修改。如果手冊(cè)上沒(méi)有,可以百度搜一下。http://blog.csdn.net/jszj/article/details/7589566


我一開(kāi)始的時(shí)候,哇一看那么多錯(cuò)誤,怎么修改啊,就郁悶了半天,哎 不過(guò)還是要繼續(xù)的,總不能一個(gè)錯(cuò)誤一個(gè)錯(cuò)誤的改吧,那樣感覺(jué)太浪費(fèi)時(shí)間了,后來(lái)看著FL2440開(kāi)發(fā)板linux手冊(cè)部分說(shuō)redhat9.0能一鍵安裝,就嘗試下載redhat9.0進(jìn)行安裝,
http://archive.download.redhat.com/pub/redhat/linux/9/en/iso/i386/
安裝方法是按照結(jié)果選擇的是個(gè)人桌面,redhat安裝完成之后,按照飛凌FL2440的手冊(cè),一鍵./qt,發(fā)現(xiàn)安裝報(bào)很多錯(cuò)誤,跟之前Ubuntu12.04環(huán)境安裝的錯(cuò)誤大同小異,這怎么辦呢?百度吧!發(fā)現(xiàn)有的人說(shuō)因?yàn)闆](méi)有完全安裝redhat9.0,就查了一下怎么完全安裝,結(jié)果再一鍵./qt 之后沒(méi)有報(bào)錯(cuò),原來(lái)就這么簡(jiǎn)單的一件事,居然困擾了我好幾天,不值得不值得啊!

環(huán)境安裝好了,下面開(kāi)始qt界面的編輯了。
按照l(shuí)inux部分手冊(cè),hello實(shí)驗(yàn)部分的步驟:
 
在終端中輸入designer,連擊tab2次,發(fā)現(xiàn)redhat本身自帶了designer,為designer3版本的,選擇其中的designer2 或者采用/root/yizhi/qt2/bin/designer打開(kāi)。
打開(kāi)了designer2的界面如下:
 
菜單的字體很小,就想著怎么修改,又繼續(xù)找百度吧,查找有
http://blog.chinaunix.net/uid-28382924-id-3492236.html
不過(guò)是Ubuntu下修改的方式試試看吧,結(jié)果沒(méi)效果?,F(xiàn)在看來(lái)在redhat9.0編譯只能使用designer3界面了。將GPRS的程序拷入之后,修改slot connects等,編譯,出現(xiàn)好多錯(cuò)誤,像:parse error before‘::’之類的錯(cuò)誤,查看是因?yàn)閏語(yǔ)言的版本不一樣造成的。這怎么辦呢,嘗試編寫(xiě)了一個(gè)hello world程序,將編譯好的bin文件放到2440 /usr/bin文件下,在/usr/apps/目錄下增加forlinx目錄,hello.desktop放到/usr/apps/forlinx目錄下,將hello.png放到目錄/usr/pics目錄下,用chmod修改程序權(quán)限,重新啟動(dòng)qtopia程序,在超級(jí)終端輸入#qtopia &命令,如圖多出forlinx目錄,具體如圖所示。


 
Hello world 程序成功了,而上述GPRS程序還是不行,應(yīng)該就是采用designer2版本編譯之后,應(yīng)該不會(huì)報(bào)這么多錯(cuò)誤。
后來(lái)找到前輩們已經(jīng)編譯好的ok6410環(huán)境,將GPRS程序移植進(jìn)入,注意當(dāng)前環(huán)境運(yùn)行的編譯器版本,程序編譯成功。將./build中的編譯器路徑修改為2440的編譯器,編譯,又是N多個(gè)錯(cuò)誤,如下:


將qtopia-free-2.2.0/qtopia/lib中的庫(kù)移植到/usr/local/arm/2.95.3/arm-linux/lib中。這是因?yàn)槿鄙賻?kù)造成的,之前FL2440linux部分安裝環(huán)境的時(shí)候需要將這些庫(kù)移植到交叉編譯器中。
 
至此 將GPRS放到開(kāi)發(fā)板上運(yùn)行,測(cè)試是否能收到數(shù)據(jù)。如果成功,可以將gprs的可以執(zhí)行程序分別放到文件系統(tǒng)usr目錄下的bin、forlinx、pics中,制作文件系統(tǒng)。


GPS的移植

GPRS移植成功之后,小小興奮了一下,開(kāi)始移植GPS,之前OK210中是采用串口進(jìn)行GPS數(shù)據(jù)采集的,串口移植跟GPRS移植差不多,這里就不多說(shuō)了。
210中有一個(gè)qt4.7.1的qt界面(這是OK210手冊(cè)中的圖片,我直接粘過(guò)來(lái)了,只是時(shí)間不同。)AM335的界面跟這個(gè)差不多,不過(guò)下邊的文本框多了一個(gè)小鍵盤可以輸入。


 
之前因?yàn)閁buntu9.10這個(gè)環(huán)境里有一個(gè)GPS文件夾以為是已經(jīng)做好的程序,就只想著移植了,程序編譯成功之后,移植到開(kāi)發(fā)板,發(fā)現(xiàn)出現(xiàn)接收錯(cuò)誤,肯定是程序出錯(cuò)了,開(kāi)始看程序,發(fā)現(xiàn)程序中數(shù)據(jù)接收那部分的程序直接復(fù)制到serial的程序,可程序的界面變化了。好吧!既然程序本身有問(wèn)題,那就把之前串口的程序修改一下,將210開(kāi)發(fā)板或者335開(kāi)發(fā)板中GPS返回的高度,經(jīng)緯度等信息修改一下放到串口程序中就可以了吧。

最后定位到2440的void TMainForm::remoteDataIncoming() 函數(shù)。而210中的程序定位到void gps::read_sermios() 。將read_sermios()函數(shù)復(fù)制到remoteDataIncoming中,編譯一下報(bào)錯(cuò),根據(jù)錯(cuò)誤一步步修改,注意qt4.7.1中使用了一些c++ 的函數(shù),而在qtopia2.2.0中不能是識(shí)別需要將其修改為c語(yǔ)言的。
210中,最后程序的輸出函數(shù)為這個(gè)。 
ui->tedit_output->setText(text + "\n\n\n" + ui->tedit_output->toPlainText() );
而2440中修改為 edit_output->setText(text + "\n\n\n" ); 將toPlainText()函數(shù)去掉了,使其只顯示當(dāng)前的gps采集的數(shù)據(jù),之前的數(shù)據(jù)清除。另外刪除這個(gè)函數(shù),是因?yàn)檫@個(gè)函數(shù)是在qtopia中使用報(bào)錯(cuò)。不過(guò)不影響信息的顯示。

第一次寫(xiě)沒(méi)有經(jīng)驗(yàn),顯得比較凌亂,大家多多包涵



相關(guān)產(chǎn)品 >

  • OKMX6UL-C開(kāi)發(fā)板

    飛凌嵌入式專注imx6系列imx6ul開(kāi)發(fā)板、飛思卡爾imx6ul核心板等ARM嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn),i.mx6UL系列產(chǎn)品現(xiàn)已暢銷全國(guó),作為恩智浦imx6ul,imx6ul開(kāi)發(fā)板,i.mx6提供者,飛凌嵌入式提供基于iMX6 iMX6UL解決方案定制。

    了解詳情
    OKMX6UL-C開(kāi)發(fā)板
  • OKMX6ULL-C開(kāi)發(fā)板

    40*29mm,雙網(wǎng)雙CAN,8路串口| i.MX6ULL開(kāi)發(fā)板是基于NXP i.MX6ULL設(shè)計(jì)開(kāi)發(fā)的的一款Linux開(kāi)發(fā)板 ,主頻800MHz,體積小,其核心板僅40*29mm,采用板對(duì)板連接器,適應(yīng)場(chǎng)景豐富。 了解詳情
    OKMX6ULL-C開(kāi)發(fā)板

推薦閱讀 換一批 換一批