您已經(jīng)對(duì)嵌入式開發(fā)非常了解的話,可以按照自己的需求來搭建環(huán)境。如果和本手冊(cè)環(huán)境不一樣而產(chǎn)生報(bào)錯(cuò),您可以從國(guó)內(nèi)一些知名 Linux 論壇和網(wǎng)站搜索相關(guān)的信息來解決。本冊(cè)介紹的環(huán)境經(jīng)過飛凌的測(cè)試,如果對(duì)嵌入式開發(fā)不是非常熟悉的朋友,希望您按照飛凌提供的方法來搭建環(huán)境。
注意:飛凌默認(rèn)提供的開發(fā)環(huán)境中已經(jīng)默認(rèn)安裝交叉編譯工具鏈及 Qtcreator 桌面應(yīng)用程序,可以直接跳轉(zhuǎn)到第二部分,無需重新安裝。
版本說明?操作系統(tǒng):Ubuntu18.0464 位版?交叉工具鏈:aarch64-poky-linux-gcc
飛凌 OKMX8MQ-linux-sdk 包括兩部分,第一部分為編譯環(huán)境包,里面包含了交叉編譯器和 sysroot,第二部分為源碼包,包括 Linux 內(nèi)核、文件系統(tǒng)、測(cè)試程序源碼以及一些工具等。
編譯之前,請(qǐng)執(zhí)行一下命令安裝必要的工具包。
$?sudo apt-get update
$?sudo apt-get install openssh-server vim git fakeroot make
automake autoconf libtool libssl-dev bc
dosfstools mtools parted iproute2 gcc?kmod
安裝編譯環(huán)境
編譯環(huán)境是我們開發(fā)過程中的基礎(chǔ),首先我們來安裝編譯環(huán)境。
創(chuàng)建工作目錄$ mkdir -p /home/forlinx/imx8mq
并將用戶資料:
路徑:OKMX8MQ-C(Linux)用戶資料 工具 交叉編譯工具 fsl-imx-xwayland-glibc-x86_64-meta-toolchain-qt5-aarch64-toolchain-5.4-zeus.sh
拷貝到虛擬機(jī)?/home/forlinx/imx8mq?目錄
$ cd /home/forlinx/imx8mq
$./fsl-imx-xwayland-glibc-x86_64-meta-toolchain-qt5-aarch64-toolchain-5.4-zeus.sh
將安裝路徑設(shè)置保持默認(rèn),敲回車。
輸入“Y”進(jìn)行確認(rèn),等待安裝完成。
安裝完成后執(zhí)行
$. /opt/fsl-imx-xwayland/5.4-zeus/environment-setup-aarch64-poky-linux
設(shè)置環(huán)境變量。
并輸入
$ aarch64-poky-linux-gcc -v
檢查安裝是否成功。出現(xiàn)如下信息代表安裝成功。
注意:每當(dāng)重啟虛擬機(jī)或者打開新的 shell 窗口都需要重新執(zhí)行設(shè)置環(huán)境變量。
安裝源碼包
源碼包中包含了飛凌提供的 OKMX8MQ 平臺(tái)的需要用到的源代碼,包括 Linux 內(nèi)核源碼、測(cè)試程序源碼、文件系統(tǒng)等,您可以在此基礎(chǔ)上進(jìn)行二次開發(fā)。
將用戶資料:
路徑:OKMX8MQ-C(Linux)用戶資料 Linux 源碼 OK8MQ-linux-sdk.tar.bz2
拷貝到虛擬機(jī)?/home/forlinx/imx8mq 目錄
$ cd /home/forlinx/imx8mq
$ tar xvf OK8MQ-linux-sdk.tar.bz2
編譯測(cè)試
進(jìn)入源碼目錄
$ cd /home/forlinx/imx8mq/OK8MQ-linux-sdk
??全編譯測(cè)試
通過設(shè)置環(huán)境變量選擇編譯 2GB 內(nèi)存鏡像或 4GB 內(nèi)存鏡像
2GB 內(nèi)存:
$ . environment-setup-sourcetree
4GB 內(nèi)存:
$ . environment-4gddr-setup-sourcetree
然后,編譯:
$ make
?
編譯完成后,將在 images 生成鏡像文件。
?
??單獨(dú)編譯內(nèi)核
編譯:$ make linux
注意:編譯時(shí),系統(tǒng)會(huì)自動(dòng)拷貝配置文件 arch/arm64/configs/imx_v8_defconfig 覆蓋內(nèi)核根目錄的 .config 文件。
清除:$ make linux_clean
清除編譯 linux 內(nèi)核生成的文件
?
??單獨(dú)編譯命令行測(cè)試程序
編譯:$ make cmd-examples
安裝:$ make cmd-examples_install
執(zhí)行完會(huì)將命令行測(cè)試程序安裝到文件系統(tǒng)?/usr/bin/cmd 目錄
清除:$ make cmd-examples_clean
?
? 單獨(dú)編譯 Qt 測(cè)試程序
編譯:$makeqt-examples
安裝:$ make qt-examples_install
執(zhí)行完會(huì)將 qt?測(cè)試程序安裝到文件系統(tǒng)?/home/forlinx/qt? B 目錄
清除:$ make qt-examples_clean
Qt 開發(fā)環(huán)境搭建及使用
飛凌提供的 SDK 中提供了 Qt5.13.2 的完整開發(fā)環(huán)境(包含 Qt Quick)。
?
??手動(dòng)編譯
設(shè)置編譯環(huán)境變量:
$. /opt/fsl-imx-xwayland/5.4-zeus/environment-setup-aarch64-poky-linux
以飛凌提供的 Qt 官方串口測(cè)試程序?yàn)槔?,演示命令?Qt 程序編譯方法:
$ cd /home/forlinx/imx8mq/appsrc/qt/
$ qmake
$ make
?
?? Qt creator 環(huán)境搭建
注意:飛凌默認(rèn)提供的開發(fā)環(huán)境中已經(jīng)默認(rèn)安裝交叉編譯工具鏈及 Qt creator 桌面應(yīng)用程序,可以直接跳轉(zhuǎn)到下一環(huán)節(jié),無需重新安裝。
路徑:OKMX8MQ-C(Linux)用戶資料 工具 qt-creator-opensource-linux-x86_64-4.7.0.run
將 qt-creator-opensource-linux-x86_64-4.1.0.run 拷貝至當(dāng)前用戶家目錄下的任意目錄下,執(zhí)行:
$ ./qt-creator-opensource-linux-x86_64-4.7.0.run
將會(huì)彈出如下界面,點(diǎn)擊“Next”進(jìn)入下一步:
在如下界面中,點(diǎn)擊“Skip”進(jìn)入下一步(若虛擬機(jī)壓縮):
在如下界面中,點(diǎn)擊“Next”進(jìn)入下一步:
在如下界面中,點(diǎn)擊“Browse…”選擇 Qtcreator 的安裝路徑,選擇完成后,點(diǎn)擊“Next”進(jìn)入下一步:
在如下界面中,選中第一項(xiàng),點(diǎn)擊“Next”進(jìn)入下一步:
保持默認(rèn)設(shè)置,點(diǎn)擊“Next”:
點(diǎn)擊 Install 安裝:
安裝完成后,顯示如下界面,取消選項(xiàng)“Launch Qt Creator”的勾選,點(diǎn)擊“Finish”完成 Qtcreator 的安裝步驟:
執(zhí)行 :
$ cd /home/forlinx/qtcreator-4.7.0/bin/
$ ./qtcreator
啟動(dòng) Qt creator 程序,點(diǎn)擊 Tools->options 選項(xiàng)
進(jìn)入到 Options 界面,點(diǎn)擊左側(cè)“Kits”,然后點(diǎn)擊中部上方的“Compilers”選項(xiàng)卡,點(diǎn)擊右側(cè)“Add->GCC->C++”,如圖所示:
彈出如下窗口,Compiler path 選項(xiàng)點(diǎn) Browser 在 SDK 包中找到 /opt/fsl-imx-xwayland/5.4-zeus/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/ 下找到“aarch64-poky-linux-g++”,選中后點(diǎn)擊 Open,并將 Name 修改為“G++”。
按照同樣的方法添加 GCC 編譯器,點(diǎn)擊右側(cè)“Add->GCC->C”,如圖所示:
在 SDK 包中找到 /opt/fsl-imx-xwayland/5.4-zeus/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc/ 下找到“aarch64-poky-linux-gcc”,選中后點(diǎn)擊 Open,并將 Name 修改為“GCC”。
點(diǎn)擊 Debuggers 選項(xiàng)卡,點(diǎn)擊 Add 彈出如下界面:
彈出如下窗口,在 SDK 包中找到 /opt/fsl-imx-xwayland/5.4-zeus/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux 下找到“aarch64-poky-linux-gdb”,選中后點(diǎn)擊 Open,并將 Name 修改為“debuggers”。
點(diǎn)擊 Qt Versions 選項(xiàng)卡,點(diǎn)擊 Add:
在 /opt/fsl-imx-wayland/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin 的目錄下找到 qmake,選中后點(diǎn)擊 Open,添加后顯示如下,點(diǎn)擊 Apply。
點(diǎn)擊 Kits 選項(xiàng)卡,點(diǎn)擊右側(cè) Add,添加一個(gè)新的 Kits,按照下圖的內(nèi)容進(jìn)行修改點(diǎn)擊 Apply。
?
??Qt creator 開發(fā)示例
執(zhí)行
$ cd /home/forlinx/qtcreator-4.7.0/bin/
$ ./qtcreator
啟動(dòng) Qt creator 程序,進(jìn)入到 qtcreator 界面,點(diǎn)擊“New Project”新建一個(gè)工程:
選擇“Application”->“Qt Widgets Application”,然后點(diǎn)擊右下角的“Choose”:
在如下界面中為新建的工程修改名字為“HelloWorld”,選擇安裝路徑選擇 /home/forlinx,然后點(diǎn)擊“Next”:
在如下界面中,選擇之前已添加過的“8mq”作為當(dāng)前工程的 kit,然后點(diǎn)擊“Next”:
?
在如下界面中,修改類名“Class name”為“helloworld”,將基類“Base class”選擇為 QMainWindow,然后點(diǎn)擊“Next”:
在如下界面中,點(diǎn)擊“Finish”,完成工程的新建:
新建工程創(chuàng)建完成,即可顯示如下窗口:
當(dāng)程序編寫完成后,點(diǎn)擊左下角的錘子圖標(biāo),即可進(jìn)行交叉編譯,將編譯好的可執(zhí)行程序 HelloWorld 拷貝到開發(fā)板,即可進(jìn)行應(yīng)用的測(cè)試。
使用 UUU 工具燒寫鏡像
UUU 是一個(gè)命令行工具,可以用于在 Linux 或者 Windows 下燒寫鏡像到 OKMX8MQ 開發(fā)板,下面分別介紹 Linux 和 Windows 下 UUU 工具的使用。
?
?? Linux 下 UUU 工具的使用
路徑:OKMX8MQ-C(Linux)用戶資料 Linux 工具 uuu
將下載好的用戶資料中的可執(zhí)行文件 uuu 拷貝到?/usr/bin/?目錄下并添加可執(zhí)行權(quán)限。將 OTG 線插入 Linux 主機(jī)的 USB 接口中。將撥碼開關(guān)設(shè)置為 OTG 啟動(dòng),啟動(dòng)開發(fā)板。
切換到 images?目錄
$?cd /home/forlinx/imx8mq/OK8MQ-linux-sdk/images
燒寫完整鏡像(u-boot、內(nèi)核和文件系統(tǒng))到 eMMC:
$?sudo uuu -b emmc_all flash_sd_emmc.bin rootfs.sdcard
uuu 其他指令使用示例:
單獨(dú)燒寫 u-boot 到 eMMC:
$?sudo uuu -b emmc flash_sd_emmc.bin
注意:燒寫 uboot 的命令不能清除環(huán)境變量,要恢復(fù)默認(rèn)環(huán)境變量在 uboot 命令行輸入。
注意:2GB 和 4GB 內(nèi)存燒寫的方法相同,將按照核心板的內(nèi)存大小編譯對(duì)應(yīng)的的鏡像
?
?? Windows 下 UUU 工具的使用
路徑:OKMX8MQ-C(Linux)用戶資料 Linux 工具 uuu.exe
將用戶資料中的 uuu.exe 拷貝到 C:WindowsSystem32 目錄。將 OTG 線插入 Windows 主機(jī)的 USB 接口中。
將對(duì)應(yīng)的鏡像(2GB 內(nèi)存或 4GB 內(nèi)存)rootfs.sdcard 拷貝到 D 盤 uuu 目錄,在 Windows 下運(yùn)行 cmd 程序,進(jìn)入鏡像文件所在的目錄,輸入如下命令即可燒錄完整鏡像:
D:uuu> uuu.exe -b emmc_all flash_sd_emmc.bin rootfs.sdcard
uuu 其他指令使用示例:
單獨(dú)燒寫 u-boot 到 eMMC:
D:uuu> uuu.exe -b emmc flash_sd_emmc.bin
注意 1:
燒寫 uboot 的命令不能清除環(huán)境變量,要恢復(fù)默認(rèn)環(huán)境變量在 uboot 命令行輸入:
$ env default –a
$ savenv
注意 2:第一次在 windows 平臺(tái)燒寫時(shí)由于 windows 沒有安裝相應(yīng)的驅(qū)動(dòng)程序可能會(huì)出現(xiàn)下圖的失敗情況:
一般情況下 windows 可以自動(dòng)搜索驅(qū)動(dòng)并安裝,等待驅(qū)動(dòng)安裝完成重新執(zhí)行燒寫命令即可,如果出現(xiàn)驅(qū)動(dòng)安裝失敗的情況,請(qǐng)按照下列步驟手動(dòng)安裝驅(qū)動(dòng)。
將用戶資料工具目錄的 latest_usb_driver_windows.zip?拷貝到桌面并解壓。打開 windows 設(shè)備管理器。
在“USB download gadget”上點(diǎn)擊鼠標(biāo)右鍵選擇“更新驅(qū)動(dòng)程序軟件”。
選擇“瀏覽計(jì)算機(jī)以查找驅(qū)動(dòng)程序軟件”,找到剛才在桌面解壓的驅(qū)動(dòng)程序文件夾。
點(diǎn)擊“下一步”
選擇“始終安裝此驅(qū)動(dòng)程序軟件”,等待安裝完成。
燒寫 TF 卡的制作與使用
??制作 TF 燒寫卡
OKMX8MQ 平臺(tái)支持 TF 卡燒寫,首先需要制作用于燒寫的 TF 卡,請(qǐng)使用 8G 及以上容量的正品 TF 卡來測(cè)試。
將 TF 卡插入 PC 機(jī)并在虛擬機(jī)中打開,將 TF 卡燒錄工具 sdfuse.tar.bz2 復(fù)制到虛擬機(jī)中:
$?cp. /sdfuse.tar.bz2?/home/forlinx/imx8mq/
將編譯過程中產(chǎn)生的 u-boot 鏡像拷貝到當(dāng)前目錄,并進(jìn)入到目錄中:
$?tar -jxvf sdfuse.tar.bz2
$?cd sdfuse
開始制作燒寫 TF 卡
$?sudo ./mksdcard8mq.sh
選擇 TF 卡設(shè)備,這里以“1”為例。
輸入“y”進(jìn)行確認(rèn)。
制作完成。
?
??拷貝燒寫鏡像到 TF 燒寫卡
將燒寫鏡像 rootfs.sdcard 文件拷貝到 TF 卡的根目錄中。
下邊列舉出燒錄的文件含義:
文件 |
說明 |
config.ini |
燒寫配置文件(默認(rèn)燒寫工具已經(jīng)添加) |
update.itb |
燒寫工具(默認(rèn)燒寫工具已經(jīng)添加) |
env.ini |
將額外的環(huán)境變量寫入 uboot(可選) |
rootfs.sdcard |
鏡像包(必選,需客戶自行拷貝,拷貝時(shí)注意內(nèi)存配置是 2GB 還是 4GB) |
注意:env.ini 編寫方法見附錄 2
? TF 卡燒寫測(cè)試
關(guān)閉開發(fā)板電源,將 TF 卡插入 TF 卡座中,并將啟動(dòng)撥碼設(shè)置到 TF 卡啟動(dòng)狀態(tài)。打開電源開關(guān),開發(fā)板將自動(dòng)啟動(dòng)進(jìn)入燒寫程序,可以在 uboot 選擇顯示:
Press SPACE to abort autoboot in 1 seconds
## forlinx params set menu ...
--------------------------
0:reboot
1:exit to shell
3:MIPI7-dcss
4:HDMI
--------------------------
可以選擇 2 或 4,分別顯示在 7 寸 mipi 或者 hdmi 顯示器上,選擇完成后,以后再進(jìn)行燒寫都會(huì)將燒寫結(jié)果顯示在所選擇的顯示上。
開始燒寫后,觀察寫進(jìn)度請(qǐng)留意 LCD 上的打印信息,界面會(huì)提示燒寫完成。
也可以通過觀察底板上的 LED 燈來確認(rèn)燒寫進(jìn)度,開始燒寫時(shí) LED1-4 循環(huán)閃爍,燒寫完成后 LED1-4 同步閃爍。