1. 程式人生 > >Yocto構建檔案系統

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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。