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