Yocto構建檔案系統
Yocto構建檔案系統
一、準備工作
準備作業系統
建議使用Ubuntu14的虛擬機器或PC
由於後面的編譯過程將佔用大量資源,虛擬機器建議16g記憶體(至少8g)、4執行緒
### 安裝軟體
~~~java
$ sudo apt-get install build-essential git-core libncurses5-dev \
flex bison texinfo zip unzip zlib1g-dev gettext u-boot-tools \
g++ xz-utils mtd-utils gawk diffstat gcc-multilib python git \
make gcc g++ diffstat bzip2 gawk chrpath wget cpio texinfo zImage tree
~~~
### 安裝Yocto編譯工具
```sh
$ cd ~/Documents/MYD-Y6ULX/03-Tools/Toolchain
$ ./myir-imx-fb-glibc-x86_64-fsl-image-qt5-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh #fsl-image-qt5系統的應用工具鏈
$ ./myir-imx-fb-glibc-x86_64-core-image-base-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh #core-image-base系統的應用工具鏈
$ ./myir-imx-fb-glibc-x86_64-meta-toolchain-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh #meta-toolchain基礎工具鏈
```
此處建議安裝目錄分別為(不能編譯在同一個目錄下 )
```sh
/opt/myir-imx6ulx-fb/4.1.15-2.0.1/fsl-image-qt5
/opt/myir-imx6ulx-fb/4.1.15-2.0.1/core-image-base
/opt/myir-imx6ulx-fb/4.1.15-2.0.1/meta-toolchain-cortexa7hf
```
最後新增到當前環境變數
```sh
source /opt/myir-imx6ulx-fb/4.1.15-2.0.1/fsl-image-qt5/environment-*
source /opt/myir-imx6ulx-fb/4.1.15-2.0.1/core-image-base/environment-*
source /opt/myir-imx6ulx-fb/4.1.15-2.0.1/meta-toolchain/environment-*
```
檢視是否安裝成功,若成功應顯示如下:
```sh
$ arm-poky-linux-gnueabi-gcc --version
arm-poky-linux-gnueabi-gcc (GCC) 5.3.0
```
```
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
```
### 構建U-boot
解壓
```sh
cd $DEV_ROOT/04-Source/
tar -xvf MYiR-iMX-uboot.tar.gz
cd MYiR-iMX-uboot
```
編譯
```sh
make distclean
make myd_y6ull_14x14_emmc_defconfig
make
```
### Linux Kernel
解壓
```sh
cd $DEV_ROOT/04-Source
tar -xvf MYiR-iMX-Linux.tar.gz
cd MYiR-iMX-Linux
```
編譯
```sh
make distclean
make myd_y6ulx_defconfig
make zImage dtbs
```
更新kernel後,由於版本標識改變,若驅勸是以模組方式載入,需要重新編譯驅動模組
```sh
make modules
```
編譯後,可以安裝在指定位置:
```sh
mkdir ../target-kernel
make INSTALL_MOD_PATH=../target-kernel modules_install
```
這樣就可以把target-kernel目錄打包後,解壓在MYD-Y6ULX開發板的/lib目錄下使用。
## 二、Yocto構建Linux系統
解壓
```sh
cd $DEV_ROOT
tar xvf 04-Source/fsl-release-yocto.tar.xz
tar xvf 04-Source/Yocto-downloads.tar.xz -C fsl-release-yocto
```
```sh
tar xvf 04-Source/MYiR-iMX-Linux.tar.gz -C ~/
tar xvf 04-Source/MYiR-iMX-uboot.tar.gz -C ~/
```
初始化
```sh
$ cd fsl-release-yocto #進入構建的目錄
$ DISTRO=myir-imx-fb MACHINE=myd-y6ull14x14 source fsl-setup-release.sh -b build # yocto 使能 若無 /buid 則建立
```
完成後,可以檢視構建材料間的結構
```sh
$ tree conf/ #檢視結構樹
```
*conf/
├── bblayers.conf
├── bblayers.conf.org
├── local.conf
├── local.conf.org
├── local.conf.sample
├── sanity_info
└── templateconf.cfg*
**bitbake core-image-base (時間較長 耐心等待)**
**Tips:**
過程中關於uboot可能會報錯:
若報錯,使用git log檢視commit值 , 看是否和 sources/meta-myir6ulx/recipes-bsp/u-boot/u-boot-mys6ulx_2016.03.bb檔案中SRCREV值的一致,不一致則做 修改
過程中關於kernel可能會報錯:
若報錯,使用git log檢視commit值 , 看是否和 sources/meta-myir-imx6ulx/recipes-kernel/linux/linux-mys6ulx_4.1.15.bb檔案中SRCREV值的一致,不一致則做修改
裡面對Uboot 和kernel 原始碼位置進行定義,如果與實際程式碼存放的位置不一樣,則修改為實際程式碼存放的位置。
重新bitbake core-image-base
## 三 、更新系統
### 更新MfgTools檔案
```sh
$ cd ~\MYD-Y6ULX\03-Tools\ManufactoryTool\MYD-Y6ULX-mfgtools\Profiles\Linux\OS Firmware\files
```
**其中全部內容包括:**(注意y6ul和y6ull是不同的)**其中、寫入內容包括:**
*zImage-myd-y6ul # MYD-Y6UL的核心映象
zImage-myd-y6ull # MYD-Y6ULL的核心映象
zImage-myd-y6ul-14x14-emmc.dtb # MYD-Y6UL支援 NAND 的裝置樹檔案
zImage-myd-y6ull-14x14-emmc.dtb # MYD-Y6ULL支援 NAND 的裝置樹檔案
u-boot-myd-y6ul14x14_emmc-ddr512.imx # MYD-Y6UL支援 emmc 的 uboot
u-boot-myd-y6ull14x14_emmc-ddr512.imx # MYD-Y6UL支援 emmc 的 uboot
myd-y6ul-boot-emmc-ddr512.scr #
myd-y6ull-boot-emmc-ddr512.scr #
core-image-base-myd-y6ul14x14.rootfs.tar.bz2 # MYD-Y6UL檔案系統
`core-image-base-myd-y6ull14x14.rootfs.tar.bz2`* # MYD-Y6ULL檔案系統
其實在更新系統的過程中你只需要替換最後一個檔案,即標紅的檔案"core-image-base-myd-y6ull14x14.rootfs.tar.bz2"即可
### 更新步驟
- 切換啟動撥碼開關(SW1)的第3位為OFF,第4位為ON。
- 使用USB轉接線(Type-A轉Micro-B)連線PC機USB埠與開發板Micro USB OTG埠(J26)。
- 使用DC 12V電源介面卡連線至開發板的電源座(J22)。
- 雙擊MfgTool目錄下的"core-image-base-myd-y6ulxy2-ddr512m-emmc4g.vbs"檔案,此時可以看到MfgTool介面已識別到開發板。
- 點選MfgTool介面上的"Start"按鈕,MfgTool就開始自動更新系統至板載EMMC儲存晶片。
更新成功後底部的總進度條會顯示為綠色。此時,點選"QUIT",接著"EXIT"即可
作者:drooop
連結:https://www.jianshu.com/p/be2c9ccb22e4
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。