01
前言
學(xué)Linux不難,難的是沒有找對教程,沒有人快速的帶你。開發(fā)板買了之后就放在那里吃灰,看視頻也看不下去,看文檔又看不懂,太難了!
本文以通俗易懂的方式講一下在正點(diǎn)原子Linux開發(fā)板上跑一個qt程序的基本步驟,爭取讓初學(xué)者能夠在半天的時間跑通第一個程序。
硬件:正點(diǎn)原子 Linux mini開發(fā)板 軟件:win10,vmware,ubuntu,qtcreator 運(yùn)行效果如下圖所示,就是在正點(diǎn)原子默認(rèn)的UI界面基礎(chǔ)上,運(yùn)行了一個serialport例程。
![c05008d2-51dd-11ed-a3b6-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgZomTnJRGAC-zwAA9aEpmYEvQ673.png)
先說一下初學(xué)Linux嵌入式開發(fā)的感受,學(xué)習(xí)STM32時 ,熟悉了Keil或IAR這個集成開發(fā)環(huán)境,也可以用簡單的寄存器來控制某一個引腳。
手做Linux開發(fā)之后,首先被幾十個G的安裝鏡像嚇住了,感覺Linux編譯起來特別復(fù)雜很難。還有就是密密麻麻的動輒上百個字符的命令,對于習(xí)慣圖形化開發(fā)的我們來說,實在是感到太難了。
還有賣家那動不動就幾十個小時的視頻,視頻還分好幾期:驅(qū)動開發(fā)、應(yīng)用開發(fā)、Qt開發(fā)等。
每個視頻都又長又硬,我本開買個板子是想玩一下,結(jié)果要看這么多視頻,瞬間就不想學(xué)了,結(jié)果從入門到放棄,板子放那里吃灰。
本文的目的就是讓大家拋開視頻,把這個十幾小時的視頻濃縮成一篇文章,讓你快速體驗嵌入式Linux的開發(fā)樂趣!當(dāng)然我建議官方也出一個快速把玩教程,讓開發(fā)者快速體驗樂趣,這樣我想效果會更好!
02
下載資料
首先去正點(diǎn)原子論壇下載資料,注意不要下載視頻,視頻你可以在B站隨時隨地看,沒人會這么無聊把視頻下載下來吧!
資料大多是百度網(wǎng)盤,如果不開會員的話會很慢,建議下載資料時買個臨時的會員下載,資料下載完了進(jìn)行下一步。
二、安裝虛擬機(jī)
安裝虛擬機(jī)基本在正點(diǎn)原子的大多數(shù)PDF教程里面都有,這里就不需要在多說了。如果看文章不清楚,也可以去B站看視頻。
建議初學(xué)者仔細(xì)的看一遍,如果裝錯了,沒事大不了刪了在再裝一次。 在安裝ubuntu這個步驟中,強(qiáng)烈建議直接下載正點(diǎn)原子已經(jīng)打包好qtcreator的鏡像,將這個鏡像安裝完畢后,就不用再一步步配置了。
對于需要快速跑通第一個linux程序的同學(xué)來說,可以避免學(xué)的越細(xì)越糊涂的陷阱。跳過這些繁瑣的步驟,可以讓我們快速站在全局高度理解整個開發(fā)過程。
這是啥意思呢?就是你新安裝的ubuntu不是啥環(huán)境啥軟件都沒有嘛,你需要自己安裝一遍,比較麻煩。
但是你可以用別人的正點(diǎn)原子的他們電腦里面的那個ubuntu系統(tǒng),他把這個系統(tǒng)打包好了給你,你只需要把他的打包好的系統(tǒng)安裝你的虛擬機(jī)就可以了,怎么樣? 是不是很神奇,你還可以在你的電腦安裝別人的電腦系統(tǒng)。這個系統(tǒng)在哪里呢?
下載下來是這樣
然后按照這里的說明就可以安裝正點(diǎn)原子給你打包好的系統(tǒng)了。
文件名:【正點(diǎn)原子】I.MX6U 虛擬機(jī)使用參考手冊V1.3.pdf
03
配置網(wǎng)絡(luò)環(huán)境
你安裝完ubuntu后很可能不能上網(wǎng),這個問題每個人遇到的都不一樣,建議按照正點(diǎn)原子的教程把你的windows、ubuntu、開發(fā)板讓他們網(wǎng)絡(luò)連接都正常。
可以參考:【正點(diǎn)原子】I.MX6U網(wǎng)絡(luò)環(huán)境TFTP&NFS搭建手冊V1.3.1.pdf
如果文檔看不明白也有視頻,對照著視頻一步一步也可以。
所以網(wǎng)絡(luò)這一塊你也不需要擔(dān)心了。
04
安裝qtcreator
同樣安裝qtcreator軟件可以參考:【正點(diǎn)原子】I.MX6U嵌入式Qt開發(fā)指南V1.1.pdf
在ubuntu安裝完qtcreator軟件后,你就可以像windows下編寫程序,然后在ubuntu下面運(yùn)行了。但是我們的目的是讓qt軟件運(yùn)行在我們的arm開發(fā)板下面對吧!
這時我們自然想到在ubuntu下面安裝一個編譯工具把程序編譯成可以在arm開發(fā)板運(yùn)行的代碼吧!這個就叫做“交叉編譯鏈”。
交叉編譯器中“交叉”的意思就是在一個架構(gòu)上編譯另外一個架構(gòu)的代碼,相當(dāng)于兩種架構(gòu)“交叉”起來了,我們的電腦是x86架構(gòu),開發(fā)板是ARM架構(gòu)。
05
安裝qt交叉編譯器
可以參考:【正點(diǎn)原子】I.MX6U 出廠系統(tǒng)Qt交叉編譯環(huán)境搭建V1.6.pdf
第一章的內(nèi)容,安裝交叉編譯器。
你只有安裝了這個,你才能在ubuntu中編譯出可以在ARM開發(fā)板上運(yùn)行的代碼,這一步必須做,而且還要按照她的教程一步一步來。
5.1 編譯器拷貝
把開發(fā)板光盤 A-基礎(chǔ)資料->5、開發(fā)工具->1、交叉編譯器->fsl-imx-x11-glibc-x86_64-meta- toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 拷貝到 Ubuntu 虛擬機(jī)。
拷貝軟件可以用MobaXterm軟件,這個軟件的使用可以參考這篇文章:2022第一篇文,全能終端神器MobaXterm
如下圖本文已經(jīng)把交叉編譯工具拷貝到了Ubuntu虛擬機(jī)。
執(zhí)行下面的指令修改腳本的權(quán)限,修改權(quán)限后可以看到此腳本顏色顯示改變,說明修改成功。
chmodu+xfsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 直接執(zhí)行腳本安裝交叉編譯工具,連續(xù)敲下兩次回車鍵確認(rèn),再輸入用戶密碼即可。本次安裝的目錄為腳本所指定的默認(rèn)安裝的目錄,后面的內(nèi)核編譯環(huán)境的交叉編譯都是按這個安裝目錄去操作。
![c8856920-51dd-11ed-a3b6-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgZomTnJROAZ3TvAAWaWls7jKM555.png)
5.2 配置環(huán)境變量
我們知道,在linux下,如果運(yùn)行一個可執(zhí)行文件,需要在對應(yīng)目錄下右鍵打開終端,然后./指令運(yùn)行它,那么我們在其他文件夾下運(yùn)行一個指定的程序呢? 當(dāng)然可以,就是用到“環(huán)境變量”。沒錯,在Linux下也需要環(huán)境變量!其作用跟windows下一模一樣。就是相當(dāng)于省略了一個非常長的目錄。沒有環(huán)境變量之前,我們需要輸入的指令是:
/aaa/bbb/ccc/ddd/eee/fff/hhh/xxx.sh 有了環(huán)境變量之后,我們輸入的指令是,這就是區(qū)別。環(huán)境變量讓系統(tǒng)知道,無論你在任何位置調(diào)用xxx.sh指令,都是調(diào)用的特定的文件夾下的某個程序。
xxx.sh 環(huán)境變量的設(shè)置方法是source /opt......我們在工程目錄下右鍵打開終端,然后運(yùn)行環(huán)境變量。
source/opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
![c8b3093e-51dd-11ed-a3b6-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgZomTnJRSAagGJAABTsR8QSdo175.png)
接下來使用env指令查看環(huán)境變量,出現(xiàn)這些字樣的配置選項之后,就可以了。它表示我們已經(jīng)將剛安裝的“交叉編譯工具鏈”設(shè)置到環(huán)境變量了。
![c8c51fa2-51dd-11ed-a3b6-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgZomTnJRSAYVeyAAFInaNa6y8649.png)
使用arm-poky-linux-gnueabi-gcc -v指令可以查看 gcc 版本,表明環(huán)境變量已經(jīng)生效。
![c8e93d88-51dd-11ed-a3b6-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgZomTnJRSAJ6IrAACPdofMQPY673.png)
OK,至此你的qt交叉編譯器就安裝好了。
5.3 安裝交叉編譯環(huán)境
上面你只是在ubuntu下你裝了交叉編譯器器,想編譯 Qt 應(yīng)用程序在開發(fā)板上運(yùn)行起來,那么還需要搭建交叉編譯環(huán)境,使用 ARM平臺的交叉編譯器編譯的程序才能在I.MX6U 開發(fā)板上運(yùn)行起來。
主要就是在 配置 Qt Creator中配置Kits,Kit 譯作套件,也就是開發(fā)編譯環(huán)境套件,可以搭建不同平臺的套件,以不同的套件編譯出不同平臺的應(yīng)用程序,也驗證了 Qt 跨平臺的特性!如果你安裝了Android的套件,你還可以在你的手機(jī)上運(yùn)行qt程序。
這里我們需要在腳本里寫入設(shè)置使能環(huán)境變量的指令,首先打開此腳本。
sudovi/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh 在qtcreator.sh里的第一行插入如下指令,如下圖所示。
source/opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
![c9088abc-51dd-11ed-a3b6-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgZomTnJRSANCI-AACj3wQUq4M231.png)
保存腳本文件(ESC : wq)。使用如下指令打開Qt Creator?!?”的作用是后臺運(yùn)行
/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh&
![c918ddcc-51dd-11ed-a3b6-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgZomTnJRSAeYnnAABCZtR43qk653.png)
5.4 安裝kits
在你安裝qtcreater軟件后默認(rèn)只有這一個kits,然后按照教程搭建另外兩個kits,其中ATK-I.MX6U是用來大imx6ull ARM平臺運(yùn)行的套件。IMX6U-rsync是用來網(wǎng)絡(luò)調(diào)試下載程序到開發(fā)板的套件,就是你在qtcreater上面編譯好后,點(diǎn)擊運(yùn)行,就會直接在開發(fā)板上面顯示你的程序效果。
在 Qt Creator 中默認(rèn)情況下,會使用 sftp 或 rsync 發(fā)送程序到板卡。由于正點(diǎn)原子 I.MX6U 出廠 Qt 文件系統(tǒng)(文件系統(tǒng) V1.9 及之后的)里有 rsync 指令,因此可以很方便地使用此方式進(jìn)行 Qt 遠(yuǎn)程調(diào)試。首先我們要確認(rèn)下當(dāng)前出廠文件系統(tǒng)版本號,在出廠系統(tǒng)執(zhí)行以下指令。
cat/etc/version
![c95fcf84-51dd-11ed-a3b6-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgZomTnJRSAAkjTAAFNvcUAv_k517.png)
如果文件系統(tǒng)不是 V1.9 的,或者不支持 rsync 指令,請去網(wǎng)盤下載最新的出廠系統(tǒng),使用最新的系統(tǒng)來進(jìn)行。
設(shè)置開發(fā)板靜態(tài) ip 由于LAN8720PHY 網(wǎng)絡(luò)芯片沒有MAC地址,系統(tǒng)啟動時會生成隨機(jī)MAC地址給網(wǎng)絡(luò)使用。每次都生成一個MAC地址,導(dǎo)致每次開機(jī)網(wǎng)絡(luò)獲取的ip不是固定的。(v2.3 版本文件系統(tǒng)已固定一個隨機(jī)MAC地址,不會因每次開機(jī)改變,請更新到最新文件系統(tǒng))所以我們要設(shè)置給它一個靜態(tài)的ip,不因MAC地址的改變而改變,設(shè)置固定ip方法調(diào)試。
開發(fā)板啟動時會自動獲取ip,最簡單的方法是直接設(shè)置一個ip給它。這樣我們就在出廠文件系統(tǒng)里/etc/rc.local 文件里如圖位置添加以下文件。
vi/etc/rc.local 添加以下內(nèi)容,請根據(jù)個人使用的路由器,設(shè)置相應(yīng)網(wǎng)段的ip地址。下圖為設(shè)置 eth0 的靜態(tài)ip地址。請注意這個 ip 與其他設(shè)備的ip沖突!
PATH=/sbin:/bin:/usr/sbin:/usr/bin ifconfigeth0192.168.1.115netmask255.255.255.0 routeadddefaultgw192.168.1.1 echo"nameserver114.114.114.114">/etc/resolv.conf
![c99ce82e-51dd-11ed-a3b6-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgZomTnJRSAWHrhAADXnumZNt0034.png)
這樣之后沒每次開發(fā)板連接網(wǎng)線上電后,開發(fā)板的IP地址就為192.168.1.115。 加下來參考 【正點(diǎn)原子】I.MX6U 出廠系統(tǒng)Qt交叉編譯環(huán)境搭建V1.6.pdf 2.5.1小節(jié),完成rsync方式Qt遠(yuǎn)程調(diào)試kits安裝。
![c9d3b2d2-51dd-11ed-a3b6-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/D7/wKgZomTnJRWAdjniAAHFDdp1gJU025.png)
06
實戰(zhàn)開搞
我們打開正點(diǎn)原子自帶的例程,這里以Qt/03/03_serialport為例。雙擊03_serialport.pro。
打開后選擇IMX6U-rsync套件
打開后軟件會自動編譯,一般是沒有錯誤的,直接點(diǎn)擊左下角的綠色三角號編譯運(yùn)行。
然后你就可以在開發(fā)板上面看到神奇的一幕,你的上位機(jī)跑到開發(fā)板上面了,之后你連接開發(fā)板上面的串口就可以愉快的玩耍了。
注:因為開發(fā)板有正點(diǎn)原子的開機(jī)qt桌面,你可以禁止它不讓他顯示,參考如下:
最終效果:
審核編輯:劉清
-
嵌入式開發(fā)
+關(guān)注
關(guān)注
18文章
1035瀏覽量
47733 -
Linux開發(fā)板
+關(guān)注
關(guān)注
0文章
27瀏覽量
11479 -
qt程序
+關(guān)注
關(guān)注
0文章
3瀏覽量
1787
原文標(biāo)題:我在Linux開發(fā)板上跑的第一個Qt程序
文章出處:【微信號:All_best_xiaolong,微信公眾號:大魚機(jī)器人】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
嵌入式Linux-Qt環(huán)境搭建 Qt程序運(yùn)行測試
![嵌入式<b class='flag-5'>Linux-Qt</b>環(huán)境搭建 <b class='flag-5'>Qt</b><b class='flag-5'>程序</b>運(yùn)行測試](https://file.elecfans.com//web2/M00/46/DC/pYYBAGKWMmGAD0VPAABUC_R6UeU913.png)
如何在嵌入式Linux開發(fā)板上配置Qt運(yùn)行環(huán)境
Linux系統(tǒng)中搭建Qt Creator開發(fā)環(huán)境
在Arm linux開發(fā)環(huán)境下運(yùn)行主機(jī)中編譯好的QT程序
一文詳解RK3308開發(fā)板Qt開發(fā)的流程
【米爾-全志T113-S3開發(fā)板- 極致雙核A7國產(chǎn)處理器-試用體驗】從零開始在開發(fā)板上跑通QT程序
Linux Qt 及Arm開發(fā)板漢字顯示
嵌入式Linux應(yīng)用程序開發(fā)-(1)第一個嵌入式QT應(yīng)用程序
![嵌入式<b class='flag-5'>Linux</b>應(yīng)用<b class='flag-5'>程序</b><b class='flag-5'>開發(fā)</b>-(1)第<b class='flag-5'>一個</b>嵌入式<b class='flag-5'>QT</b>應(yīng)用<b class='flag-5'>程序</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用Qt Creator遠(yuǎn)程調(diào)試部署應(yīng)用到嵌入式linux開發(fā)板
![使用<b class='flag-5'>Qt</b> Creator遠(yuǎn)程調(diào)試部署應(yīng)用到嵌入式<b class='flag-5'>linux</b><b class='flag-5'>開發(fā)板</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何配置和操作Linux驅(qū)動程序開發(fā)板
![如何配置和操作<b class='flag-5'>Linux</b>驅(qū)動<b class='flag-5'>程序</b><b class='flag-5'>開發(fā)板</b>](https://file.elecfans.com/web2/M00/30/92/poYBAGILQDaAXc6TAABk15_CfkM818.png)
評論