1.1 EVK Platform
i.MX8M Mini EVK 為 NXP 提供給開發者進行 i.MX8M Mini 處理器全方位評估發展之平台。下圖為此平台之實際照片,為一片主板加上一片 BB 板所組成。而主板包含 i.MX 8M Mini Quad applications processor,是一顆包裝 4*A53 + 1*M4 的 SOC,使用 2GB LPDDR4 和 16GB eMMC;BB 板則包含各種影、音、網路等周邊之連接。此平台的優勢在於高效的電源管理,加上整合各種影音周邊硬體,以及擁有 BT/WiFi 等對外聯結的介面,非常適合血壓計、智慧燈飾、IP Camera、影像門鈴、智慧家居……等多種應用。
i.MX8M Mini EVK
此文件採用範例的版本為 L4.14.98-2.0.0_ga,詳細步驟如下描述。
2.1 安裝之前
在開始之前,建置環境的主機建議的 OS 為 ubuntu 16.04 或更新的版本。另外主機需要先安裝一些必要的工具,並至少保留 120GB 的硬碟空間。需要安裝的 tools 如下,
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev curl
安裝 repo,並加入 PATH 中, $ mkdir ~/bin (this step may not be needed if the bin folder already exists) $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ echo "export PATH=~/bin:\$PATH" >> .bashrc |
2.2 Yocto Project 建立
接下來就可以利用 repo 先取得 Yocto Project。詳細步驟如下,
首先設定 git 參數, $ git config --global user.name "Your Name" $ git config --global user.email "Your Email" $ git config --list 接下來以 repo command 取得 Yocto Project, $ mkdir imx-yocto-bsp $ cd imx-yocto-bsp $ repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.0.0_ga.xml
|
在 build 之前,我想先重點介紹一下這些材料的內容。而且只需大致了解這些內容就可以讓我們更容易理解整個 i.MX 在 Yocto 下的結構組成,而且這也跟下一章節會提到的 script 息息相關。
Yocto Project 的前兩層資料夾如下圖,其中 source 下的〝meta-fsl-bsp-release〞是我想要特別提出來談的部分。首先,我們知道,
|
2.2 Build Configuration
這個章節會詳細描述產生 image 前如何利用 Yocto Porject 設定環境的步驟。首先,i.MX 為了簡化 machine 的建立流程,提供了一個 script,名為〝fsl-setup-release.sh〞。利用這個 script,並賦予特定待 build 的 machine 名稱,即可快速建立出待 build 的 machine 資料夾以及其相關環境;同理,我們也可以重複利用此 script 建立多個 machine 資料夾,如下圖有多個 machine,包含 i.MX8M Mini、i.MX8QM、i.MX8QXP 等 machine,這幾個資料夾基本上各自獨立,並不相互影響。
那 machine folder 是如何建立的呢?裡面又包含了哪些東西?我們繼續往下看,
Machine folder 是經由 script 建立,指令格式如下, $ DISTRO= MACHINE= source fsl-setup-release.sh -b 其中 DISTRO 的設定,以 i.MX 系列來說,原廠建議使用其所提供之 DISTRO configuration,因為這些設定原廠都會持續支援並且都是經過驗證跟測試過的。關於目前支援的 DISTRO 設定,茲節錄原廠文件[1]內容如下,
以 i.MX8M Mini 採用 xwayland 為例,建立 machine folder 的指令[2]如下, $ DISTRO=fsl-imx-xwayland MACHINE=imx8mmevk source fsl-setup-release.sh -b build-xwayland-imx8mmevk
同意 EULA 之後,會自動產生並進入 build dir 中,所謂的 machine folder 就產生了。在 build dir 內,還包含一個conf 的資料夾,裡面放有 local.conf 和 bblayers.conf 等 Yocto 設定檔,之後 bitbake 執行會依照這些設定檔進行後續動作。local.conf 包含了 MACHINE、DISTRO 等資訊。而 bblayers.conf 則列出了 i.MX Yocto Project 所有可能用到的 metalayer。另外,在上一章節曾經提到,i.MX 系列較新的部分會優先更新在資料夾〝meta-fsl-bsp-release〞裡面。所以在產生 machine folder 的過程中,script〝fsl-setup-release.sh〞除了建立出 machine folder 之外,同時也會將資料夾〝meta-fsl-bsp-release〞裡面的內容取出與舊版中對應的位置做比對且更新。例如在與資料夾〝meta-freescale〞的內容比對之後,相異或新增的部分就會再增加到〝bblayers.conf〞以及〝local.conf〞。 [1] i.MX Yocto Project User's Guide(Document Number: IMXLXYOCTOUG,Rev. L4.14.98-2.0.0_ga, 04/2019) [2] -b 參數 可自行定義,將會是產生出來的資料夾名稱。 |
2.4 選擇一個 i.MX Yocto Project 的 image
設定好 Machine 之後,接下來要選擇待 build 的 image。Yocto Project 可提供多種 image 讓 user 選擇。如下圖,Poky 提供了〝core-image-minimal〞、〝core-image-base〞以及〝core-image-sato〞。一般我們會使用〝fsl-image-validation-imx〞作為我們 default 的選項,後面我們同樣會選擇〝fsl-image-validation-imx〞作為我們的範例。
圖片來源於 NXP官方文件(i.MX_Yocto_Project_User's_Guide.pdf)
2.5 Build image
在前一章節所建立的環境下,Yocto Project 利用 bitbake command 可以 build 出 image,指令如下, $ bitbake fsl-image-validation-imx 完成之後,產生出來的 image 可以在下面的資料夾找到,其中檔案〝fsl-image-validation-imx-imx8mmevk.sdcard.bz2〞可搭配 dd command 做完整的 SD Card 燒錄。 另外,在 tmp/work 下,有各個 Package 在每個階段所產生出來的檔案,不管是 fetch 時期的 source code,compile 時期的 object file,或是 deploy 之後的 image。如果能夠多理解這些資料夾的內容會對開發上有極大的幫助,不管是要從 source code 裡找答案,或是直接單獨 build 某個 package 來做驗證都可能加速產品開發的時程。 |
2.6 Bitbake 選項
前面我們使用了簡單的 bitbake 指令 build 出完整的 image。但其實,bitbake 還有更多的用處。下面列舉幾個常用的 bitbake 指令,如果使用者可以善用這些指令,在開發上可事半功倍。
$ bitbake -h
$ bitbake -e imx-atf | grep "^S="
$ bitbake -g fsl-image-validation-imx && cat pn-buildlist | grep -ve "native" | sort | uniq
$ bitbake -s
$ bitbake -f -c 例如: 列出這個 package 的 task 列表 $ bitbake linux-imx -f -c listtasks Compile 這個 package $ bitbake linux-imx -f -c compile Deploy 這個 package $ bitbake linux-imx -f -c deploy |
2.7 重啟環境
若是開發環境的終端機視窗關閉之後,我們可以使用以下指令重啟。
$ source setup-environment 例如: $ source setup-environment build-xwayland-imx8mmevk/ |
3. Image 燒錄
前面的章節有提到,產生出來的 image 會放在 /tmp/deploy/images。在預設的情況下,SD Card image 會以 .sdcard.bz2 的格式存在(依據 IMAGE_FSTYPES 的定義,可能會有其他的壓縮格式)。.sdcard 檔案裡面會包含 U-boot,kernel,rootfs 等完整的系統。
產生出來的 image file 為 fsl-image-validation-imx-imx8mmevk.sdcard.bz2
燒錄的方式如下,先解壓縮, $ bunzip2 -dk -f .sdcard.bz2
使用 dd 進行燒錄, 的值需要視當下 host 的配置決定, $ sudo dd if=.sdcard of=/dev/sd bs=1M conv=fsync
另一種方法是使用 UUU tool 燒錄(Universal Update Utility),此時 EVK 板子需要設置為 Download Mode。 > uuu uuu_sd.auto 燒錄完畢後,EVK 板可開到 command line,
Note: 需要注意燒錄 .sdcard,rootfs 的空間將受到限制。
關於 uuu_sd.auto 的設定內容, uuu_version 1.2.39
# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ SDP: boot -f imx-boot-imx8mmevk-sd.bin-flash_evk
# This command will be run when ROM support stream mode # i.MX8QXP, i.MX8QM SDPS: boot -f imx-boot-imx8mmevk-sd.bin-flash_evk
# These commands will be run when use SPL and will be skipped if no spl # SDPU will be deprecated. please use SDPV instead of SDPU # { SDPU: delay 1000 SDPU: write -f imx-boot-imx8mmevk-sd.bin-flash_evk -offset 0x57c00 SDPU: jump # }
# These commands will be run when use SPL and will be skipped if no spl # if (SPL support SDPV) # { SDPV: delay 1000 SDPV: write -f imx-boot-imx8mmevk-sd.bin-flash_evk -skipspl SDPV: jump # }
FB: ucmd setenv fastboot_dev mmc FB: ucmd setenv mmcdev ${sd_dev} FB: ucmd mmc dev ${sd_dev} FB: flash -raw2sparse all fsl-image-validation-imx-imx8mmevk.sdcard FB: flash bootloader imx-boot-imx8mmevk-sd.bin-flash_evk FB: done |
至此,i.MX8M Mini 的開發環境以及 EVK 板端的燒錄都已經完成,板子也可正常開機。接下來,就可以進行下一步開發。而在後續的文章裡頭,我們將會持續介紹有關 i.MX8M Mini 的相關技術。To Be Continued…
4. 參考文獻
- MX_Yocto_Project_User's_Guide.pdf
- MX_Linux_User's_Guide.pdf
(https://www.nxp.com/webapp/Download?colCode=imx-yocto-L4.14.98_2.0.0_ga)
評論
Shaun
2022年4月13日